打破哈希
Breakng the hash
我必须破解 4 个哈希码并找到它们的编号。但是我的代码不工作
这些是哈希码(在 csv 文件中):
javad :f478525457dcd5ec6223e52bd3df32d1edb600275e18d6435cdeb3ef2294e8de
milad : 297219e7de424bb52c040e7a2cbbd9024f7af18e283894fe59ca6abc0313c3c4
tahmine : 6621ead3c9ec19dfbd65ca799cc387320c1f22ac0c6b3beaae9de7ef190668c4
niloofar : 26d72e99775e03d2501416c6f402c265e628b7d02eee17a7671563c32e0cd9a3
我的代码:
import hashlib
import itertools as it
import csv
from typing import Dict
number=[0,1,2,3,4,5,6,7,8,9]
code = hashlib.sha256()
passwords = list(it.permutations(number, 4))
with open('passwords.csv', newline='') as theFile:
reader = csv.reader(theFile)
passdic = dict()
# hpass is hash password
for hpass in passwords :
encoded_hpass = ''.join(map(str, hpass)).encode('ascii')
code = hashlib.sha256()
code.update(encoded_hpass)
passdic[encoded_hpass] = code.digest()
for row in theFile :
for key, value in row.items():
passdic[key].append(value)
我的结果是:
'C:\Users\Parsa\AppData\Local\Programs\Python\Python38-32\python.exe' 'c:\Users\Parsa\.vscode\extensions\ms-python.python-2021.12.1559732655\pythonFiles\lib\python\debugpy\launcher' '3262' '--' 'c:\Users\Parsa\Desktop\project\hash breaker.py'
Traceback (most recent call last):
File "c:\Users\Parsa\Desktop\project\hash breaker.py", line 24, in <module>
for row in theFile :
ValueError: I/O operation on closed file.
您正在尝试从一个关闭的文件中读取,这是不可能的。
我不知道你的代码应该做什么,但这里是不合逻辑的部分:
这将打开文件并将其解析为 CSV
with open('passwords.csv', newline='') as theFile:
reader = csv.reader(theFile)
那你以后运行:
for row in theFile :
for key, value in row.items():
但是现在,您在 with
块之外并且文件已关闭。
我猜你应该用 reader
代替 theFile
。如果您真的打算遍历文件的原始行,则需要在 with open
语句中再次包装循环。
我必须破解 4 个哈希码并找到它们的编号。但是我的代码不工作
这些是哈希码(在 csv 文件中):
javad :f478525457dcd5ec6223e52bd3df32d1edb600275e18d6435cdeb3ef2294e8de
milad : 297219e7de424bb52c040e7a2cbbd9024f7af18e283894fe59ca6abc0313c3c4
tahmine : 6621ead3c9ec19dfbd65ca799cc387320c1f22ac0c6b3beaae9de7ef190668c4
niloofar : 26d72e99775e03d2501416c6f402c265e628b7d02eee17a7671563c32e0cd9a3
我的代码:
import hashlib
import itertools as it
import csv
from typing import Dict
number=[0,1,2,3,4,5,6,7,8,9]
code = hashlib.sha256()
passwords = list(it.permutations(number, 4))
with open('passwords.csv', newline='') as theFile:
reader = csv.reader(theFile)
passdic = dict()
# hpass is hash password
for hpass in passwords :
encoded_hpass = ''.join(map(str, hpass)).encode('ascii')
code = hashlib.sha256()
code.update(encoded_hpass)
passdic[encoded_hpass] = code.digest()
for row in theFile :
for key, value in row.items():
passdic[key].append(value)
我的结果是:
'C:\Users\Parsa\AppData\Local\Programs\Python\Python38-32\python.exe' 'c:\Users\Parsa\.vscode\extensions\ms-python.python-2021.12.1559732655\pythonFiles\lib\python\debugpy\launcher' '3262' '--' 'c:\Users\Parsa\Desktop\project\hash breaker.py'
Traceback (most recent call last):
File "c:\Users\Parsa\Desktop\project\hash breaker.py", line 24, in <module>
for row in theFile :
ValueError: I/O operation on closed file.
您正在尝试从一个关闭的文件中读取,这是不可能的。
我不知道你的代码应该做什么,但这里是不合逻辑的部分:
这将打开文件并将其解析为 CSV
with open('passwords.csv', newline='') as theFile:
reader = csv.reader(theFile)
那你以后运行:
for row in theFile :
for key, value in row.items():
但是现在,您在 with
块之外并且文件已关闭。
我猜你应该用 reader
代替 theFile
。如果您真的打算遍历文件的原始行,则需要在 with open
语句中再次包装循环。