对 SHA1 哈希的字典攻击
Dictionary attack on SHA1 hash
以下是我的代码。我一直在尝试修复代码以对哈希 (SHA-1) 执行字典攻击,我得到以下结果。
P.S。我是编码初学者。
import hashlib
import random
#plug in the hash that needs to be cracked
hash_to_crack = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"
#direct the location of the dictionary file
dict_file = "C:/Users/kiran/AppData/Local/Programs/Python/Python37/dictionary.txt"
def main():
with open(dict_file) as fileobj:
for line in fileobj:
line = line.strip()
if hashlib.sha1(line.encode()).hexdigest() == hash_to_crack:
print ("The password is %s") % (line);
return ""
print ("Failed to crack the hash!")
return ""
if __name__ == "__main__":
main()
结果:
RESTART: C:/Users/kiran/AppData/Local/Programs/Python/Python37/Codes/datest1.py
The password is %s
Traceback (most recent call last):
File "C:/Users/kiran/AppData/Local/Programs/Python/Python37/Codes/datest1.py", line 20, in <module>
main()
File "C:/Users/kiran/AppData/Local/Programs/Python/Python37/Codes/datest1.py", line 13, in main
print ("The password is %s") % (line);
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
此行无效 python3 语法:(编辑:这是一个有效的语法!但不是您想要的:))
print ("The password is %s") % (line);
改用这个:
print ("The password is %s" % line)
此外,根据错误信息,行可能是None。
您正在使用 Python 3,其中 print
是一个函数。该行:
print ("The password is %s") % (line)
使用参数 "The password is %s"
调用函数 print
。函数 returns None
。然后 None % (line)
给出您看到的错误消息。
最惯用的方式是这样写:
print("The password is", line)
其他可行的方法:
print("The password is %s" % line)
print(("The password is %s") % (line))
以下是我的代码。我一直在尝试修复代码以对哈希 (SHA-1) 执行字典攻击,我得到以下结果。 P.S。我是编码初学者。
import hashlib
import random
#plug in the hash that needs to be cracked
hash_to_crack = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"
#direct the location of the dictionary file
dict_file = "C:/Users/kiran/AppData/Local/Programs/Python/Python37/dictionary.txt"
def main():
with open(dict_file) as fileobj:
for line in fileobj:
line = line.strip()
if hashlib.sha1(line.encode()).hexdigest() == hash_to_crack:
print ("The password is %s") % (line);
return ""
print ("Failed to crack the hash!")
return ""
if __name__ == "__main__":
main()
结果:
RESTART: C:/Users/kiran/AppData/Local/Programs/Python/Python37/Codes/datest1.py
The password is %s
Traceback (most recent call last):
File "C:/Users/kiran/AppData/Local/Programs/Python/Python37/Codes/datest1.py", line 20, in <module>
main()
File "C:/Users/kiran/AppData/Local/Programs/Python/Python37/Codes/datest1.py", line 13, in main
print ("The password is %s") % (line);
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
此行无效 python3 语法:(编辑:这是一个有效的语法!但不是您想要的:))
print ("The password is %s") % (line);
改用这个:
print ("The password is %s" % line)
此外,根据错误信息,行可能是None。
您正在使用 Python 3,其中 print
是一个函数。该行:
print ("The password is %s") % (line)
使用参数 "The password is %s"
调用函数 print
。函数 returns None
。然后 None % (line)
给出您看到的错误消息。
最惯用的方式是这样写:
print("The password is", line)
其他可行的方法:
print("The password is %s" % line)
print(("The password is %s") % (line))