39 lines
1.1 KiB
Nim
39 lines
1.1 KiB
Nim
import strutils, threadpool
|
|
import nimcrypto
|
|
|
|
const
|
|
|
|
# List of hexadecimal representation of target hashes.
|
|
HexHashes = ["1115dd800feaacefdf481f1f9070374a2a81e27880f187396db67958b207cbad",
|
|
"3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b",
|
|
"74e1bb62f8dabb8125a58852b63bdf6eaef667cb56ac7f7cdba6d7305c50a22f"]
|
|
|
|
# List of target hashes.
|
|
Hashes = [MDigest[256].fromHex(HexHashes[0]),
|
|
MDigest[256].fromHex(HexHashes[1]),
|
|
MDigest[256].fromHex(HexHashes[2])]
|
|
|
|
Letters = 'a'..'z'
|
|
|
|
|
|
proc findHashes(a: char) =
|
|
## Build the arrays of five characters starting with the value
|
|
## of "a" and check if their hash matches one of the targets.
|
|
## Print the string and the hash value if a match is found.
|
|
for b in Letters:
|
|
for c in Letters:
|
|
for d in Letters:
|
|
for e in Letters:
|
|
let s = [a, b, c, d, e]
|
|
let h = sha256.digest(s)
|
|
for i, target in Hashes:
|
|
if h == target: # Match.
|
|
echo s.join(), " → ", HexHashes[i]
|
|
|
|
|
|
# Launch a thread for each starting character.
|
|
for a in Letters:
|
|
spawn findHashes(a)
|
|
|
|
sync()
|