0
私はpythonでmd5ハッシュをブルートフォースするためにこの関数を昨日プロトタイプしました。 この場合、Match: aa
と4124bc0a9335c27f086f24ba207a4912
が印刷されます。これは文字列 "aa"のハッシュです。MD5 Bruteforce、PythonからJavascriptへの翻訳
import hashlib
def crack(chars, st, hsh):
if chars == 0:
if hashlib.md5(st).hexdigest() == hsh:
print "Match: " + st
print hashlib.md5(st).hexdigest()
else:
for i in range(32,127):
new = st + str(unichr(i))
crack(chars - 1, new, hsh)
crack(2, "", "4124bc0a9335c27f086f24ba207a4912")
今、私はJavaScriptで実装しようとしています。私はすでにmd5ライブラリを使用しており、うまくいきます。ここでは、私が書いたコードは、再帰が期待どおりに動作していません。私はコードとコンソールの出力を説明するために表示します。
<!DOCTYPE html>
<html lang="en">
<body>
<script src="js/md5.min.js"></script>
<script>
function crack(chars, st, hsh){
console.log(chars);
console.log(st);
if (chars == 0){
if (md5(st) == hsh){
console.log(st);
}
}
else {
for (i = 32; i <= 126; i++){
newst = st + String.fromCharCode(i);
crack(chars - 1, newst, hsh);
}
}
}
crack(2, "", "4124bc0a9335c27f086f24ba207a4912");
</script>
</body>
</html>
今コンソール出力:この問題を解決するために必要とされる魔術のはどのような
2
(space ascii 32)
1
(space ascii 32)
0
(space ascii 32)
0
!
0
"
0
#
0
$
0
%
0
&
0
etc.
0
~ (ascii 126)
?