Для цикла в BASH, чтобы получить имя пользователя и пароль кортежа - PullRequest
0 голосов
/ 25 февраля 2019

Я пишу простой скрипт на Bash 4.4.23, чтобы выполнить демонстративную словарную атаку в отношении различных веб-серверов, использующих пароли по умолчанию.

Объявлены массивы, содержащие имена пользователей и пароли.выше циклов for, которые выглядят следующим образом:

for i in $usernames
do for j in $passwords
    do printf '%s ' "${usernames[*]}:${passwords[*]}"
done
done

Код должен возвращать что-то вроде:

root:root root:admin admin:admin admin:root

Но вместо этого он возвращает

root admin:root admin

Какие значения объявлены в массивах ( имена пользователей и пароли ).

Как мне добиться того, что я пытаюсь сделать?Затем кортежи должны быть переданы в curl для выполнения атаки по словарю.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

У вас есть массивы и элементы, которые вы зациклили, перепутали.Вы перебираете массив.Вы используете переменную цикла внутри цикла.

for i in "${usernames[@]}"
  do for j in "${passwords[@]}"
    do printf '%s:%s ' "$i" "$j"
  done
done

Симптом, который вы видите, заключается в том, что только $usernames относится к первому элементу массива и аналогично для другой переменной массива.

0 голосов
/ 25 февраля 2019

шаблон не будет работать здесь.Попробуйте

for i in $usernames
do for j in $passwords
    do printf '%s:%s ' "$i:$j"
done
done
...