Создание wordlist-ов с помощью Crunch Предисловие переводчика На поиск материала сподвигла острая необходимость в создании собственного словаря. Требования к софту были следующие: 1. Скорость выполнения (базы 12^12+, пусть даже состоящие только из цифр, требовали достаточно много времени для создания) 2. Возможность разбивания списка на несколько меньших непосредственно в процессе (обработка текстовых файлов больше 15,000,000 строк у меня уже вызывали затруднения) 3. Возможность восстановления генерации после прерывания Собственно, первая подходящая утилита была найдена именно здесь, на античате. Но упоминания были лишь в двух-трех словах, чего было однозначно недостаточно. Нашел англоязычную статью-обзор (да что уж там, скорее документацию), которой спешу поделиться. Сразу оговорю, что могут быть некоторые неточности перевода или ошибки в терминологии. Вступление автора Crunch является утилитой для создания списков слов, которые могут быть использованы для проверки надежности пароля. Ввиду того, что такие списки обычно получаются довольно большими, crunch имеет несколько шаблонов для уменьшения их размеров, может сжимать выходные файлы в различных форматах и предупреждать о размере файлов перед началом работы. Список опций: -b максимальный размер для записи в один файл (должно быть использовано с "-o START") -c количество строк для записи в один файл (должно быть использовано с "-o START") -d максимальное допустимое количество идущих подряд одинаковых символов -f указывает путь к файлу charset.lst (стандартный путь: crunch/charset.lst) с указанием нужного набора символов (lalpha-numeric-space, например) -i разворачивает последовательность символов в выходящем слове (превращая aab в baa, например) -e позволяет остановить генерацию списка на указанном слове -t позволяет составлять собственные шаблоны для использования, где: @ -- строчная буква , -- заглавная буква % -- число ^ -- спец. символ (учитывая пробел) -o позволяет указать название выходного файла и путь к нему (/mylist/myfirstlist.txt, например) -p выводит комбинации слов и символов, указанных в командной строке -q выводит комбинации слов и символов, указанных в определенном файле -r восстанавливает предыдущую сессию -s позволяет задать начальную строку для вашего списка -u уменьшает размер сгенерированного файла -z добавляет поддержку сжатия сгенерированного файла через gzip, bzip и lzma Использование Стандартный результат представляет собой вывод сгенерированного списка на экран. Для этого нужно ввести следующее: /crunch [минимальная длина] [максимальная длина] [набор символов] Пример: /crunch 3 4 0123789AEF выведет все 3- и 4-значные слова, в которых будут содержаться только указанные символы Примечание 1: если набор символов не указан, для генерации списка будет использован набор строчных букв [a-z] Примечание 2: при указании в наборе специальных символов следует отделять их обратным слэшем (ABC\!\@\#\$, например) Для сохранения результата в отдельный файл необходимо указать его название и путь через -o. Пример: /crunch 6 6 987654 -o /mylist/list.txt сохранит все 6-значные слова, в которых будут содержаться указанные символы, в файл list.txt, который находится в папке /crunch/mylist/ Примечание: если путь не указан, список будет сохранен в указанный файл, который будет создан в папке программы (/crunch/list.txt) Для создания списка слов и разбивки его на несколько файлов по размеру следует использовать -b. Пример: /crunch 6 6 012345 -b 1mb -o START создаст список 6-значных слов, состоящих из указанного набора символов и сохранит их в текстовые файлы размером не больше 1 мегабайта Примечание 1: файлы будут созданы в папке с программой (/crunch/) Примечание 2: окончание -o START обязательно Примечание 3: размер следует указывать в kb, mb, gb (или kib, mib, gib) Для создания списка слов и разбивки его на несколько файлов по количеству строк следует использовать -c. Пример: /crunch 3 5 01324 -c 100000 -o START создаст список 3-, 4- и 5-значных слов, состоящих из указанного набора символов и сохранит их в текстовые файлы объемом не больше 100000 строк Примечание 1: файлы будут созданы в папке с программой (/crunch/) Примечание 2: окончание -o START обязательно Для остановки генерации списка на определенном слове следует укаазать его после -e. Пример: /crunch 6 6 -t %%%%%% -e 333333 создаст список 6-значных слов с 000000 по 333333 Для создания списка слов состоящих из определенного набора символов, следует указать путь к содержащему их файлу (по-умолчанию charset.lst) после параметра -f и указать непосредственно нужный набор символов. Пример: /crunch 6 6 -f charset.lst ualpha создаст список всех 6-значных слов, который будет состоять только из заглавных букв Для создания списка, состоящего из перестановок указанных слов или символов, необходимо использовать -p. Пример 1: /crunch 1 1 -p abcd создаст список всех возможных перестановок букв a, b, c, d (abcd, dcda, dabc) Пример 2: /crunch 1 1 -p bird cat dog создаст список всех возможных перестановок из слов bird, cat, dog (dogbirdcat, catdogbird, birdcatdog) Для создания списка, состоящего из перестановок всех слов, которые содержатся в определенном текстовом файле, следует указать его название после -q. Пример: /crunch 1 1 -q words.txt создаст список из всех слов, которые находятся в файле words.txt (в папке /crunch/) Для продолжения создания списка слов после прерывания следует использовать -r. Пример: 1) Начинаем создавать список /crunch 8 8 0123456789 -o list.txt 2) По воле злых богов происходит прерывание 3) Продолжаем с момента разрыва /crunch 8 8 0123456789 -o list.txt -r Для создания списка используя собственный шаблон, следует указать его после -t. Пример 1: /crunch 6 6 -t dog@@@ создаст список вида dogaaa, dogaab, dogaac ... dogdde, dogddf Пример 2: /crunch 6 6 -t %%%%%% создаст список вида 000000, 000001, 000002 ... 102094, 102095 Подведение итогов от переводчика Откровенно говоря -- не могу представить утилиту, которая бы более удачно справлялась с подобными задачами. Поддержка восстановления сессии после прерывания и возможность "на ходу" разбивать списки определенно порадовали. Автор обзора: Tape (оригинал статьи ) Перевел: unic0rn