использование Джона Потрошителя для восстановления пароля RAR

тестирование John the Ripper в Mac OS X как решение для восстановления пароля RAR, но xargs дает мне ошибку:

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

но когда я добавляю ' -0 ' в xargs, чтобы справиться с цитатой, я получаю еще одну ошибку 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 счастливым? Есть ли способ решить проблему котировок при сохранении новой строки разделитель цел?

2 ответа:

Я бы, наверное, сделать что-то вроде этого:

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

замените параметры rar и т. д. как хочешь. Таким образом, команда выполняется только до тех пор, пока она успешно распаковывает файл, и вам не нужно что-то делать. $? - это переменная оболочки, содержащая код возврата последней команды run, и при успешном выполнении она равна 0. Поэтому, если вы сопоставите его с 0, вы знаете, что предыдущая команда "работала".

изменить 1: добавлено " вокруг пароля, как -p"${pass}".

Я не знаю способа (кроме -0 mode), чтобы xargs игнорировал кавычки на своем входе, но легко использовать tr для преобразования новых строк в нули, а затем использовать -0 режим:

Джон --добавочный:все --stdout в | ТР на "\N" "\0" | команды xargs -0 -Я jtr распаковка электронной pjtr -inul условие_2.rar / grep 100%