Nli*_*tis 9 binary ascii md5 python-3.x
我正在尝试为练习构建一个md5破解器.在此之前,我的代码是:
def offline_wordlist_attack(list_path):
with fileinput.input(files=(list_path)) as wordlist:
for word in wordlist:
md5_hash_object = hashlib.md5() # constructing an md5 hash object
md5_hash_object.update(binascii.a2b_uu(word))
word_digest = md5_hash_object.digest() # performing the md5 digestion of the word
print(word_digest) # Debug
Run Code Online (Sandbox Code Playgroud)
我的问题是md5_hash_object.update(binascii.a2b_uu(word))
.该hashlib的Python 3文档指出传递的字符串update()
应该是二进制表示.文档m.update(b"Nobody inspects")
用作示例.在我的代码中,我不能简单地附加b
在变量前面word
.所以我尝试使用binascii库,但该库也在文档中有一条说明:
注意
编码和解码功能不接受Unicode字符串.只能处理bytestring和bytearray对象.
有人可以帮我解决这个问题吗?它变得越来越好.
你需要传入一个bytes
对象,而不是一个str
.从str
(Python 3中的unicode字符串)开始的典型方法bytes
是.encode()
在字符串上使用该方法并指定您希望使用的编码.
my_bytes = my_string.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)
只需调用fileinput.input(...,mode='rb')
以二进制模式打开文件.这些文件生成二进制字符串而不是Unicode字符串作为文本模式下打开的文件.
它允许您跳过从磁盘读取的字节的不必要(隐式)解码,然后.encode()
在传递给它们之前立即将它们编码回字节md5()
.
归档时间: |
|
查看次数: |
15709 次 |
最近记录: |