明けましておめでとうございます。
今年も宜しくお願いします。
昨年末に、 Win32::GuiTest で Windows の GUI アプリをハックしようを見て、一太郎ファイルで、パスワード忘れたのがあったので、やってみようと思い立ちました。パスワードが数字の語呂合わせだったのは覚えてたので、1000あたりからブルートフォースアタック!
一太郎本体は手元にないので、一太郎ビューアをダウンロードします。
http://www.ichitaro.com/try/taro/viewer.html
コードは以下のものを使いました。
#!/usr/bin/perl use strict; use warnings; use utf8; use Win32::GuiTest qw(:ALL); UnicodeSemantics(1); # 一太郎ビューアにファイルを与えて起動 system("start TAROVIEW.EXE password.jaw"); # 起動するまでしばらく待つ sleep(2); my $password = 1000; my $max = 10000000; while($password < $max) { my ($win, @wins) = FindWindowLike(0, '^パスワード$'); last unless $win; # パスワード入力を前面に SetForegroundWindow($win); SendKeys("$password\n"); my ($w, @ws) = FindWindowLike(0, '^一太郎ビューア$'); # 一太郎ビューアを前面に SetForegroundWindow($w); SendKeys("\n"); print $password++, "\n"; } # 終了待ち <>;
このスクリプトと同じ場所に、パスワードのかかった一太郎のファイルを置いて、
system のところを該当のファイル名に変えて動かせばOK。
これで、無事パスワードを取得できました。めでたし、めでたし。
本当は、帰省中にぶん回しておいて、帰ってきたら取れているという予定だったんですが、
途中でフォーカスが変なところに行って、失敗してました。
最初は、パスワード入力後に、一太郎ビューアを前面にする処理を入れていなかったので、そのせいかと思います。
パスワードは150000付近の数字で、かかった時間は丸一日くらいでしょうか。
2回に分けちゃったので、実際にかかった時間はよくわかりません。
Turion64 x2 Windows XP でやりましたが、描画が遅くなければ、古いPCでも大して変わらんかも。
0から始まったり、英語がまじったりすると、何かやらないといけないんでしょうけど、今回はそういうのは無いとわかってたので、簡単でした。