パスワード付き RAR が WinRAR では無効なパスワードであるのに、7Zip では誤って受け入れられるという異常な動作

パスワード付き RAR が WinRAR では無効なパスワードであるのに、7Zip では誤って受け入れられるという異常な動作

コンピューターで古い .rar ファイルを見つけたのですが、パスワードを正確に思い出せませんでした。大体のことはわかっていたので、C# で 7ziplib を使用して、一連の組み合わせを総当たりで調べるプログラムを作成しました。

数千回試した後、一致するものが見つかりました。見つけたパスワードを使用して 7zip でファイルを開くと、ファイルは開きますが、ファイルは表示されません。Winrar で開こうとすると、アーカイブが破損しているか、パスワードが無効であるというメッセージが表示されます。

7ziplib は、圧縮されていないファイルのサイズを -1 として報告します。

同じフォルダー内の、パスワードは似ているが同じではない別の zip ファイルに対して同じブルート フォース プログラムを実行したところ、同じ動作が見られました。

同じフォルダー内に、パスワードで保護されていない他の rar ファイルがあり、それらは正常に開きます。

これについてアルゴリズム的な説明はありますか? パスワード チェックの 1 つの段階は通過したが、別の段階は通過しなかったパスワードを見つけたのでしょうか? それとも、アーカイブが破損しているのでしょうか?

参考になれば幸いですが、形式は Rar4 として報告されています。Google によると、これは AES-128 を使用しますが、Wikipedia によると、バージョン 2.9 から 5 にジャンプするため、存在しないとのことです。

答え1

私の知る限り、RAR は、ファイルとアーカイブ ヘッダーの両方のチェックサム値すべてに 32 ビットの CRC 値を使用します。したがって、パスワードをブルート フォースすると、デコードされたヘッダー データ (およびそれに続くファイル データ) がゴミであっても、ヘッダー チェックサムが一致する確率は 2^32 分の 1 (約 40 億分の 1) になります。これは、パスワード、つまり復号化キーが実際には正しくないためです。RAR をブルート フォースした私の経験から、これが裏付けられているようです。

これについてアルゴリズム的な説明はありますか? パスワード チェックの 1 つの段階は通過したが、別の段階は通過しなかったパスワードを見つけたということでしょうか?

だいたいそういうことが起きました。

関連情報