web-dev-qa-db-ja.com

特定のプログラムが(部分的な)ZIPアーカイブを作成したのかを調べる

そのメタデータに基づいて、特定のプログラムが特定のプログラムが作成された特定のバージョンを決定することは可能ですか?

また、タスクに使用されるコンピュータのハードウェア/ソフトウェア(O.S.SOFT)の設定の影響を受けるZIP/RAR圧縮の結果は?

目標:ファイル共有ネットワークでは、小さなファイル(写真、電子書籍...)は通常圧縮アーカイブとして共有されています。時間が経つにつれて、これらのアーカイブの一部は利用できなくなり、オリジナルのアーカイブをダウンロードしたほとんどの人が個々のファイルを抽出してから削除してから、すべての不足しているファイルを持っている人でも元のアーカイブを共有できなくなりました。その時点でそれをダウンロードすると、使用不可能な部分ファイルで立ち往生しています。いくつかのそのようなアーカイブは多くの情報源を持つことができますが、単一の完全なものを持つことはできません。元のアーカイブからのすべてのファイルを持つ人が新しいアーカイブを作成した場合は、1バイトでも元のアーカイブとは異なる場合は、同じハッシュによって識別されません。アーカイブは効率的に共有されません。

私はすでに再作成することができました非圧縮 zip/rarアーカイブを共有し、不足しているファイルの内容をコピーし、それらのメタデータの編集を利用可能な部品内のファイルの内容と一致させるためにそれらを再び共有しています。アーカイブのハッシュはオリジナルのものと一致します。私はまた、いくつかでも古いRARアーカイブを再作成することができました。しかし、それがそれらを作成することができる多くのユーティリティがあるので、それぞれ独自のアルゴリズムとパラメータを使用しているように、それぞれ多くのユーティリティがあるので、私はそれが圧縮されたZipアーカイブに関して損失しています。また、これらのアーカイブの中には10年以上前に作成され、それらを作成するために使用されたものを見つけるのがさらに難しいことです。上記の2番目の質問への答えが「はい」であれば、私の~2017コンピュータにそれらの10歳以上のアーカイブを再作成することは不可能になるでしょう。答えが「いいえ」である場合、私は実際に対応する実行可能ファイル(好ましくはCLI、または少なくとも「ポータブル」GUIであることがあるか、または他の警告の少なくとも「ポータブル」GUIを実際に追跡することができると、ショットを持つことができます。 CDS上にまだ持っていますが、それらは使用可能なフルブローインストールを必要としているようです、CLIと同等のrar.exeを含むWinrarとは反対に、CLIバージョンは含まれていません。

例:そのような不完全なZIPアーカイブの1つは372MBのサイズがあり、18MBがありません。ファイルのタイムスタンプに基づいて、それは2003年頃に作成されました。別のアーカイブの欠けている部分に含まれる写真セットを特定しました。幸いなことに、タイムスタンプはまったく同じであるようですが、残念ながら、圧縮パラメータは同じではありません。 、圧縮サイズが異なり、バイナリの内容が一致しません。したがって、winrarと7 zip(現在インストールされているバージョン)を使用してzipとして再圧縮し、すべての利用可能なパラメータを使用してテストし、出力が一致したかどうかを確認した(各ファイル(各ファイルにまったく同じ圧縮サイズを持つべきかどうかを確認します)。そして、HEXエディタで調べたときの同じバイナリコンテンツは、その結果を得ることができませんでした。そのため、不完全なアーカイブはおそらく異なる圧縮アルゴリズムを使用して、さまざまなソフトウェアやバージョンで作成されました。さて、一般的なヘッダー、個々のファイルのヘッダー、およびその他の構造を調べることによって正確に知ることができます。繰り返しになりますが、例えば、モノアコアまたはマルチコアCPUを使用する場合、または特定の命令セットをフィーチャしていないCPUが使用されている場合、ハードウェアには結果にベアリングがありますか。上記のzipファイルのヘッダーは次のとおりです。

50 4B 03 04 14 00 02 00 08 00 B2 7A B3 2C 4C
5D 98 15 F1 4F 01 00 65 50 01 00 1F 00 00 00
 _

私はzip形式のヘッダー構造についての情報を検索しようとしましたが、これまでに探しているものに関してはそれほど決定的なことはありました。

RARアーカイブを含むさらに別の警告は、ヘッダーやフッター(Zipアーカイブとは反対に)の内容の完全なインデックスを持っていないようであるということです。アーカイブが少し複雑で、多くのサブフォルダがある場合は、欠けている部分に使用されているものを理解することをさらに困難にします。

編集:以下のコメントに答えたように、目標は特定のアーカイブを生成するためにどのプログラムが使用されていたが、そのアーカイブを一部ダウンロードと個々のファイルから再生成することができるかを確実に知ることはそれほど多くではありません。欠けている部分に対応してください。たとえば、ArchiveがWinZip XYを使用して作成されたが、7 zip xyが1年後にリリースされた場合、同じバージョンのZIPアルゴリズムを実装していましたが、その特定の圧縮結果を生み出したキー設定を制御します。ちょうどトリックも。しかし、これまでのところ、私がテストしたいくつかのプログラム/バージョンはすべて異なる結果を生み出しました。

1
GabrielB

コミュニティがこのために取り残された一つの解決策があります - しかし、それがあなたのケースに実装されたならばそれは運の問題です。

TorrentZipを使用してオリジナルのファイルが作成された場合、ファイルの末尾にチェックサムがあり、TorrentZipを使用してファイルを再作成し、チェックサムを確認してから、ファイルをアクティブな共有に戻して再スキャンします。

私は現時点でこのようなシナリオを持っていました - オリジナルのシーダーが去ってピアが96%になっています。私はすべての行方不明のファイルを必要としていますが、それらを完全に一致させ、ダウンロードをすべての人のために続けることができます。

あなたは六角編集者から始めました(私はfrhedを使っていました http://frhed.sourceforge.net/en/ :あなたが望むものを使ってzipファイルの末尾を確認することができます。 ASCIIテキストがTorrentZipped-XXXXXXXXを持っている場合は、おそらく運が稼いです。

この場合、zipにいる必要があるすべてのファイルを含むフォルダを作成します。ファイル共有で使用しているのと同じ名前のzipファイルを作成するには、標準のWindows Zipフォルダを使用します。この段階では、すべてのファイルと新しいzipファイルが同じフォルダにあります。コマンドラインから、torrentzip zipfilename.zipを実行して、すべてのファイルを再追加し、zipファイルの末尾にチェックサムシグネチャを作成します。

ファイルの末尾を見るには、HEXエディタを使用してください。 8桁の六角チェックサムが同じ場合は、成功しました。

私は私がTorrentzipを使って元のZipファイルが作成されたので、私は彼らを再作成することができ、あなたが予想されると同じようにすべてがうまくいったので私はラッキーでした。

私の最初のテスト中は、100%すべてのOK、それを解凍した、それを再zipし、Torrentzipを使用し、チェックサムを確認したzipファイルを取ることで、正確な手順を理解していました。その後、両方のファイルでチェックサムを実行するためにユーティリティを使用しました(Implbits Hashtab http://implbits.com/products/hashtab/ )、確認されたことが確認されました。その後、他の不完全なZIPファイルと連携しに行きました。

お役に立てれば。乾杯。

1
David Moylan