You are here: Home » Атаки на пароли » Crunch

Crunch

Описание Crunch

Crunch — генератор словарей с паролями, в которых можно определить стандартную или заданную кодировку. Crunch может создать список слов со всевозможными комбинациями и перестановками в соответствии с заданными критериями. Данные, которые выводит crunch, могут быть отображены на экране, сохранены в файл или переданы в другую программу.

Особенности:

  • crunch генерирует списки слов (словари) как методом комбинации, так и методом перестановки
  • он может разбить вывод по количеству строк или размеру файла
  • поддерживается возобновление процесса после остановки
  • образец (паттерн) поддерживает числа и символы
  • образец поддерживает по отдельности символы верхнего и нижнего регистра
  • работая с несколькими файлами, выводит отчёт о статусе
  • новая опция -l для буквальной поддержки, @,% ^
  • новая опция -d для ограничения дублирования символов, смотрите man-файл для деталей
  • поддержка unicode

Домашняя страница: http://sourceforge.net/projects/crunch-wordlist/

Автор: bofh28

Лицензия: GPLv2

Справка по Crunch

синтаксис:

./crunch <с_длина> <до_длина> [-f <путь до набор_символов.lst> имя набора символов] [-o wordlist.txt или START] [-t [FIXED]@@@@] [-s блок_начала]

Опции

-b          : максимум байт для записи в файл вывода. зависит от размера блоков файлов,
              может быть меньше на несколько байтов чем установлено, но никогда не больше.
-c          : количество строк для записи в файл вывода, работает только если используется
              "-o START", например: 60. Файл вывода будет в формате
               "начальные буквы-конечные буквы", например:
              crunch 1 5 -f /pentest/password/charset.lst mixalpha -o START -c 52
              создаст 2 файла: a-7.txt и8-\ .txt. Причина наличия слэша во втором файле
              в том, что он экранирует пробел. Да его нужно писать, когда
              указываете имя файла с пробелом.
-d          : установка -d [n][@,%^] подавляет генерацию строк с более
              чем [n] смежных дубликатов из заданного набора символов. Например:
              ./crunch 5 5 -d 2@
              Напечатает все комбинации с 2 или менее смежными дубликатами в нижнем регистре.
-e          : говорит crunch остановить генерацию слов в строку. Полезно когда передаёте
              вывод crunch в другую программу.
-f          : путь до файла содержащего список набора символов, например: charset.lst
              имя набора символов в файле выше, например:
              mixalpha-numeric-all-space
-i          : инвертирует вывод так, что первый символ будет меняться очень часто
-l          : буквальные символы для использования в -t @,%^
-o          : позволяет вам указать файл для записи вывода, например:
              wordlist.txt
-p          : печатает перестановки без повторяющихся символов. Эта опция НЕ МОЖЕТ
              использоваться с -s. Она также игнорирует минимальную и максимальную длины.
-q          : Как и опция -p, но читает строку из указанного файла. Она НЕ МОЖЕТ
              быть использована с -s. Она также игнорирует минимальные и максимальные длины.
-r          : возобновить предыдущую сессию. Вы должны использовать ту же самую командную
              строку как и в предыдущей сессии.
-s          : позволяет вам указывать начальную строку, например: 03god22fs
-t [FIXED]@,%^  : позволяет вам указывать паттерн, например: @@god@@@@
              где только @ будут изменены на буквы нижнего регистра
              , будут заменены на буквы верхнего регистра
              % будут заменены на цифры
              ^ будет заменён на символы
-u          : Опция -u отключает поток вывода процентов. Она должна быть последней опцией.
-z          : добавляет поддержку для сжатия сгенерированного вывода. Должна использоваться
              с опцией -o. Поддерживает только gzip, bzip, lzma и 7z.

Использование crunch

Простой пример использования:

crunch <минимальная-длина> <максимальная-длина> [набор символов]

Например:

crunch 3 7 abcd

Этот пример создаст все пароли от 3 до 7 символов, содержащих символы 'abcdef' в качестве набора символов и выведет всё это в стандартный вывод.

Ещё один пример:

crunch <минимальная-длинна> <максимальная длина> [-f <путь до charset.lst> имя-набора-символов] [-o wordlist.txt или START] [-t [FIXED]@@@@] [-s начальный_блок]
  • @ означает символы в нижнем регистре
  • , означает символы в верхнем регистре
  • % означает цифры
  • ^ означает разные символы, общим количеством 33. Вы можете посмотреть их командой:
crunch 1 1 -t ^

Как создать словарь в crunch

Перейдите в Приложения > Kali Linux > Password Attacks > crunch

Или введите в Терминале:

crunch

Правила для создания словаря.

crunch <min> <max> <charset> -t <pattern> – o <filename.lst>

Где,

  • min = минимальное количество символов в паролях словаря
  • max = максимальное количество символов в паролях словаря
  • charset = символы, которые хотите добавить в пароли в словаре. Например: abcd или 123455
  • pattern = образец пароля. Например хотите создать словарь вида 98*******, т.е. первые две цифры будут статические и последние цифры — переменными.

Например, я хочу создать словарь из минимум 10 цифр, максимум 10 цифр, с символами abcd987 и образцом abc@@@@@@@ с последующим сохранением файла словаря на рабочем столе.

Вводим в терминале:

crunch 10 10 abcd987 -t abc@@@@@@@ -o /root/Рабочий\ стол/file.txt

это создаст 823543 комбинаций пароля.

Руководство по Crunch

ОПИСАНИЕ. ОБЯЗАТЕЛЬНЫЕ ОПЦИИ

Crunch может создавать словарь, основанный на указанных вами критериях. Вывод из crunch может быть отправлен на экран, файл или в другую программу. Требуемыми параметрами являются:

минимальная-длинна

Минимальная длина строки, с которой вы хотите чтобы crunch начал. Эта опция требуется даже для параметров, которые не будут использовать эту величину.

максимальная-длинна

Максимальная длина строки, с которой вы хотите чтобы crunch начал. Эта опция требуется даже для параметров, которые не будут использовать эту величину.

строка набор-символов

Вы можете указать в командной строке набор символов для использования в crunch или оставить его пустым, чтобы crunch использовал набор символов по умолчанию. Символы ДОЛЖНЫ указываться в следующем порядке: буквы нижнего регистра, буквы верхнего регистра, цифры, а затем символы. Если вы не будете следовать этому порядку, то вы не получите результата который хотите. Вы ДОЛЖНЫ указать или величины для типа символов или знак плюс.

ПРИМЕЧАНИЕ: Если вы хотите включить символ пробела в ваш набор символов, вы должны экранировать его символом \ или заключить ваш набор символов в кавычки, например, "abc ". Смотрите примеры 3, 11, 12 и 13 для большего понимания.

НЕОБЯЗАТЕЛЬНЫЕ ОПЦИИ

-b число[тип]

Определяет размер файла вывода, работает только если используется -o START, например: 60MB.

Имена выводных файлов будут в формате «начальные буквы-конечные буквы», пример:

./crunch 4 5 -b 20mib -o START

сгенерирует 4 файла: aaaa-gvfed.txt, gvfee-ombqy.txt, ombqz-wcydt.txt, wcydu-zzzzz.txt.

Валидными величинами для типов являются kb, mb, gb, kib, mib, and gib. Первые три типа основываются на 1000, а последние три типа основываются на 1024.

ПРИМЕЧАНИЕ: между цифрой и типом нет пробела. Например, 500mb — это правильно, а 500 mb — это НЕ правильно.

-c число

Задаёт число строк для записи в файл вывода, работает только если используется -o START, пример: 60.

Имена выводных файлов будут в формате «начальные буквы-конечные буквы», например:

./crunch 1 1 -f /pentest/password/crunch/charset.lst mixalpha-numeric-all-space -o START -c 60

создаст 2 файла: a-7.txt и 8-\ .txt. Причина наличия слэша во втором имени файлов: конечный символ — пробел, который должен быть экранирован для его печати. Да, вам нужно добавить \ когда указываете имя файла, поскольку последний символ — это пробел.

-d числосимволы

Ограничивает количество повторяющихся одинаковых символов. -d 2@ ограничивает вывод для символов нижнего регистра, к примеру в выводе будут слова от aab до aac. aaa не будет сгенерировано, поскольку имеет три последовательных буквы a. Формат: число, а за ним символ, где число — это максимальное количество последовательных символов, а символ — это тот символ из набора знаков, который вы хотите ограничить, к примеру @,%^. Смотрите примеры 17-19.

-e строка

Указывает, когда crunch должен остановиться досрочно. При генерации этой строки (пароля) программа прекращает свою работу.

-f /путь/до/набора/символов.lst имя-набора-символов

Указывает набор символов из charset.lst. В Kali Linux этот файл размещён здесь: /usr/share/crunch/charset.lst.

-i

Инвертирует вывод, т. е. вместо aaa,aab,aac,aad и т. д., вы получите aaa,baa,caa,daa,aba,bba и т.д.

-l

Когда вы используете опцию -t, эта опция говорит crunch какой символ нужно обрабатывать буквально. Это позволит вам использовать буквы в качестве заполнителей в паттернах. Опция -l должна быть такой же длины как опция -t. Смотрите пример 15.

-m

Объединена с -p. Пожалуйста, вместо неё используйте -p.

-o wordlist.txt

Указывает файл для записи вывода, например: wordlist.txt

-p символы ИЛИ -p слово1 слово2 …

Говорит crunch генерировать слова, которые не имеют повторяющихся символов. По умолчанию crunch будет генерировать словарь, размер которого можно посчитать по формуле: (количество символов в наборе символов) в степени (максимальная длина слов). Вместо этого эта опция будет генерировать количество слов равное факториалу количества символов в наборе символов. Например, набор символов abc и максимальная длина — 4. По умолчанию Crunch создаст 3^4 = 81 слов. При использовании этой опции будет сгенерировано 3! = 3x2x1 = 6 слов (abc, acb, bac, bca, cab, cba). ОНА ДОЛЖНА БЫТЬ ПОСЛЕДНЕЙ ОПЦИЕЙ! Эта опция НЕ МОЖЕТ использоваться с -s и она игнорирует максимальную и минимальную длину паролей, при этом вам всё равно нужно указывать эти два числа.

-q имя_файла.txt

Говорит crunch прочитать имя_файла.txt и перемешать то, что прочитано. Это похоже на опцию -p, но разница в том, что вывод берётся из имя_файла.txt.

-r

Говорит crunch возобновить генерацию слов с того места, где она была прервана. -r работает только если вы используете -o. Вы должны использовать ту же команду как используется оригинальная команда для генерации слов. Единственное исключение — это опция -s. Если ваша оригинальная команда использует опцию -s, вы ДОЛЖНЫ удалить её перед возобновлением сессии. Просто добавьте -r в конец оригинальной команды.

-s начало_блока

Указывает начало строки, например: 03god22fs

-t @,%^

Определяет паттерны (образцы), например @@god@@@@ где будут изменяться только @, ,[запятая], % и ^.

  • @ вставит буквы нижнего регистра
  • , вставит буквы верхнего регистра
  • % вставит цифры
  • ^ вставит символы

-u

Опция -u отключает поток печати процентов. Она должна быть последней опцией.

-z gzip, bzip2, lzma, и 7z

Сжимают вывод из опции -o. Валидными параметрами являются gzip, bzip2, lzma и 7z.

gzip — самый быстрый, но сжатие минимальное. bzip2 помедленнее чем gzip но имеет улучшенную компрессию. 7z самый медленный, но имеет наилучшее сжатие.

ПЕРЕНАПРАВЛЕНИЕ

Вы можете использовать вывод crunch и перенаправлять его по трубе (|) в другие программы. Двумя наиболее популярными программами для принятия вывода из crunch являются aircrack-ng и airolib-ng. Синтаксис следующий:

crunch 2 4 abcdefghijklmnopqrstuvwxyz | aircrack-ng /root/Mycapfile.cap -e MyESSID -w-
crunch 10 10 12345 --stdout | airolib-ng testdb -import passwd -

ПРИМЕЧАНИЯ

  1. Начиная с версии 2.6 crunch будет отображать как много данных генерируется. В 2.7 программа также будет отображать как много строк будет сгенерировано. Теперь Crunch будет ждать 3 секунды ДО начала генерации данных для того, чтобы дать вам время нажать Ctrl-C для отмены. Это сделано на тот случай, если количество будущих данных слишком велико и вы этого не оиждали.
  2. В charset.lst добавлены буквы нижнего регистра в шестнадцатеричном формате (0123456789abcdef) и буквы верхнего регистра в шестнадцатеричном формате (0123456789ABCDEF).
  3. Некоторые люди запросили добавление поддержки в crunch символов пробелов, crunch всегда имел поддержку символов пробелов в командной строке и в charset.lst. Для добавления пробела в командную строку вы должны его экранировать используя символ /. Смотрите синтаксис в примере 3. Возможно вам понадобиться экранировать некоторые другие символы вроде ! Или # - это зависит от вашей операционной системы.
  4. Начиная с 2.7 если вы генерируете файл, то каждые 10 секунд вы будете получать процент сделанного.
  5. Начиная с 3.0 автор изменил символ -t * на , поскольку * является зарезервированным символом. Вы всё ещё можете использовать его если поставите \ перед *. Да, это ломает синтаксис crunch и автор делает всё возможное для избежания этого, но в этом случае проще сделать это изменение для долгосрочной поддерджки.
  6. Некоторый вывод отсутствует. Файл не генерируется.

Это обычно объясняется тем, что у вас закончилось место на диске. Если вы перепроверили, что у вас предостаточно дискового пространства, значит наиболее вероятно, что проблема в имени файла, которое начинается с точки. В Linux имена файлы, имена которых начинаются с точки, являются скрытыми. Чтобы их увидеть сделайте так ls -l .*

  1. Crunch говорит, что максимальная и минимальная длины должны быть такого же размера, как и ваш паттерн, при этом длина установлена правильно.

Это обычно означает, что ваш паттерн содержит символы, которые нужно экранировать. В bash вам нужно экранировать следующее: &, *, пробел, \, (, ), |, ', ", ;, <, >.

Символом экранирования в bash является \. Поэтому паттерны, которые содержат & и * должны выглядеть примерно так:

crunch 4 4 -t \&\*d@

Альтернатива экранирования символов — это обёртывание строки кавычками. Например:

crunch 4 4 -t "&*d@"

Если вы хотите использовать " в вашем паттерне, вам нужно экранировать его примерно так:

crunch 4 4 -t "&*\"@"

Пожалуйста помните, что различные терминалы имеют различные символы экранирования и, возможно, имеют различные символы которые вы должны экранировать. Пожалуйста, проверьте страницу man для вашего терминала для поиска информации о символах экранирования и о тех символах, которые нужно экранировать.

  1. Когда используете опцию -z 7z, 7z не удаляет оригинальный файл. Вам нужно будет удалить его вручную.

Примеры запуска Crunch

Примеры использования crunch

Пример 1

crunch 1 8

crunch отобразит список слов, который начинается с a и заканчивается на zzzzzzzz

Пример 2

crunch 1 6 abcdefg

crunch отобразит список слов, в паролях которого используется набор abcdefg который начинается на a и заканчивается gggggg

Пример 3

crunch 1 6 abcdefg\ 

В конце строки есть символ пробела. Чтобы crunch мог использовать пробел, вам нужно экранировать его, поставив перед ним символ \. В этом примере вы можете также использовать кавычки вокруг букв тогда вам не нужен \, например "abcdefg ". Crunch отобразит список слов, использующих набор символов abcdefg , который начинается на a, а заканчивается на шесть пробелов.

Пример 4

crunch 1 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt

crunch будет использовать набор символов mixalpha-numeric-all-space из charset.lst и выведет сгенерированные пароли в файл с названием wordlist.txt. Этот файл начнётся с a и закончится на " "

Пример 5

crunch 8 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt -t @@dog@@@ -s cbdogaaa

crunch сгенерирует восьмисимвольный список слов, используя набор символов mixalpha-number-all-space из charset.lst и запишет список паролей в файл wordlist.txt. Файл начнётся с cbdogaaa и закончится на " dog "

Пример 6

crunch 2 3 -f charset.lst ualpha -s BB

crunch начнёт генерировать словарь с BB и закончит на ZZZ. Это полезно если вы должны остановить посередине генерацию словаря. Просто сделайте завершающий словарь и установите параметр -s на следующее слово в последовательности. Убедитесь, что переименовали оригинальный словарь ДО того, как вы начали, иначе crunch перезапишет существующий словарь.

Пример 7

crunch 4 5 -p abc

Номера не обрабатываются, но необходимы.

crunch сгенерирует abc, acb, bac, bca, cab, cba.

Пример 8

crunch 4 5 -p dog cat bird

Номера не обрабатываются, но необходимы.

crunch сгенерирует birdcatdog, birddogcat, catbirddog, catdogbird, dogbirdcat, dogcatbird.

Пример 9

crunch 1 5 -o START -c 6000 -z bzip2

crunch сгенерирует сжатые в bzip2 файлы, каждый из которых содержит по 6000 слова. Имена сжатых файлов будут в формате «первое_слово-последнее-слово.txt.bz2».

       time ./crunch 1 4 -o START -c 6000 -z gzip
       real    0m2.729s
       user    0m2.216s
       sys     0m0.360s

       time ./crunch 1 4 -o START -c 6000 -z bzip2
       real    0m3.414s
       user    0m2.620s
       sys     0m0.580s

       time ./crunch 1 4 -o START -c 6000 -z lzma
       real    0m43.060s
       user    0m9.965s
       sys     0m32.634s

       size  filename
       30K   aaaa-aiwt.txt
       12K   aaaa-aiwt.txt.gz
       3.8K  aaaa-aiwt.txt.bz2
       1.1K  aaaa-aiwt.txt.lzma

Пример 10

crunch 4 5 -b 20mib -o START

сгенерирует 4 файла: aaaa-gvfed.txt, gvfee-ombqy.txt, ombqz-wcydt.txt, wcydu-zzzzz.txt. Первые три файла по 20 мегабайт и последний файл — 11 мегабайт.

Пример 11

crunch 3 3 abc + 123 '!@#' -t '@%^'

реализация пользовательских наборов символов. Будут сгенерированы слова в 3 символа (-t '@%^'). Первым символом будет буква из набора abc, вторым символом будет цифра из второго набора 123, и третьим символом будет символ из набора !@#. Важен порядок, в котором вы указываете символы. Вы должны их расположить в таком порядке: буквы нижнего регистра, буквы верхнего регистра, цифры и символы. Если вы не используете особенные наборы символов, то используйте знак плюс в качестве заполнителя. Как вы можете увидеть, в примере не используются буквы верхнего регистра, поэтому используется знак плюс в качестве заполнителя. Вышеприведённый пример начнётся с a1! и закончится на c3#.

Пример 12

crunch 3 3 abc + 123 '!@#' -t ^%@

сгенерирует трёхсимвольные слова, начинающиеся с !1a и заканчивающиеся на #3c.

Пример 13

crunch 4 4 + + 123 + -t %%@^

знак плюс (+) - это заполнитель, таким образом вы можете указать пользовательский набор символов для наборов любого типа. crunch будет использовать конкретный тип набора символов по умолчанию когда встречает знак плюс (+) в командной строке. Вы должны либо указать значения каждого типа наборов символов или использовать знак плюс. Т.е., если вы имеете два типа наборов символов вы ДОЛЖНЫ либо указать значения для каждого типа или использовать знак плюс. Т.е. в этом примере будут использоваться следующие наборы символов:

  • abcdefghijklmnopqrstuvwxyz
  • ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • 123
  • !@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/

на конце вышеприведённой строки есть пробел, вывод начнётся с 11a! и закончится за "33z ". Кавычки показывают пробел на конце строки.

Пример 14

crunch 5 5 -t ddd@@ -o j -p dog cat bird

любые символы отличные от @,%^ являются заполнителями для слов которые нужно переставлять. Символы @,%^ имеют ту же функцию, что и с -t. Если вы хотите использовать @,%^ в вашем выводе вы можете использовать опцию -l для указания, какие символы crunch должен воспринимать буквально.

Результатом будет

birdcatdogaa
birdcatdogab
birdcatdogac
<пропуск>
dogcatbirdzy
dogcatbirdzz

Пример 15

crunch 7 7 -t p@ss,%^ -l a@aaaaa

crunch теперь будет обрабатывать символ @ как буквальный символ и не будет заменять символом буквы в верхнем регистре

будет сгенерировано следующее

p@ssA0!
p@ssA0@
p@ssA0#
p@ssA0$
<пропущено>
p@ssZ9

Пример 16

crunch 5 5 -s @4#S2 -t @%^,2 -e @8 Q2 -l @dddd -b 10KB -o START

crunch сгенерирует пятисимвольные строки начиная с @4#S2 и заканчивая на @8 Q2. Вывод будет порублен в файлы размером по 10 килобайт, названных по образцу «начальные символы-конечные символы».

Пример 17

crunch 5 5 -d 2@ -t @@@%%

crunch сгенерирует пятисимвольные строки начиная с aab00 и кончая на zzy99. Обратите внимание, что присутствуют aaa и zzz.

Пример 18

crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START

crunch сгенерирует строки из 10 символов, начиная с aab!0001!! и заканчивая на zzy 9998. Вывод будет записан в файлы по 20 мегабайт.

Пример 19

crunch 8 8 -d 2@

crunch сгенерирует восьмисимвольные слова, в которых ограничено двумя количество одинаковых последовательных букв в нижнем регистре. Crunch начнёт с aabaabaa и закончит на zzyzzyzz.

Пример 20

crunch 4 4 -f unicode_test.lst japanese -t @@%% -l @xdd

crunch загрузить некоторые японские символы из файла набора символов unicode_test. Вы вод начнётся с @日00 и закончится в @語99.

Установка Crunch

Программа предустановлена в Kali Linux.

Установка Crunch в Linux

Скачайте исходный код программы с официального сайта: http://sourceforge.net/projects/crunch-wordlist/

Это же можно сделать из командйно строки (будет загружена самая последняя версия):

wget https://sourceforge.net/projects/crunch-wordlist/files/latest/download -O crunch-.tgz

Распакуйте архив

tar xvzf crunch-*.tgz

Перейдите в распакованный каталог

cd crunch-*/

Компилируем:

sudo make PREFIX=/usr INSTALL_OPTIONS=geninstall

Запуск скомпилированного бинарного файла (портативная версия):

./crunch

Установка:

sudo make install

Теперь из любого места система запуск:

crunch

Скриншоты Crunch

31

Инструкции по Crunch

Близкие программы:

Рекомендуемые статьи: