質問

私は、ZIPファイルには、次のバイトで始まることを読んでます:

50 4B 03 04

参考: http://www.garykessler.net/library/file_sigs.html

質問:ZIPファイルがパスワードで保護されている指示バイトの特定の順序はあります

役に立ちましたか?

解決

これは、ZIPファイルが始まらなければなりませんというのは本当ではありません。

50 4B 03 04

のエントリのzipファイル内には、多くの場合、純粋なzipファイルは、ファイルの最初のものとしてzipエントリで始まる..and 50 4B 03 04...で始まります。しかし、zipファイルは、それらのバイトで始まる必要はありません。それらのバイトで始まるすべてのファイルは、の、おそらくのzipファイルですが、すべてのzipファイルには、それらのバイトで始まっていません。

たとえば、あなたが実際にをそこにしたPE-COFFファイルである自己解凍アーカイブ、定期的なEXEを作成することができます。4D 5A ...あるファイルのための署名です。その後、後にexeファイルで、あなたは50 4B 03 04...で始まる、ジップエントリを格納することができます。ファイルには、.exeファイルと.zipファイルの両方です。

自己解凍アーカイブは50 4B 03 04で始まらないzipファイルのクラスだけではありません。あなたはこの方法をzipファイル内の任意のデータを「隠す」ことができます。 WinZipのと他のツールは、この方法でフォーマットされたzipファイルを読み込む問題はないはずです。

あなたはファイルの先頭にまたはどこかのどちらか、ファイル内50 4B 03 04署名を見つけた場合は、

、あなたはその特定のエントリが暗号化されているかどうかを判断するために、次の数バイトを見ることができます。通常、それは次のようになります。

50 4B 03 04 14 00 01 00 08 00 ... 

最初の4つのバイトには、エントリの署名です。次の2つのバイトは、「抽出するために必要なバージョン」です。この場合、エントリを抽出するために必要とされるPKZIP仕様のバージョン2.0を意味PKWARE仕様によれば、20である、0x0014です。 (エントリで使用される最新のzip「機能は、」仕様のバージョン2.0で記述されています)。より高度な機能は、zipファイルに使用されている場合は、そこに高い数字を見つけることができます。 AES暗号化は、したがって、あなたがそのヘッダに0x0033を見つける必要があり、仕様のバージョン5.1が必要です。 (必ずしもすべてのzipツールはこれを尊重します)。

次の2バイト、この場合は0x0001で、(スペックは、それがビットフィールドであっても「ビットフラグ」を呼び出す)汎用ビットフラグを表します。これは、エントリは暗号化されていることを示すビット0セットを持っています。

そのビットフラグで

他のビットは意味を持ち、また、設定されてもよいです。 AESまたはいくつかの他の強力な暗号化のいずれかを - 例えば、ビット6は、強力な暗号化が使用されたことを示します。ビット11は、エントリがファイル名とコメントをUTF-8エンコーディングを使用していることを言います。

この情報はすべて PKWareのAPPNOTE.TXTスペックのに利用可能です。

他のヒント

これは、パスワードで保護されたzipアーカイブ内のファイルを根底います。あなたがアーカイブ内のパスワード保護され、パスワード保護されていない一連のファイル(例えば、READMEファイルや、その後の内容)を持つことができます。

あなたが参照URLでZIPファイルを記述したリンクをたどった場合は、

は、ことを、このいずれかを見つけるだろうには、ZIPアーカイブ内のファイルが暗号化されているか否かを示すビットを説明します。アーカイブ内の各ファイルが独立して暗号化できるか否かと思われます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top