CRUNCH - программа предназначенная для создания собственных словарей.
Размеры списков не определены, однако crunch может использовать так называемые “шаблоны” для уменьшения размеров словаря;
crunch может сжимать выходные файлы в различных форматах и (начиная с
версии 2.6) выводит сообщения о том, какого размера будет словарь.
Набор опций
Перед тем, как начинать использовать crunch, давайте пробежимся по опциям:
-b - задание размера файла; эта опция используется, если вы хотите задать размер файла в KB/MB/GB (должна использоваться с опцией “-o START“)
-c - задание количества строк (должна использоваться с опцией “-o START“)
-d - ограничение числа последовательно одинаковых символов
-e - задается тогда, когда нужно остановить crunch (crunch v3.1)
-f - задает путь к файлу charset.lst
-i - инвертирует вывод; вместо слева-направо будет справа-налево (т.е. вместо ААС, ААВ, ААF будет САА, ВАА, FAA)
-o - позволяет указать выходной файл
-p - перестановка слов или символов (командная строка)
-q - перестановка слов или символов (указать в файле)
-r - возобновить синтаксис предыдущей сессии для использования
-s - позволяет указать начальную строку в wordlist
-t - позволяет указать конкретный шаблон для использования
-u - запрещает вывод размера словаря и кол-во строк до начала генерации
-z - добавляет поддержку сжатия вывода (поддерживается gzip, bzip & lzma)
Установка crunch
Установить crunch можно несколькими способами, например из исходных кодов. Для этого скачиваем crunch http://sourceforge.net/projects/crunch-wordlist/. После чего выполняем следующие команды:
# tar -xvf crunch-3.6.tgz
# cd crunch3.6
# make && make install
Основное использование
Основной синтаксис команды:
# crunch [min_length] [max_length] [character_set] [options]
min_length - минимальная длина слова
max_length - максимальная длина слова
character_set - набор символов
options - опции
Синтаксис:
crunch [min length] [max length] [character set] [options]
Если вы не определили набор символов, тогда cranch будет использовать по умолчанию нижний регистр букв (alpha):
# crunch 4 4
Задать символы вручную:
# crunch 6 6 0123456789ABCDEF
Некоторые символы необходимо “изолировать” косой чертой \ :
# crunch 6 6 ABC\!\@\#\$
Создание списков слов по блокам определенного размера
Чтобы указать crunch создавать списки слов определенного размера,
используется опция -b. Должно быть использовано в сочетании с опцией -o
START. Размер файлов может задаваться в след. форматах: kb, mb, gb или
kib, mib, gib. kb, mb и gb - основывается на 10 (т.е. 1KB = 1000
bytes). kib, mib и gib основывается на 2 (т.е. 1KB = 1024 bytes).
Создать словарь, файлы которого не будут превышать 1mb:
# crunch 6 6 0123456789 -b 1mb -o START
Создать словарь, файлы которого не будут превышать 100mb:
# crunch 8 8 abcDEF123 -b 100mb -o START
Создать словарь, файлы которого не будут превышать 10kb:
# crunch 4 4 0123456789 -b 10kb -o START
Создать словарь, файлы которого не будут превышать 2GB:
# crunch 8 8 0123456789ABCDEF -b 2gb -o START
Создание словаря с определенным количеством строк
Используя опцию -с, можно “сказать” crunch, чтобы он создавал файлы с
определенным количеством строк. Для этого, также нужно использовать -o
START.
Создать словарь, файлы которого будут содержать не более 200000 строк:
# crunch 6 6 0123456789 -c 200000 -o START
Создать список слов, файлы которых будут содержать не более 150000 строк:
# crunch 6 6 abcDEF123 -c 150000 -o START
Остановка crunch в заданное время (на определенном слове)
В версии Crunch v3.1 появилась новая опция -e, которая “говорит” crunch
остановиться, когда он дойдет до определенного слова. Например следующая
команда указывает crunch остановиться тогда, когда он дойдет до 333333:
# crunch 6 6 -t %%%%%% -e 333333
Для того, чтобы воспользоваться фиксированными наборами символов,
используйте опцию -f. Например, чтобы создать список слов ualpha
(заглавные буквы), воcпользуйтесь следующей командой:
# crunch 6 6 -f charset.lst ualpha
Создать числовой (numeric) список слов:
# crunch 6 6 -f charset.lst numeric
Создать шестнадцатеричный список слов, где символы ABCDEF будут заглавными (hex-upper):
# crunch 8 8 -f charset.lst hex-upper
Использование инверсии в crunch
Используя опцию -i можно заставить crunch создавать список слов справа
налево. В принципе в этой опции нету особо смысла, так как в любом
случае будет тоже самое, но только наоборот. Например:
# crunch 4 4 -i
Опция -i может использоваться, как при ручном наборе символов (см. пример выше), так и при фиксированном наборе:
# crunch 4 4 -f charset.lst ualpha -i
Создание подстановок
Crunch может быть использован для создания подстановок, которые включают:
символы/слова введенные в команду – опция -p
строки в списке слов – опция -q
С помощью опции -p можно создавать перестановки символов или слов,
введенные в командной строке. Создание перестановки букв (анаграмма):
# crunch 1 1 -p abcd
Создание перестановки со списком слов:
# crunch 1 1 -p bird cat dog
Опция -p должна находиться последней в команде. Для примера возьмем
опцию -u, которая не выводит “подавляет” информацию о размере будущего
файла. Т.е. команда будет следующего вида:
# crunch 1 1 -p abcd -u
В результате crunch посчитает ее как (abcd + -u). Так что будьте
внимательны. А теперь запишем команду, так как надо. Т.е. поставим опцию
-p последней:
# crunch 1 1 -u -p abc
В результате мы получили то, что хотели, а также “подавили” вывод
размера будущего файла с помощью опции -u. Используя опцию -q можно
создать список слов со всевозможными комбинациями из файла. Т.е. опция
-q берет каждую строку из файла и комбинирует ее с другими строками.
Например создадим файл test.txt с тремя строками bird, cat и dog:# touch test.txt && echo "bird" > test.txt && echo "cat" >> test.txt && echo "dog" >> test.txt
# cat test.txt bird cat dog
# crunch 1 1 -q test.txt
Crunch will now generate approximately the following amount of data:
66 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 6
birdcatdog
birddogcat
catbirddog
catdogbird
dogbirdcat
dogcatbird
Как видно, crunch скомбинировала каждую строку из файла в новое слово.
Думаю смысл понятен. Возобновление создания списка слов, после отмены
Crunch позволяет создавать список слов (словарь), после его отмены
(остановки). Для этого нужно воспользоваться опцией -r (resume –
возобновление):
# crunch 8 8 0123456789 -o test.tx
Останавливаем выполнение команды нажатием Crtl + C, после чего добавляем в предыдущую команду опцию -r:
# crunch 8 8 0123456789 -o test.txt -r
Если словарь начинается с определенной позиции (см. главу ниже), то при
возобновлении, опция -s не должна выводиться. Рассмотрим этот случай на
примере. Для этого создаем список слов (словарь) с фиксированным
начальным пределом, опция -s:
# crunch 8 8 0123456789 -s 59999999 -o test.txt
root@bt:/pentest/passwords/crunch# head -n 2 test.txt
59999999
60000000
root@bt:/pentest/passwords/crunch# tail -n 2 test.txt
99999998
99999999
После чего останавливаем выполнение (Crtl + C) и запускаем команду с опцией -r, но уже без опции -s:
# crunch 8 8 0123456789 -o test.txt -r
Запуск с определенной позиции
Если нужно создать список слов (словарь) с определенной позиции,
используйте опцию -s. Допустим, что при создании словаря у вас
закончилось место на HDD или еще что то случилось, после чего вы
остановили работу crunch. В этом случае вам поможет временный файл
“START”, который находится в директории /pentest/passwords/crunch/.
1. создаем список слов (словарь):
# crunch 7 7 0123456789 -o test.txt
2. останавливаем выполнение программы - Ctrl + C
3. проверяем последние две записи:
# tail -n 2 START
4. копируем/переименовываем словарь:
# cp START file1.txt
5. возобновляем работу crunch с последней записи:
# crunch 7 7 0123456789 -s 9670549 -o test.txt
Важно!
crunch перезапишет временный файл START, когда начнется новый процесс
создания списка слов (словаря), поэтому не забудьте
скопировать/переименовать файл START, если вы хотите сохранить
предыдущую работу.
Создание шаблонов
Настоящая сила crunch в шаблонах. Для задания шаблона используйте опцию -t. Crunch поддерживает четыре вида шаблонов:
@ – строчные буквы , – заглавные буквы
% – цифры
^ – спец. символы
Создать список слов (словарь) состоящий из строчных букв, длинной 6 символов, начинающиеся с dog:
# crunch 6 6 -t dog@@@
Чтобы dog был в конце:
# crunch 6 6 -t @@@dog
Чтобы dog был по середине:
# crunch 7 7 -t @@dog@@
Или, чтобы dog следовал за заглавной буквы, потом цифра, а потом спец. символ:
# crunch 6 6 -t dog,%^
Также можно комбинировать шаблоны, так как вам взбредет в голову:
# crunch 8 8 -t ,,^^@@%%
Создание словаря только из строчных букв:
# crunch 4 4 -t @@@@
Создание словаря только из цифр:
# crunch 4 4 -t %%%%
Создание словаря только из заглавных букв:
# crunch 4 4 -t ,,,,
Создание словаря только из спец. символов:
# crunch 4 4 -t ^^^^
Можно указать crunch использовать шаблоны, но только с определенным набором символов. Например, давайте создадим список слов (словарь), который будет в себя включать:
abcdef - буквы нижнего регистра
ABCDEF - буквы верхнего регистра
12345 - символы
@#$% - спец. символы
# crunch 8 8 abcdef ABCDEF 12345 @#$%- -t @@,,%%^^
Некоторые спец. символы нужно экранировать \ :
# crunch 10 10 123abcDEF\!\@\# -t TESTING@@@
Если вы решили добавить пробел к своим символам, тогда это можно сделать так:
# crunch "123abcDEF " -t TEST@@@@
@black_triangle_tg