web-dev-qa-db-ja.com

John theRipperを使用してRARパスワードを回復する

Mac OSXでJohnthe 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を幸せにする方法についてのアイデアはありますか?改行区切り文字をそのままにして、引用符の問題を解決する方法はありますか?

5
chuckkahn

私はおそらく代わりにこのようなことをするでしょう:

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

必要に応じてrarオプションなどを置き換えます。このように、コマンドはファイルが正常に解凍されるまでのみ実行され、何かをgrepする必要はありません。 $?は、最後の実行コマンドの戻りコードを含むシェル変数であり、正常に実行された場合は0になります。したがって、0と一致すると、前のコマンドが「機能した」ことがわかります。

編集1-p"${pass}"のように、パスワードの前後に「」を追加しました。

4
Mattias Ahnberg

Xargsに入力の引用符を無視させる方法(-0モード以外)はわかりませんが、trを使用して改行をnullに変換し、-0モードを使用するのは簡単です。

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

3
Gordon Davisson