Казалось бы, стандартная ситуация. Забыли свой пароль от WiFi.
Если вы читали предыдущую статью, то уже без проблем можете наловить хендшейков обмена аутентификационной информацией между точкой доступа и клиентом. Осталось только расшифровать их, то есть подобрать пароль. А вот где найти нормальные словари для перебора? Конечно, можно поискать на просторах сети, только вот попадаются часто не самые лучшие варианты – либо английские слова (которые не очень часто используются в наших реалиях), либо откровенный мусор, дублирование и прочие проблемы словарей.
Но словари мы можем делать и самостоятельно! Для этого есть несколько чудесных инструментов.
Прежде всего, хотелось бы несколько слов сказать о целесообразности хранения словарей последовательного перебора. Особенно, если перебираете консольными утилитами (aircrack). Нет необходимости хранить, например, пароль из 8-значных чисел от 00000000 до 99999999. Файл словаря весит около 859 Мегабайт, (100 миллионов строк), а это достаточно большой словарь. Можно просто генерировать словарь на лету и скармливать его утилите-переборщику. Тогда на диске не будет использоваться драгоценное место, которое можно потратить на настоящие словари.
crunch
Неплохая утилитка в Linux, позволяющая сгенерировать словарь по заданным параметрам. Принимает следующие аргументы:
- – минимальная длина последовательности;
- – максимальная длина последовательности;
- – набор символов для генерации;
- – различные опции;
По части опций – богатый выбор. Полный набор конечно же есть в man, мы рассмотрим некоторые, наиболее важные:
-t – шаблон выходной строки. “@” – символ нижнего регистра, “,” – символ верхнего регистра, “%” – цифра, “^” – спецсимвол.
-f – входной набор символов;
-o – выходной файл словаря;
-s – стартовая последовательность;
Примеры:
# crunch 1 8
генерация словаря от “a” до “zzzzzzzz”.
# crunch 1 4 abcde
генерация словаря от 1 до 4 символов используя лишь символы “abcde” (от “a” до “eeee”)
А как быть если нужен пробел? Юзаем экранирующий слеш.
# crunch 3 3 abcd\
Составит трёхсимвольный словарь из набора (“a”,”b”,”c”,”d”,” “)
Кроме того, можно указывать определенные наборы символов и их комбинации:
# crunch 3 3 -f /usr/share/crunch/charset.lst ualpha-numeric -o output.dic
При этом в файле входного словаря /usr/share/crunch/charset.lst должны быть директивы:
...
ualpha-numeric = [ABCDEF....XYZ0123456789]
...
и т.д. Так можно задать отдельно для малых букв, для больших. Для цифр и пробелов. Для спец-знаков. Таким образом и комбинировать.
Если нам не нужны повторения символов (каждый встречается 1 раз) то указываем опцию -p
# crunch 1 1 -p abc
Даст нам все перестановки этих трёх символов. При указании ключа -p игнорируются минимальная и максимальная длины. Кроме того вместо последовательности abc можно указать отдельные элементы. Например Все возможные перестановки слогов “go” “me” “ri” “ko” “na” “he”
# crunch 1 1 -p go me ri ko na he
Если генерируем словари впрок, то нам пригодится возможность указать алгоритм сжатия:
# crunch 8 8 0123456789 -z gzip -o digits.dic
Такой файл занимает в разы меньше места, чем несжатый. Вот и основные примеры для работы с crunch. Остальное можно найти во встроенной справке.
Допустим, кому-то нужно сгенерить список номеров телефонов. Часто такие пароли используют в роутерах.
# crunch 12 12 +7962%%%%%%%