私はハッシュと暗号化についてさらに学びたいと思っており、自分でテストを行っていますが、この問題に行き詰まっているようです。
使用されているハッシュ関数はSHA1です。
パスワードを特定しようとしていて、パスワードの最後のX文字が次のとおりであることを知っている場合:endofpassword#
。
そして、私はハッシュの始まりが次であることを知っています:e921a7cde9e64d612b
、ただしハッシュの残りの文字ではない場合でも、パスワードを判別することは可能ですか?これにはどのツールを使用しますか?
Hashcatはこの種の攻撃には適していないと思いますが、私は間違っているかもしれません。
私があなたの質問を正しく読んでいることを考えると、SHA1ハッシュの最初のセクションと、ハッシュ後のプレーンテキストの文字がわかります。
この攻撃を成功させるには、パスワードをPassword1!
+ randombytes#
として推測し、SHA1を使用して完全なコンボをハッシュし、推測されたパスワードのハッシュの先頭が等しいことを確認するスクリプトを記述する必要があります。 e921a7cde9e64d612b
を潜在的なパスワードのリストに追加します。
Hashcatの使用について言及しましたが、上記の攻撃方法の性質上、攻撃を阻止するために選択した言語で簡単なスクリプトを書く方が簡単です。
つまり、攻撃は可能ですが、完全なハッシュがないため、攻撃はより困難になります。
パスワードの一部を知っていれば、考えられるパスワードのリストを作成するのに良い出発点になりますが、最大長と文字セットによっては、膨大なリストになる可能性があります。それは最大50文字で、14があり、未知の範囲で36文字に相当するエントロピーが残っているとします。
ハッシュの一部を知ることでそれらの多くを無効にすることができますが、ハッシュ全体がなければ、ハッシュの一部との一致を探すために未知の範囲全体を検索する必要があります。 GPUのヘルプ(oclHashCatなどのツール)を使用しても、知っているハッシュの一部ではスピードアップされないため、何十年にもわたる作業について話していると、かなりの時間がかかります。ハッシュを実行してから、フラグメントと比較する必要があります。一致するものが見つかったらすぐに停止することはできません。これが唯一の一致であることを知る方法がないため、スペース全体を使い果たす必要があるためです。
一致が1つだけでスペースを使い果たした場合は、パスワードが見つかります。複数の結果がある場合は、パスワードが見つかりません。 「パスワードを決定することはまだ可能ですか」という答えは、確認するまでは1つの可能なパスワードがあるかどうかしかわからないため、確かに「たぶん」だと思います。