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 - возобновить синтаксис предыдущей сессии для использования след. -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 устанавливается в следующий каталог (на примере BackTrack): /pentest/passwords/crunch/. Основной синтаксис команды:# 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
Использование фиксированных наборов символов
Crunch позволяет работать с фиксированными наборами символов, названия которых находятся в файле charset.lst. Это позволяет сэкономить время при вводе:
# charset configuration file for winrtgen v1.2 by Massimiliano Montoro (mao@oxid.it)
# compatible with rainbowcrack 1.1 and later by Zhu Shuanglei <shuanglei@hotmail.com>
hex-lower = [0123456789abcdef]
hex-upper = [0123456789ABCDEF]
numeric = [0123456789]
numeric-space = [0123456789 ]
symbols14 = [!@#$%^&*()-_+=]
symbols14-space = [!@#$%^&*()-_+= ]
symbols-all = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
symbols-all-space = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
ualpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
ualpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ]
ualpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
ualpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]
ualpha-numeric-symbol14 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=]
ualpha-numeric-symbol14-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]
ualpha-numeric-all = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
ualpha-numeric-all-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
lalpha = [abcdefghijklmnopqrstuvwxyz]
lalpha-space = [abcdefghijklmnopqrstuvwxyz ]
lalpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789]
lalpha-numeric-space = [abcdefghijklmnopqrstuvwxyz0123456789 ]
lalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=]
lalpha-numeric-symbol14-space = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+= ]
lalpha-numeric-all = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
lalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
mixalpha = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
mixalpha-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ]
mixalpha-numeric = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
mixalpha-numeric-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]
mixalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=]
mixalpha-numeric-symbol14-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]
mixalpha-numeric-all = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
mixalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
#########################################################################################
# SWEDISH CHAR-SUPPORT #
#########################################################################################
#########################
# Uppercase #
#########################
ualpha-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZ???]
ualpha-space-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZ??? ]
ualpha-numeric-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789]
ualpha-numeric-space-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789 ]
ualpha-numeric-symbol14-sv =[ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789!@#$%^&*()-_+=]
ualpha-numeric-symbol14-space-sv =[ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789!@#$%^&*()-_+= ]
ualpha-numeric-all-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
ualpha-numeric-all-space-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
#########################
# Lowercase #
#########################
lalpha-sv = [abcdefghijklmnopqrstuvwxyz???]
lalpha-space-sv = [abcdefghijklmnopqrstuvwxyz??? ]
lalpha-numeric-sv = [abcdefghijklmnopqrstuvwxyz???0123456789]
lalpha-numeric-space-sv = [abcdefghijklmnopqrstuvwxyz???0123456789 ]
lalpha-numeric-symbol14-sv = [abcdefghijklmnopqrstuvwxyz???0123456789!@#$%^&*()-_+=]
lalpha-numeric-symbol14-space-sv = [abcdefghijklmnopqrstuvwxyz???0123456789!@#$%^&*()-_+= ]
lalpha-numeric-all-sv = [abcdefghijklmnopqrstuvwxyz???0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
lalpha-numeric-all-space-sv = [abcdefghijklmnopqrstuvwxyz???0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
#########################
# Mixcase #
#########################
mixalpha-sv = [abcdefghijklmnopqrstuvwxyz???ABCDEFGHIJKLMNOPQRSTUVWXYZ???]
mixalpha-space-sv = [abcdefghijklmnopqrstuvwxyz???ABCDEFGHIJKLMNOPQRSTUVWXYZ??? ]
mixalpha-numeric-sv = [abcdefghijklmnopqrstuvwxyz???ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789]
mixalpha-numeric-space-sv = [abcdefghijklmnopqrstuvwxyz???ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789 ]
mixalpha-numeric-symbol14-sv = [abcdefghijklmnopqrstuvwxyz???ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789!@#$%^&*()-_+=]
mixalpha-numeric-symbol14-space-sv = [abcdefghijklmnopqrstuvwxyz???ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789!@#$%^&*()-_+= ]
mixalpha-numeric-all-sv = [abcdefghijklmnopqrstuvwxyz???ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
mixalpha-numeric-all-space-sv = [abcdefghijklmnopqrstuvwxyz???ABCDEFGHIJKLMNOPQRSTUVWXYZ???0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
Для того, чтобы воспользоваться фиксированными наборами символов, используйте опцию -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 abcd
В результате мы получили то, что хотели, а также “подавили” вывод размера будущего файла с помощью опции -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.txt
Останавливаем выполнение команды нажатием 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@@@@
спс
ОтветитьУдалитьОдин вопрос. Если я хочу скомбинировать слова bird cat dog в ином порядке:
ОтветитьУдалитьbird
cat
dog
birdcat
birddog
catbird и т.д. Чтобы под конец были комбинации 5,7,100 слов т.е. Каких будет угодно как с символами. Какая для этого команда нужна?
Для создания списка, состоящего из перестановок всех слов, которые содержатся в определенном текстовом файле, следует указать его название после -q.
УдалитьПример: /crunch 1 1 -q words.txt создаст список из всех слов, которые находятся в файле words.txt (в папке /crunch/)
Как сделать чтобы слова (в словаре: dog, cat, bird) скомбинировались к примеру от 1 до 4:
Удалитьdog
dogdog
catdog
catdogdog
.............
как создать словарь, если не известны не которые символы?
ОтветитьУдалитьк примеру 1234????qwer
Нужно чтобы за место символа "?", был перебор от 1 до 4.
как создать шаблон чтобы в слове использовались буквы верхнего и нижнего регистра, цифры. Но чтобы рядом стоящие символы не были одинаковыми?!
ОтветитьУдалитьКак сохранить словарь - 1) crunch 13 13 -t Q91L2,,00%%%% -o cd /home/nicolai/Рабочий стол/dict.txt.
ОтветитьУдалить2) nicolai@Kali:~$ cd /home/nicolai/Рабочий\ стол
nicolai@Kali:~/Рабочий стол$
3) Место сохранения ставим в -закладки- клик 2 раза на Рабочйй стол.Окно Круха на весь экран.Сверху на Меню клик на права и ставим бифиду на вкладки.Иначе не сохраняется файл словаря на экране !
Пишите nicavatar@rambler.ru , Николай.
Есть файл 1 с буквами типа A Aa AAa AAaa и т.д. и файл 2 с цифрами типа 1 12 123 147 и т.д. Можна ли заставить Crunch подставлять по очереди ВСЕ значения файла 2 к КАЖДОМУ значению файла 1 и записывать все это в файл?
ОтветитьУдалитьфигня со списка своего нельзя сгенерировать пароли слов.
ОтветитьУдалить