AVTOKYO 2012

チームRUIのメンバーと2人でAVTOKYO 2012にいってきました。
事前に調べずに行ったので知らなかったのですが、
会場がロングセッションのフロアと、ショートセッションのフロアに分かれており、
見たいものがそれぞれ違っていたので一緒には行ったもののほぼ別行動になりました。

grep・・・。

唯一最後は見たいものが揃い、目grepについてのセッションを一緒に見に行きました。
その中でsutegoma2のmurachueさんとucqさんの目grep頂上対決という企画があり、
問題をその場でどちらが早く解けるかという趣旨の対決でした。
またその問題を解いている最中、両者の画面をプロジェクタで投影しているのでどういう解き方をするのか見れます。
対決の結果はタイムアップで同点だったかな?
問題のファイルをもらってくることができたのと、解説を聞くことができたので復習を兼ねてといてみました。

問題

問題ファイル
L1.pdf

level1

問題のL1.pdfですが、バイナリエディタで開いて見ていくとファイル末尾のほう、0xBB05に"PK"という文字列がみえます。
よく見るとその周りにもいくつか"PK"が見えます。
余談ですが、解説の際「なんでそんな末尾の"PK"に気づくの?」と誰かが質問して、
どちらのかただったか忘れましたが、「先頭に怪しいところが無かったら末尾をみます。」と答えていました。
そして「末尾に無かったら中のほうをみていきます。」とも言ってました。
問題に戻って、ファイルの先頭から"PK"を検索すると0x7790に最初の"PK"があり、その前に"%%EOF"もあります。
0x7790からファイル末尾まで別ファイルにコピーしてzipにすると解凍できます。

level2

level1を解いてできたzipを開くとL2.pngとL2.binというバイナリが出てきます。
「ファイルを見てると0xFFが多いから、" xor 0xFF"してみようと思った」そうで、
0xFFとxorをとるスクリプトをすごいスピードで書いていました。
案の定出力されたファイルはzipで解凍できました。
僕ではどんだけ時間かけても出てこなさそうな着眼点です・・・。

level3

level2のzipを解凍するとL3.pngがでてきます。
バイナリエディタで開くとわかる、ある仕掛けがしてありました(笑)。興味ある方はぜひ見てください。
で、ここから先の解説がうる覚えで正しい解き方ではないかもしれませんが、
level1と同様に先頭から"PK"を探していきます。
0x1740に"PK"が見えるので、ここから末尾までを別ファイルにコピーして.zipにします。
そのzipを普通に解凍しようとすると失敗するのですが、中身のx.exeだけを取り出すことはできました。

level4

x.exeの"xor 0xFF"をとります。
できたファイルをバイナリエディタで開き、また"PK"で検索すると0x1618で見つかります。
終わりはどこまでかというと0x24E6に"password.pngPK"という格納されたファイル名らしき文字列があります。
もう少し先に行って0x2508あたりからは0xFFが連続するゾーンなのでこの手前までがzipぽい?です。
そこを抜き出して別ファイルにコピーしてzip解凍するとpassword.pngがでてこれがゴールです。

答え

password.png

所感

着眼点やらスクリプトを書くスピードやらに驚かされ、勉強になりました。
目grepperになりたい。