パスワードハッシュはファイルから抽出されません。John the Ripper(JtR)は実際にはこれを行いません。JtRのコードをダウンロードして、それがどのように行われるかを理解することができます。zip2johnおよびrar2johnを使用して.zipおよび.rarファイルのいわゆる「非ハッシュ」情報を取得する方法に関する小さな記事を次に示します。http://www.cybercrimetech.com/2014/07/how-to-cracking- zip-and-rar-protected.html
誤称を修正するために、JtRは実際にはファイルから「ハッシュを取得」しません。たとえば、rar2johnコードに記載されているように、ファイルから特定の情報を抽出します。
出力ラインフォーマット:
*
*「rar-hp...」オプションで暗号化されたファイルのタイプ=0の場合
* archive_name:$ RAR3 $ \ * type \ * hex(salt)\ * hex(partial-file-contents):type ::
:: archive_name
*
*「rar-p...」オプションで暗号化されたファイルのタイプ=1の場合
* archive_name:$ RAR3 $ \ * type \ * hex(salt)\ * hex(crc)\ * PACK_SIZE \ * UNP_SIZE \ * 0 \ *
archive_name \ * offset-for-ciphertext \ * method:type :: file_name
*
* また
*
* archive_name:$ RAR3 $ \ * type \ * hex(salt)\ * hex(crc)\ * PACK_SIZE \ * UNP_SIZE \ * 1 \ *
hex(完全に暗号化されたファイル)\ * method:type :: file_name
したがって、上記のように、「パスワードハッシュ」は抽出されません。また、ファイルが「完全に」暗号化されているとは完全に信じられません(同様の質問に答える他の人が示唆しているように)。代わりに、ソルトなどの重要な暗号化されていないファイルアイテムが取得され、「非ハッシュ」が生成されます。これらのアイテムは、復号化をテストするためにさまざまなパスワード推測を使用してJtRによって使用されます。zipまたはrarパスワードハッシュ生成関数を使用して、推測からハッシュを作成し、それを使用して暗号化キー値を生成します。生成された暗号化キーの値は、暗号化されたファイルの小さく、抽出され、明確に定義された部分に対してテストするために使用されます。
したがって、JtRは、古いpassword-hash-checker-rainbow-table-lookup-thingyに送信できる「パスワードハッシュを抽出」していませんが、次善の策、つまり重要なクラッキング情報を抽出しています。解読する手順は基本的に次のとおりです。1)パスワードの推測からハッシュが生成され、2)復号化が成功または失敗する(多くの失敗)ことを確認するためにいくつかの追加手順が追加され、3)繰り返します。rarクラッキングを非常に困難にしているのは、rarファイルごとに異なるソルトであり、さらに重要なことに、復号化テストを実行する前に必要なハッシュの反復回数が大きく変動することです。新しいzipプロセスも同様ですが、反復は可変ではなく(最後に確認しました)、多少簡単になります。
これは、尋ねられた「それがどのように行われるか」の要点であり、答えは、ファイルがクラックされる直前まで、zipファイルの実際のパスワードハッシュを取得しないことです。
質問のCTF演習の例は、誤解を招く可能性があります。与えられた「ハッシュ」は、古いクラッカーによる学生のクラッキングプロセスを簡素化するために演習用に準備された単純なパスワードハッシュである可能性があります。または、特定のzip2john「非ハッシュ」である可能性があります。推測するJtR-短い、一般的な、またはその両方。質問者は、どちらの方法でも検証するための「ハッシュ」または「ハッシュファイル」を提供しませんでした。