fcrack-un-zip...

Mac OS上でzipファイルをクラックするツールは無いかなぁと探していたら見つけたfcrackzip。MacPortsにもあるから使えるだろと思いport installして試してみたら、どのzipを渡しても"is corrupted"とか抜かすので、ソースコードを拾ってきて斜め読み。ひでぇ...www

アセンブラは俺も分からんので偉そうなこと言えないけど、Cで書かれてる部分がひでぇ...www

で。
どーして、壊れてるって言うのかと思ったら、crack.cは

 89           if (flags & 1)
 90             {
 91               if (compr_size >= 12)
 92                 {
 snipped
 96                   if (flags & 8)
 97                     {
 98                       /* extended header format? */
 snipped
125               else
126                 {
127                   fprintf (stderr, "'%s' is corrupted, skipping zipfile\n", zip_path);
となってて、デバッグコード入れたところ、Compressed sizeが常にゼロになっちょる。

zipのファイルフォーマットでは、Local file headerのGeneral purpose bit flagの4ビット目が立ってる時は、CRC-32、Compressed size、Uncompressed sizeは0にセットしないとならんらしいが、89行ではflagsの1ビット目しかチェックしとらんから、127行でドボン。なのに、96行で4ビット目をチェックしていて、しかも98行のコメント...。