先决条件

先决条件

好的,所以我已经下载了Have I Been Pwned 中的所有 SHA-1 哈希值,从我的密码管理器中导出所有内容,并将其处理到一个文件中,每行一个密码。如何有效地匹配这些文件?

答案1

先决条件

  • 7z,应该在“p7zip”包
  • sha1sumshred,它应该位于“coreutils”包中。
  • grep来自“grep”包。

过程

  1. 创建一个包含唯一大写密码哈希值的文件,以及一个包含密码及其相应哈希值的文件:

    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
    
  2. 将您的哈希值与下载文件中的所有条目进行匹配:

    7z e -so pwned-passwords-sha1-ordered-by-hash-v*.7z | \
    cut -c 1-40 | \
    grep -Fxf hashes.txt | \
    tee matches.txt
    

    请耐心等待 - 这在配备 SSD 的台式机上花费了近 20 分钟!

  3. 显示与比赛相关的密码:

    grep -Ff matches.txt passwords-with-hashes.txt | cut -f2
    
  4. 安全地删除您创建的文件:

    shred --remove hashes.txt matches.txt passwords.txt passwords-with-hashes.txt
    

相关内容