パスワード、salt(実際にはsaltと想定)、出力ハッシュ(sha1形式)がわかっている場合。ハッシュの作成方法を見つけるにはどうすればよいですか?
私はのような基本的なものを試しました
sha1(salt+password)
sha1(password+ salt)
sha1(salt +sha1(password))
sha1(sha1(password)+ salt)
...とはるかに多くのが、すべて失敗しました。
ハッシュ作成方法を探すための正しいツールは何ですか?ソフトウェアを逆コンパイルする唯一の最良のオプションはありますか?
ソフトウェアの逆コンパイルはおそらく最も簡単です。
パスワードは通常、パスワードを推測しようとするブルートフォース攻撃を遅くするために、ハッシュ関数の多くの反復(100,000など)でハッシュされます。通常、サーバー側のハッシュコードは次のようになります。
hashval = password
count = 0
while(count++ < NUM_HASH_ITERATIONS):
hashval = sha1(hashval + salt)
return hashval
破壊しようとしているソフトウェアによっては、どこかで定数NUM_HASH_ITERATIONS
を構成ファイルで見つけることができる場合があります。それ以外の場合は、バイナリを逆コンパイルするか、総当たりにする必要があります。反復回数をブルートフォースにする既成のソフトウェアが存在するかどうかはわかりませんが、一般的な値ですが、ハッシュを試すだけなので、それほど難しくなく、CPUに負荷がかかることはありません。 t一致、100万のような制限まで再度ハッシュ化
hashval = "password"
count = 0
while(count++ < 1000000):
hashval = sha1(hashval + salt)
if (hashval == "3a58f2b..."):
// We win!
これは数分で実行されるはずです。ハッシュとソルトの組み合わせ方を変えて、何度も試してみてください。出力がSHA1と同じように見えるものがたくさんあることに注意してください。SHA1であるという事実を知らない限り、MD5、SHA2-256、SHA2-384、SHA2-512、PBKDF2、 BCRYPT、SCRYPT、...