![先决条件](https://linux22.com/image/146494/%E5%85%88%E5%86%B3%E6%9D%A1%E4%BB%B6.png)
好的,所以我已经下载了Have I Been Pwned 中的所有 SHA-1 哈希值,从我的密码管理器中导出所有内容,并将其处理到一个文件中,每行一个密码。如何有效地匹配这些文件?
答案1
先决条件
7z
,应该在“p7zip”包。sha1sum
和shred
,它应该位于“coreutils”包中。grep
来自“grep”包。
过程
创建一个包含唯一大写密码哈希值的文件,以及一个包含密码及其相应哈希值的文件:
sort -u passwords.txt | while read -r password do hash="$(printf '%s' "$password" | \ sha1sum | \ cut -d' ' -f1 | \ tr 'a-f' 'A-F')" printf '%s\n' "$hash" >> hashes.txt printf '%s\t%s\n' "$hash" "$password" >> passwords-with-hashes.txt done
将您的哈希值与下载文件中的所有条目进行匹配:
7z e -so pwned-passwords-sha1-ordered-by-hash-v*.7z | \ cut -c 1-40 | \ grep -Fxf hashes.txt | \ tee matches.txt
请耐心等待 - 这在配备 SSD 的台式机上花费了近 20 分钟!
显示与比赛相关的密码:
grep -Ff matches.txt passwords-with-hashes.txt | cut -f2
安全地删除您创建的文件:
shred --remove hashes.txt matches.txt passwords.txt passwords-with-hashes.txt