5

Тестирование Джона Потрошителя в 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 ответа2

4

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

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

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

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

3

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

Джон - Инкрементальный: все --stdout | tr "\n" "\0" | xargs -0 -I jtr unrar e -pjtr -inul test2.rar | grep 100%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .