使用 John the Ripper 恢复 RAR 密码

使用 John the Ripper 恢复 RAR 密码

在 Mac OS X 中测试 John the Ripper 作为 RAR 密码恢复解决方案,但 xargs 给出了错误:

john --incremental:all --stdout | xargs -I jtr unrar e -pjtr -inul test2.rar | grep 100%
xargs: unterminated quote

但是当我向 xargs 添加“-0”来处理引号时,我收到另一个 xargs 错误:

john --incremental:all --stdout | xargs -0 -I jtr unrar e -pjtr -inul test2.rar | grep 100%
xargs: insufficient space for argument

我认为这是因为 '-0' 阻止 xargs 使用换行符作为分隔符,从而产生了空格问题?

关于如何让 xargs 正常运行,您有什么想法吗?有没有办法解决引号问题,同时保持换行符不变?

答案1

我可能会做这样的事情:

john --incremental:all -stdout | while read pass;do
  rar x -p"${pass}" test2.rar
  if [ "$?" -eq 0 ];then
    exit 0
  fi
done

随意替换 rar 选项等。这样,命令只会运行到成功解压文件为止,您不必 grep 查找某些内容。$?是一个 shell 变量,包含上次运行命令的返回代码,如果运行成功,则等于 0。因此,如果您将其与 0 匹配,则说明上一个命令“有效”。

编辑1:在密码周围添加了“,如-p"${pass}"

答案2

我不知道还有什么方法(除了-0模式)可以让 xargs 忽略其输入中的引号,但可以很容易地使用 tr 将换行符转换为空值,然后使用-0模式:

john --incremental:all --stdout | tr“\n”“\0”| xargs -0 -I jtr unrar e -pjtr -inul test2.rar | grep 100%

相关内容