Hashlib,故障调试

Posted

技术标签:

【中文标题】Hashlib,故障调试【英文标题】:Hashlib, Trouble Debugging 【发布时间】:2020-03-28 17:01:29 【问题描述】:

出于道德目的,我正在尝试在安全沙盒帐户中使用 hashcracker。我相信我的代码是正确的,我找不到它没有执行的原因。那么代码显然不正确,除非它会运行 LOL 但是,我找不到错误

from urllib.request import urlopen, hashlib

sha1hash = input("Please input the hash to crack.\n>")      #puts user input on new line in prompt

LIST_OF_COMMON_PASSWORDS = str(urlopen('https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-10000.txt').read(), 'utf-8')

for guess in LIST_OF_COMMON_PASSWORDS.split('\n'): # starts the process of looping through all passwords from the above URL until the correct one is matched.(\n) is used to specifiy/split each individual password from list
    hashedguess = hashlib.sha1(bytes(guess, 'utf-8')).hexigest()  #turns the 'guess' into bytes from string and then turns it into a SHA1 hash// hexigest() prints the current value of the SHA-1 hash
    if hashedguess == sha1hash:
        print('The password is', str(guess))
        quit()
    elif hashedguess != sha1hash:
        print('Password guess ', str(guess),' does not match, trying next....')
print('Password not in database, better luck next time.')

这是我的错误追溯

Traceback(最近一次调用最后一次): 文件“hashcracker.py”,第 5 行,在 LIST_OF_COMMON_PASSWORDS = str(urlopen('https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-10000.txt').read(), 'utf-8') 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py”,第 222 行,在 urlopen 返回 opener.open(url, 数据, 超时) 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py”,第 525 行,打开 响应 = self._open(请求,数据) _open 中的文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py”,第 542 行 结果 = self._call_chain(self.handle_open, 协议, 协议 + _call_chain 中的文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py”,第 502 行 结果 = 函数(*args) https_open 中的文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py”,第 1360 行 返回 self.do_open(http.client.HTTPSConnection, req, 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py”,第 1320 行,在 do_open 引发 URLError(err) urllib.error.URLError: MBP-00704:SHA1cracker andrewroe$ python3 hashcracker.py 请输入哈希进行破解。

cbfdac6008f9cab4083784cbd1874f76618d2a97 回溯(最近一次通话最后): 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py”,第 1317 行,在 do_open h.request(req.get_method(), req.selector, req.data, headers, 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py”,第 1230 行,在请求中 self._send_request(方法、url、正文、标头、encode_chunked) _send_request 中的文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py”,第 1276 行 self.endheaders(正文,encode_chunked=encode_chunked) 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py”,第 1225 行,在 endheaders self._send_output(message_body, encode_chunked=encode_chunked) _send_output 中的文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py”,第 1004 行 自我发送(味精) 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py”,第 944 行,在发送中 self.connect() 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py”,第 1399 行,在连接中 self.sock = self._context.wrap_socket(self.sock, wrap_socket 中的文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py”,第 500 行 返回 self.sslsocket_class._create( _create 中的文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py”,第 1040 行 self.do_handshake() 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py”,第 1309 行,在 do_handshake 中 self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1108)

在处理上述异常的过程中,又发生了一个异常:

【问题讨论】:

这看起来像是信任 GitHub 的 SSL 证书的问题。你是如何安装 Python 的? 我使用的是 MAC,python 是预装的。但是,我确实使用 brew 安装了 Python3。 (它只是 Mac,而不是“MAC”。)您是使用预安装的 Python 还是使用您自己安装的 Python 运行此代码?它看起来像后者。无论你做什么,你的 Python 都不信任证书。 但是说真的,谢谢。您将我的注意力转向了问题所在的 SSL 证书! 【参考方案1】:

我找到了答案。我去了 Python3.8 文件夹并安装了一个名为 Install Certificates Command 的东西。这修复了我的 SSL 错误。谢谢。

【讨论】:

以上是关于Hashlib,故障调试的主要内容,如果未能解决你的问题,请参考以下文章

hashlib模块(摘要算法)

python 模块之hashlib

hashlib加密模块

python之hashlib模块

Python hashlib模块

python,hashlib模块