web-dev-qa-db-ja.com

パスワード、ソルト、および結果のハッシュを知っているハッシュ作成方法をどのように見つけますか?

パスワード、salt(実際にはsaltと想定)、出力ハッシュ(sha1形式)がわかっている場合。ハッシュの作成方法を見つけるにはどうすればよいですか?

私はのような基本的なものを試しました

    sha1(salt+password)
    sha1(password+ salt)
    sha1(salt +sha1(password))
    sha1(sha1(password)+ salt)

...とはるかに多くのが、すべて失敗しました。

ハッシュ作成方法を探すための正しいツールは何ですか?ソフトウェアを逆コンパイルする唯一の最良のオプションはありますか?

3
Noonan

ソフトウェアの逆コンパイルはおそらく最も簡単です。

パスワードは通常、パスワードを推測しようとするブルートフォース攻撃を遅くするために、ハッシュ関数の多くの反復(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、...

1
Mike Ounsworth