使用 Rainbow 方法破解:获取 KeyError
Hack with Rainbow method: getting the KeyError
我正在尝试使用 Rainbow 方法执行一个 hack 项目。我有一个 csv 文件,其中包含使用 sha 256 的人名及其散列密码。我必须检索原始密码,这些密码是四位数字 (1000-9999)。这是 csv 文件:
danial,99b057c8e3461b97f8d6c461338cf664bc84706b9cc2812daaebf210ea1b9974
elham,85432a9890aa5071733459b423ab2aff9f085f56ddfdb26c8fae0c2a04dce84c
这是我的代码:
import hashlib
import csv
def hash_password_hack(passwords, new_passwords):
with open (r'C:\Users\sony\Desktop\Python with Jadi\final project\passwords.csv','r', encoding='utf-8') as f:
reader=csv.reader(f)
dict1={}
for row in reader:
dict1[row[1]]=row[0]
dict2={}
for i in range (1000,10000):
hashed_password=hashlib.sha256(str(i).encode('utf-8'))
dict2[hashed_password]=i
for key in dict1:
with open (r'C:\Users\sony\Desktop\Python with Jadi\final project\new_passwords.csv', 'w', newline='') as f1:
writer=csv.writer(f1)
password=dict2[key]
name=dict1[key]
writer.writerow([name,password])
当我运行以上代码时,出现如下错误:
KeyError: '99b057c8e3461b97f8d6c461338cf664bc84706b9cc2812daaebf210ea1b9974'
据我所知,当我尝试调用的词典没有该特定键时,会出现此错误。由于我已经对 10000 到 9999 之间的每个数字进行了哈希处理,因此 dict2
必须包含上述密钥。为什么会出现此错误,我该如何解决?
hashlib.sha256(str(i).encode('utf-8'))
returns 一个 HASH
对象,而不是十六进制散列,所以你是按对象键入的。相反,您想使用 hexdigest()
方法来获取十六进制哈希,例如hashed_password = hashlib.sha256(str(i).encode('utf-8')).hexdigest()
.
我正在尝试使用 Rainbow 方法执行一个 hack 项目。我有一个 csv 文件,其中包含使用 sha 256 的人名及其散列密码。我必须检索原始密码,这些密码是四位数字 (1000-9999)。这是 csv 文件:
danial,99b057c8e3461b97f8d6c461338cf664bc84706b9cc2812daaebf210ea1b9974
elham,85432a9890aa5071733459b423ab2aff9f085f56ddfdb26c8fae0c2a04dce84c
这是我的代码:
import hashlib
import csv
def hash_password_hack(passwords, new_passwords):
with open (r'C:\Users\sony\Desktop\Python with Jadi\final project\passwords.csv','r', encoding='utf-8') as f:
reader=csv.reader(f)
dict1={}
for row in reader:
dict1[row[1]]=row[0]
dict2={}
for i in range (1000,10000):
hashed_password=hashlib.sha256(str(i).encode('utf-8'))
dict2[hashed_password]=i
for key in dict1:
with open (r'C:\Users\sony\Desktop\Python with Jadi\final project\new_passwords.csv', 'w', newline='') as f1:
writer=csv.writer(f1)
password=dict2[key]
name=dict1[key]
writer.writerow([name,password])
当我运行以上代码时,出现如下错误:
KeyError: '99b057c8e3461b97f8d6c461338cf664bc84706b9cc2812daaebf210ea1b9974'
据我所知,当我尝试调用的词典没有该特定键时,会出现此错误。由于我已经对 10000 到 9999 之间的每个数字进行了哈希处理,因此 dict2
必须包含上述密钥。为什么会出现此错误,我该如何解决?
hashlib.sha256(str(i).encode('utf-8'))
returns 一个 HASH
对象,而不是十六进制散列,所以你是按对象键入的。相反,您想使用 hexdigest()
方法来获取十六进制哈希,例如hashed_password = hashlib.sha256(str(i).encode('utf-8')).hexdigest()
.