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を幸せにする方法についてのアイデアはありますか?改行区切り文字をそのままにして、引用符の問題を解決する方法はありますか?
私はおそらく代わりにこのようなことをするでしょう:
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}"
のように、パスワードの前後に「」を追加しました。
Xargsに入力の引用符を無視させる方法(-0
モード以外)はわかりませんが、trを使用して改行をnullに変換し、-0
モードを使用するのは簡単です。
john --incremental:all --stdout | tr "\ n" "\ 0" | xargs -0 -I jtr unrar e -pjtr -inul test2.rar | grep 100%