36 lines
693 B
Python
36 lines
693 B
Python
|
# Lesson 8 Task e1900ba2: SHA-256 crack (?)
|
||
|
# Author: Stanislav Mykhailenko
|
||
|
# License: Unlicense
|
||
|
|
||
|
# Return codes:
|
||
|
# 0 - OK
|
||
|
# 1 - Invalid hash
|
||
|
# 2 - Not cracked
|
||
|
|
||
|
import hashlib, itertools, sys
|
||
|
|
||
|
def hashError():
|
||
|
print("Invalid SHA-256 hash.")
|
||
|
sys.exit(1)
|
||
|
|
||
|
crackedHash = input("Enter SHA-256 hash: ")
|
||
|
|
||
|
if len(crackedHash) != 64:
|
||
|
hashError()
|
||
|
|
||
|
try:
|
||
|
int(crackedHash, 16)
|
||
|
except ValueError:
|
||
|
hashError()
|
||
|
|
||
|
for product in itertools.product('abcdefghijklmnopqrstuvwxyz', repeat=4):
|
||
|
string = ''
|
||
|
for i in range(len(product)):
|
||
|
string += product[i]
|
||
|
if crackedHash == hashlib.sha256(string.encode('utf-8')).hexdigest():
|
||
|
print("Cracked: " + string)
|
||
|
sys.exit(0)
|
||
|
|
||
|
print("Not cracked.")
|
||
|
sys.exit(2)
|