【问题标题】:How do I test password protected files in a bash script?如何在 bash 脚本中测试受密码保护的文件?
【发布时间】:2022-09-28 06:36:45
【问题描述】:

我正在编写一个脚本,该脚本将搜索 linux 目录(从根目录开始)并根据文件扩展名识别特定文件。我想将它们转储到一个新的文本文件(例如 testFile.txt)中,然后针对通用密码列表运行每个文件(基于文件路径),以确保使用强密码。我创建了一堆具有所需扩展名的测试目录和虚拟文件,并且我的搜索脚本运行良好。我能够成功找到所有正确的文件并将它们放入 testFile.txt,但是,在测试受密码保护的文件时,我不确定从哪里开始......任何建议将不胜感激。我已经在下面包含了我迄今为止编写的脚本:

#This should search a named directory for the file extensions and save to output file
find ~/ -name *.p12 -o -name *.jks -o -name *.pfx -o -name *.pem -o -name *.ppk > testFiles.txt

#As a test, iterate over the output file and name them
testFile=$(cat testFiles.txt)

for line in $testFile; do

   echo -e \"Processing...File Path = $line\\n\"

done
  • 像 hashcat 这样的工具可以暴力破解或使用字典来尝试破解大量散列密码或加密文件。它支持大量格式,您可以在此处查看:hashcat.net/wiki/doku.php?id=hashcat
  • 如果在运行 find 命令的目录中有名为 a.p12b.p12 的文件,则会生成错误,因为 -name *.p12 参数将扩展为 -name a.p12 b.12 您需要引用 *并写-name \'*.p12\' 或类似的。
  • @WilliamPursell 谢谢你的建议,我会确保更新它。
  • 并非您列出的所有文件扩展名都使用密码开始。您可能想从另一个方向解决这个问题。搜索每种格式并找到一个首先需要密码的命令(例如打印有关文件的信息)可能更容易。然后,您可以尝试为每个文件运行该命令,并在您将密码作为输入传递给它时查看它是否成功。奇怪的是,如果您输入错误的密码,它会给您一个非零状态代码,您可以在脚本中签入该代码。
  • @toppk 我很尴尬地说我以前从未使用过 hashcat,所以我试图使用一个包含一般错误密码的文本文件来运行它,其中混合了一些应该可以用来查看我的脚本是否会识别成功的密码和然后标记/输出成功的文件和密码。

标签: bash shell


【解决方案1】:

不要那样做。尝试从文件中读取名称列表时会出现太多问题(例如,如果任何名称包含嵌入的换行符,则很难将其与 2 个不同的名称区分开来)。相反,只需创建一个单独测试文件并从 find 调用它的脚本。例如,如果你把你的脚本放在/path/to/validate,你可以这样做:

find "$HOME" \( -name '*.p12 '-o -name '*.jks' -o -name '*.pfx' \
    -o -name '*.pem' -o -name '*.ppk' \) -exec /path/to/validate {} \; 

【讨论】:

    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2014-04-18
    • 2014-05-10
    • 2015-11-15
    • 2011-02-06
    • 2021-03-28
    • 2015-07-13
    • 2010-10-18
    相关资源
    最近更新 更多