スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

盛大にぶっ壊れたパスワード付きzipを解析してみる

はじめに

まあ何回か書いている通り、みらい研究室実行委員会のWebページ担当なわけですが、何故にや知らん、理大祭会議なるものに出席することになりまして、それが理大祭、つまい学園祭に出展するために出なければならんとのことだからやむを得ない。

で、出て、資料もらって、資料がWebでも上がってるというから、「見てみるか」となったわけですね。これが元凶です

解凍できない・・・だと!?

私はWindows使いなんですが、標準の解凍機能はお粗末なんで、CubeICEを愛用しています。ところが

ERROR: エラーを特定できません

いやいや、どういうことだってばよ?よろしい、ならば7-zip先生に・・・

7-zip error

なんやって・・・。ねんのためWindows標準機能で・・・

ms error1 ms error 2

パスワード違うだぁ!?こういう時はコマンドラインで・・・

わぁ・・・。なんかすごいエラーだけどとりあえず解凍できたぞ

ちょっとzipを解析するか

まずzipとはどういうデータ構造かというと、いろんな情報とデータに分かれていて、これがファイルごとに存在します。ではその情報のうち、ヘッダーを見ていきましょう。

オフセットサイズ内容
04ローカルファイルヘッダのシグネチャ = 0x504B0304(PK\003\004)
42展開に必要なバージョン (最小バージョン)
62汎用目的のビットフラグ
82圧縮メソッド
102ファイルの最終変更時間
122ファイルの最終変更日付
144CRC-32
184圧縮サイズ
224非圧縮サイズ
262ファイル名の長さ (n)
282拡張フィールドの長さ (m)
30nファイル名
30+nm拡張フィールド

で、実際のバイナリエディタで開いたものがこちら。

binary zip
  1. CRC32が格納される32bit分が空にもかかわらず、汎用目的のflagの3bit目が1になっていない。
    →ほとんどの解凍ソフトで解凍に失敗
  2. ファイル名がUTF-8でエンコードされているが、汎用目的のflagの11bit目が1になっていない。
    →Macや最近のLinuxではこの場合UTF-8として扱うので文字化けが発生しないが、WindwosではShift-JISとして扱うので文字化けを引き起こす。
  3. 暗号化zipにはアーカイブデータの前に12byteの暗号ヘッダーが付加される。これの12バイト目に圧縮元のデータのCRC32値の上位8ビットが設定されるはずだが、上述の通りヘッダーのCRC32がぶっ壊れているため、一致しない。
    →ほとんどの解凍ソフトで解凍に失敗

で、こんなぶっ壊れたファイルを吐くソフトは一体何者だ

ちょっとわからない。__MACOSXとあるから、Macで作られたんだろうけど。

教訓

  • unzipすげぇ、Windowsユーザーも入れましょう
  • 文字コードの闇は深い
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

検索フォーム
デジタル・コルクマ3
コルクマワールド
東京 での時間:
更新履歴


総記事数:
Calendar 1.1
<
>
- - - - - - -
- - - - 1 23
4 5 6 7 8 910
11 12 13 14 15 1617
18 19 20 21 22 2324
25 26 27 28 29 30 -

全記事

Designed by 石津 花

最新記事
カテゴリ
最新コメント
最新トラックバック
月別アーカイブ
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
プロフィール

yumetodo

Author:yumetodo
FC2ブログへようこそ!

Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。