コマンドラインツールでは、あるファイルの内容と別のファイルの各行をbashスクリプトの引数としてどのように使用できますか?

コマンドラインツールでは、あるファイルの内容と別のファイルの各行をbashスクリプトの引数としてどのように使用できますか?

他の有用な質問を見てみましたが、私の質問に対する答えはありません。私は大学の課題*に役立つスクリプトを書こうとしています。最終的な答えを得るために「試行錯誤」を経なければならないハッシュを含むファイルがあります。このディレクティブは特にjtrジャンボバージョンを必要とするので、可能な形式のリストがたくさんあります。使用可能なすべての形式を、各行に形式1を含む「johnformats」というファイルに渡します。このスクリプトを次のように実行したいと思います。

$ john hash.txt --format=[johnformatsのcat line 1] > johnout

次に、最後の書式値を繰り返します。

$ john hash.txt --format=[johnformatsのcat line 204] > johnout

私のスクリプトは次のとおりです

#!/bin/bash

johnformats=$1
johnout=$2

exec 4> "$johnout"

while read -ru 3 LINE; do
    john "$(cat hash.txt)" --format="$LINE" >&4
done 3< "$johnformats"

スクリプトを実行すると、ハッシュはロードされません。

統計:猫ハッシュ:そのファイルやディレクトリはありません

動作していることを確認するために$ hashを完全に削除して、次のことを試しました。

パスワードファイルが必要ですが、指定されていません。

204回繰り返すと、他の部分は効果があることがわかりますが、

John Ripperの構文にはファイルのハッシュ値が必要です。

各 $LINE に対して「ハッシュされた」コンテンツを使用するようにする方法だけを把握するだけです。

*私の質問は、クラックするのではなく、クラックに使用するツールをスクリプト化する方法です。スクリプトは推奨されますが、必須ではなく、課題には関係ありません。私は心皮トンネリングを防ぐことができるすべての可能なハッシュプレフィックスを覚えていませんでした。

ベストアンサー1

複雑さが追加された理由を理解していません。あなたが本当に欲しいものは:

john hash.txt --format=[cat line 1 from johnformats] > johnout
john hash.txt --format=[cat line 2 from johnformats] >> johnout
john hash.txt --format=[cat line 3 from johnformats] >> johnout

など。

したがって、スクリプトでは次のようになります。

#!/bin/bash

johnformats=$1
johnout=$2

while read line ; do
    john hash.txt --format="$line" >>$johnout
done < $johnformats

追加のファイル記述子3と4の複雑さを追加する必要はありません。引数"$(cat hash.txt)"として追加するのとはまったく異なる作業を行います。hash.txt

もちろん、エラーメッセージには、上記のコードではなくパラメータhashとして使用されたファイルがあるという内容と、ファイルが存在しないという内容が表示されます。これらも確認したいのです。hash.txthash

おすすめ記事