python-3.x - 在已下载的 Haveibeenpwned 版本中找不到哈希,即使它在其中(python)
问题描述
我正在尝试构建 Haveibeenpwned 密码数据库的本地版本。所以我从网站上下载了文件(NTLM 哈希,按哈希排序),解压缩并编写了一个简单的 python 程序作为概念证明:
input_file = open("Path/to/my/file","r")#HIBP Textfile (20GB)
test = "32ED87BDB5FDC5E9CBA88547376818D4" #123456
test2 = "8846F7EAEE8FB117AD06BDD830B7586C" #password
for lines in input_file:
line = input_file.readline()
line = line.split(":")
hash_value = line[0]
if(hash_value == test):
print("Pwned!")
print(line)
elif(hash_value == test2):
print("Pwned")
print(line)
else:
pass
这适用于“密码”哈希,但不适用于“123456”。脚本的输出:
Pwned
['8846F7EAEE8FB117AD06BDD830B7586C', '3861493\n']
>>>
我用 EmEditor 打开文件并搜索 123456 哈希,它就在里面。但我不确定为什么脚本找不到它。我想这与大约 20GB 的文件大小有关,但我不确定如何减轻这种情况。
我知道这绝不是有效的,它的唯一目的是检查一切是否正常。
编辑:纠正了一个小错误:我没有下载 HIBP 的“按流行度排序”版本,而是“按哈希排序”版本
解决方案
您的代码每隔一行就跳过一次,因为for lines in input_file:
转到下一行以及line = input_file.readline()
试试这种方式:
for line in input_file:
line = line.split(":")
...
推荐阅读
- java - 如何更改 MidiChannel 音量?
- ansible - 如何在ansible中将完整的主机名存储为变量?
- javascript - KnockOutJS:descendantsComplete 和组件(自定义元素)的行为非常奇怪
- html - 为什么谷歌字体不能在 Heroku 中工作,但在本地工作?
- rust - Rust 如何确定 for-in 循环中的类型?Rust 会自动引用/取消引用变量赋值吗?
- javascript - 如何从 gatsby-config.js 中获取动态数据?
- apache-flink - Flink-dataStream上的多事件依赖sql查询
- graphql - Gatsby/GraphQL 如何按数字而不是按字母顺序对整数字段进行排序?
- mysql - 如何从 1 列中分离值?
- python - 使用 for 循环自动抓取下一页