在下载的 Haveibeenpwned 版本中找不到哈希,即使它在那里(python)

问题描述 投票:0回答:2

我正在尝试构建 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的“按流行度排序”版本,而是“按哈希排序”版本

python-3.x
2个回答
3
投票

您的代码每隔一行就会跳过一次,因为

for lines in input_file:
会转到下一行以及
line = input_file.readline()

试试这个方法:

for line in input_file: 
    line = line.split(":")
    ...

0
投票

您可以使用https://github.com/ptechofficial/hibp-python-downloader

这是一个基本脚本,它将下载单个文件中的所有哈希密码。必须在我的公司使用它,因为代码很简单,所以我很容易获得使用这个脚本的批准。

© www.soinside.com 2019 - 2024. All rights reserved.