Sep 28, 2006

Firefoxの拡張MozLabの中に含まれるMozReplがヤバすぎる件について

MozLabという拡張を昨日知ったのですが
http://dev.hyperstruct.net/trac/mozlab

この中に含まれているMozReplというのがヤバい。Firefoxにtelnet接続できるようになる。

とりあえずRubyで書いた簡単なサンプル、今見ているページをリロードするだけ。
require 'net/telnet'
telnet = Net::Telnet.new({
    "Host" => "localhost",
    "Port" => 4242
}){|c| print c}
telnet.puts("content.location.reload(true)")
telnet.close

ひたすら自分が見ているURLとページタイトルを記録する系とか簡単に作れそう。
今見ているページのURLとタイトルを取得するサンプル。
require 'net/telnet'
prompt = /^repl> /
telnet = Net::Telnet.new({
    "Host" => "localhost",
    "Port" => 4242,
    "Prompt" => prompt,
})

telnet.waitfor(prompt)
telnet.cmd("content.location.href") do |c|
  print c.gsub(prompt,"")
end
telnet.cmd("content.document.title") do |c|
  print c.gsub(prompt,"")
end
telnet.close

ただし一秒おきとかに実行してたらそれなりにFirefoxの側に負荷がかかるようなので注意。
まだ詳しく調べてはいないんだけど、原理的にはFirefoxの全操作をtelnetから叩くことができそう。

about:configからextensions.mozlab.mozrepl.autoStartをtrueにすればFirefoxの起動時に自動でtelnet接続できる状態になる。extensions.mozlab.mozrepl.portでポートの変更も可能。localhost以外からの接続は受け付けないようなので、起動しただけでクラックされるようなことはないだろう。もちろん自己責任でFirefoxをぶっ壊すようなコードを実行することもできる、と思う。

ポートフォワード仕込んでMacBookのFirefoxを遠隔操作してみたり。必須の拡張がまた増えた。
Posted at 00:48 | WriteBacks (12) | Edit
Edit this entry...

wikieditish message: Ready to edit this entry.
















A quick preview will be rendered here when you click "Preview" button.