Программы для создания словарей


Crunch VS Hashcat

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

Это очень гибкая программа по генерации словарей.

Hashcat — это самый быстрый в мире восстановитель (взломщик) паролей. Но нас интересует не эта функция. Hashcat также может генерировать словари. Для того, чтобы не взламывать пароли, а только показать кандидаты в Hashcat есть опция --stdout

Hashcat использует различные способы генерации паролей (по маске, комбинаторная, перестановочная, основанная на правиле атаки и другие). Самым востребованном способом является генерация паролей по маске.

Чтобы не запутаться в терминах, будем называть символ в определённом месте маски или паттерна (образца) «позицией». Например, первый символ в кандидатах в пароли – это первая позиция. Второй символ – это вторая позиция и т.д.

Используя маску, мы можем получить контроль над каждой позицией.

Например, одну из позиций мы хотим сделать статичным символом (всегда одинаковым во всех кандидатах в пароли) – так может и Crunch. Но мы также можем использовать для определённых позиций пользовательские наборы символов. Например, мы знаем, что во второй позиции встречаются только цифры от 1, 3, 5. В Hashcat мы можем создать пользовательский набор символов, включающий в себя цифры 1, 3, 5 и в маске поставить этот пользовательский набор во вторую позицию.

В Crunch нет понятия «маска», но есть понятие «паттерн», «образец». В сущности, он эквивалентен маске. Более того, в Crunch также можно создавать до четырёх пользовательских наборов символов. Т.е. по функционалу Crunch не уступает возможностям Hashcat.

В Crunch есть пара опций, аналоги которых отсутствуют в Hashcat. Например, -d – позволяет указывать максимальное количество повторяющихся символов. А опция -p создаёт словари без повторяющихся символов. Т.е. эта программа имеет свои уникальные возможности.

Генерация словарей с Crunch

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

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

Например:

crunch 3 7 abcd

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

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

crunch 3 7 abcd -o dict.txt

Опция -t позволяет создавать образцы. В терминах Hashcat это «маски».

Для обозначения набора символов используются следующие сокращения:

  • @ означает буквы в нижнем регистре
  • , означает буквы в верхнем регистре
  • % означает цифры
  • ^ означает разные символы, общим количеством 33. Вы можете посмотреть их командой:
crunch 1 1 -t ^

Все другие символы будут воспроизводиться как есть.

Например, образец 8905%%%%%%% - означает генерацию кандидатов в пароли, каждый из которых будет начинаться с 8905, а затем будут следовать семь цифр. Полная команда будет выглядеть так:

crunch 11 11 -t 8905%%%%%%%

Пользовательские наборы символов Crunch

В Crunch используются следующие сокращения для набора символов (пронумеруем их):

  1. @
  2. ,
  3. %
  4. ^

Любой из них можно переназначить. Для этого после указания диапазона длины пароля нужно записать четыре группы пользовательских символов, если какую-то группу вы не хотите переназначать, что поставьте вместо своих символов знак + (плюс). Пример:

crunch 2 2 VRb5 + 123 + -t @%

Здесь


  • VRb5 – является пользовательским набором символов, он переназначает @, т.е. вместо abcdefghijklmnopqrstuvwxyz, сокращение @ включает в себя набор из символов VRb5.
  • Первый знак + означает, что набор символов, сокращённо указываемый как , (запятая) и который включает в себя ABCDEFGHIJKLMNOPQRSTUVWXYZ, не переназначен и используется набор по умолчанию.
  • Далее 123 – является вторым пользовательским набором символов, включающим, соответственно, цифры 123, этот набор переназначает значение сокращения %
  • Последний знак плюс говорит о том, что набор символов ^ не переназначен.

Вывод:

V1
V2
V3
R1
R2
R3
b1
b2
b3
51
52
53

Рассмотрим ещё один пример:

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

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

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

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

Рекомендуется ознакомиться со всеми опциями, а также с дополнительными примерами использования Crunch: https://kali.tools/?p=720

Генерация паролей с Hashcat и maskprocessor

Если у вас не работает Hashcat (она требует установку драйверов видеокарты), то вы можете использовать программу maskprocessor.

Maskprocessor — это высокопроизводительный генератор слов (словарей), упакованный в отдельный исполняемый файл, в котором можно настроить символы для каждой позиции.

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

maskprocessor [опции]... маска

Маска составляется из встроенного набора символов и (или) пользовательского набора символов.

Встроенные наборы символов:

  ?l = abcdefghijklmnopqrstuvwxyz
  ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
  ?d = 0123456789
  ?s =  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  ?a = ?l?u?d?s
  ?b = 0x00 - 0xff

Все символы, кроме тех, которые означает набор (?l, ?u, ?d и т.д.) попадают в пароль без изменения.

Если вы хотите составить словарь, который содержит пароли из шести цифр:

maskprocessor ?d?d?d?d?d?d

Если вы хотите, чтобы в четырёх символьных паролях чередовались большие и маленькие буквы:

maskprocessor ?u?l?u?l

Пароль начинается со слова voro, затем идут четыре цифры, а затем два больших буквы:


maskprocessor voro?d?d?d?d?u?u

Пользовательские наборы символов:

  -1,  --custom-charset1=CS  Пользовательские наборы символов
  -2,  --custom-charset2=CS  Пример:
  -3,  --custom-charset3=CS  --custom-charset1=?dabcdef
  -4,  --custom-charset4=CS  устанавливает для ?1 символы 0123456789abcdef

К примеру, в первой позиции должны быть цифры от 1 до 3, во второй позиции буквы AbCd, в третьей позиции любая цифра или маленькая буква, а последними двумя символами должны быть большие буквы:

maskprocessor -1 123 -2 AbCd -3 ?l?d ?1?2?3?u?u

Здесь:

  • -1 123 – первый пользовательский набор символов, включающий символы 123
  • -2 AbCd – второй пользовательский набор символов, включающий символы AbCd
  • -3 ?l?d – третий пользовательский набор символов, включающий символы ?l?d, т.е. все маленькие буквы и цифры
  • ?1?2?3?u?u – маска, составленная из пользовательских и стандартных наборов символов.

Дополнительные полезные опции:

* Приращение:
 
  -i,  --increment=ЧИСЛО:ЧИСЛО   Включить режим приращения. 
                                 Первое ЧИСЛО=начало, второе ЧИСЛО=конец
                                 Пример: -i 4:8 интересующая длинна 4-8 (включая)
 
* Разное:
 
       --combinations          Посчитать количество комбинаций
       --hex-charset           Предположить, что символы даны в шестнадцатеричном виде
  -q,  --seq-max=ЧИСЛО         Максимальное число одинаковых повторяющиеся символов
  -r,  --occurrence-max=ЧИСЛО  Максимальное число вхождения одного символа
 
* Ресурсы:
 
  -s,  --start-at=СЛОВО       Начать с конкретной позиции
  -l,  --stop-at=СЛОВО        Закончить на конкретной позиции
 
* Файлы:
 
  -o,  --output-file=ФАЙЛ     Файл вывода

Hashcat VS maskprocessor

Хотя, в целом, для генерации паролей maskprocessor и Hashcat являются взаимозаменяемыми, нужно помнить, что для выбора режима брутфорса/атаки по маске нужно указывать опцию -a 3 (поскольку Hashcat поддерживает различные режимы атаки, а не только по маске). Также нужно использовать опцию --stdout, которая означает показывать кандидаты в пароли (без взлома хеша).

Hashcat (при использовании маски) не позволяет задать максимальное число одинаковых повторяющиеся символов, максимальное число вхождения одного символа, начать или закончить на конкретной позиции. Но такой результат можно получить используя Атаку на основе правил.

С запуском Hashcat на Linux системах могут быть проблемы из-за необходимости иметь проприетарные драйвера.


Приращение длины пароля делается другими опциями:

Короткая / Длинная опция      | Тип  | Описание                          | Пример
==============================+======+===================================+=======================
    -i, --increment           |      | Включить режим приращения маски   |
    --increment-min           | Числ | Начать прирост маски на X         | --increment-min=4
    --increment-max           | Числ | Остановить прирост маски на X     | --increment-max=8

Генерация словарей в John the Ripper

Программа John the Ripper также поддерживает генерацию словарей по маске. Причём синтаксис очень похож на синтаксис масок в Hashcat. Но есть и отличие: John the Ripper более гибок, он позволяет использовать диапазоны при записи масок, любые символы в шестнадцатеричной записи, имеет больше стандартных наборов символов.

Маска может включать:

  • Статические символы.
  • Диапазоны в синтаксисе [aouei] или [a-z]. Или оба, [0-9abcdef] совпадает с [0-9a-f].
  • Заполнители, которые являются лишь сокращённой формой для диапазонов, например ?l, что на 100% эквивалентно [a-z].
  • ?l — это строчные буквы ASCII
  • ?u — это заглавные буквы ASCII
  • ?d — это цифры
  • ?s — это специальные (все печатаемые символы ASCII кроме включённых в ?l, ?u или ?d)
  • ?a — это полный «печатный» ASCII. Обратите внимание, что для форматов, которые не распознают регистр (например, LM), это обозначение включает только символы нижнего регистра, что значительно сокращает пространство ключей (количество возможных кандидатов в пароли), но при этом охватывает все возможные варианты, доступные для данного вида хеша.
  • ?B — это все 8-битные (0x80-0xff)
  • ?b — это все (0x01-0xff) (символ NULL в настоящее время не поддерживается ядром).
  • ?h — это строчные шестнадцатеричные цифры (0-9, a-f)
  • ?H — это цифры верхнего регистра HEX (0-9, A-F)
  • ?L — это строчные буквы, не-ASCII
  • ?U — это заглавные буквы, не-ASCII
  • ?D — это "цифры", не-ASCII
  • ?S — это не-ASCII "специальные символы"
  • ?A — это все допустимые символы в текущей кодовой странице (включая ASCII). Обратите внимание, что для форматов, которые не распознают регистр (например, LM), это включает только символы нижнего регистра, что значительно сокращает количество кандидатов в пароли без ущерба для взлома.
  • Заполнители, которые определяются пользователем, поэтому мы можем, например, установить значение ?1 и присвоить ему значение, например, [?u?l]. В Hashcat это называется «пользовательские наборы символов».
  • ?1 .. ?9 — это определяемый пользователем заполнитель 1 .. 9
  • Заполнители для режима гибридной маски:
  • ?w — это в Режиме гибридной маски обозначает исходное слово, созданное родительским режимом.
  • ?W это как ?w, за исключением того, что в исходном слове учитывается регистр (поэтому PassWord становится PASSWORD).

Обычный режим маски создаёт слова из маски, например ?u?l?l будет генерировать все возможные трёхбуквенные слова, причём первый символ будет в верхнем регистре, а остальные — в нижнем.

Маски переменной длины

В john.conf также есть маска по умолчанию (по умолчанию такая же, как у hashcat). Её следует использовать с -max-len (и, возможно, -min-len), чтобы получилось что-то полезное.

Параметр -max-len=N усекает маску, поэтому слова длиннее N не выводятся.

Параметр -min-len=N пропустит создание слов короче N.


Если не в режиме «гибридной маски» и использовалась опция -min-len или -max-len, мы будем перебирать пароли с длиной (как в «инкрементной маске») от -min-len до -max-len (или пароли с минимальной и максимальной длинной для данного формата, если эти опции были указаны). Итак, чтобы создать все возможные слова от 3 до 5 букв, используйте -mask=?l -min-len=3 -max-len=5. В случае, если указанная маска короче, последняя её часть будет расширена, например, "-mask=?u?l -max-len=5" будет использовать эффективную маску ?u?l?l?l?l. Всякий раз, когда используется инкрементная маска, ETA (время до завершения перебора всех кандидатов в пароли) в любой момент времени показывает расчётное время для завершения проверки паролей по маске текущей длины, а не всего прогона со всеми масками разной длины.

Специальные символы в масках

Вы можете экранировать специальные символы с помощью \. Итак, чтобы создать буквальное «?l», вы можете сказать \?l или ?\l, и это не будет анализироваться как заполнитель. Точно так же вы можете экранировать дефисы или скобки, чтобы они не анализировались как специальные символы. Чтобы создать буквальную обратную косую черту, используйте \\.

Существует также специальная шестнадцатеричная запись \xHH для указания любого кода символа. Например, \x41 - это «A», а \x09 - это код для TAB.

Примеры:

Маска Пользовательская маска / гибридный ввод Пример вывода Количество кандидатов
pass   pass 1
pw?d   pw3 10
?w?d?d?d password password123 1000x
?w?s?w Bozo Bozo#Bozo 33x
?w?s?W Bozo Bozo#bOZO 33x
0x?1?1:?1?1:?1?1 -1=[0-9a-f] 0xde:ad:ca 16777216
?3?l?l?l -3=?l?u Bozo, hobo 913952
[Pp][Aa@][Ss5][Ss5][Ww][Oo0][Rr][Dd]   P@55w0rD 1296

У нас есть поддержка режима маски на устройстве для большинства быстрых типов хешей, для которых у нас вообще есть поддержка OpenCL. Кроме того, такая поддержка масок на устройстве может использоваться вместе с предоставленным хостом потоком частичных возможных паролей для формирования множества гибридных режимов. Например, все следующие примеры являются правильными:

  • Протестировать любые 7-символьные печатаемые строки ASCII с разумным количеством позиций маски, обрабатываемых на устройстве (JtR решает как оптимально разделить маску между хостом и устройством):
--mask='?a?a?a?a?a?a?a'

То же самое:

--mask='?a' --min-length=7 --max-length=7

То же, но для диапазона длин от 1 до 8:

--mask='?a' --min-length=1 --max-length=8
  • Также можно использовать диапазоны длин с более сложными масками, где последний компонент маски будет расширен до большей длины:
--mask='start?l?d' --min-length=7 --max-length=14

Другие, более сложные примеры использования маски, будут рассмотрены в отдельной части, полностью посвящённой режимам генерации, изменения и обработки паролей.

Как посмотреть генерируемые пароли. Как создать словарь

С помощью опции --stdout вы можете вместо запуска взлома показать создаваемые кандидаты в пароли. Это может быть полезно при проверке написанных масок и при генерации словарей.

Например, чтобы показать все кандидаты в пароли для маски '?d?d?d?d':

./john --mask='?d?d?d?d' --stdout

Чтобы сохранить все пароли для маски '?d?d?d?d' (четыре любые цифры) в файл:

./john --mask='?d?d?d?d' --stdout > 4d.txt

Чтобы создать словарь, содержащий все цифры от 1 до 9999 и сохранить его в файл 1-4d.txt:

./john --mask='?d?d?d?d' --min-length=1 --max-length=4 --stdout > 1-4d.txt

Чтобы создать файл с паролями телефонов, начинающихся на «8905143»:

./john --mask='8905143?d?d?d?d' --stdout > beeline.txt

Вы можете вывести кандидаты в пароли с обрезкой по ДЛИНЕ, для этого используйте опцию вида --stdout=ДЛИНА.

Заключение

Crunch – очень гибкая программа для генерации словарей. Из минусов можно отметить некоторую запутанность назначения пользовательского набора символов, а также то, что пользовательские наборы символов перезаписывают стандартные наборы.

Hashcat не имеет некоторых опций, связанных с регулированием количества повторяющихся символов в пароле.

maskprocessor является хорошей альтернативой Crunch. Программа полностью повторяет функционал Crunch, при этом позволяет назначать пользовательские наборы символов без перезаписи стандартных наборов. Сам синтаксис назначение представляется более наглядным. Программы Hashcat и maskprocessor работают и на Linux, и на Windows.

John the Ripper включает в себя все возможности генерации списков слов по маске которые есть у Hashcat, но также имеет дополнительные возможности, некоторые из которых могут быть интересны профессионалам.


Рекомендуется Вам:

75 комментариев to Программы для создания словарей

  1. Сергей:

    Здравствуйте, а есди мне надо сгенерировать пароль типа Zte531zTE@dslХХХХХ, где ХХХХХ это 5 цифр. Как быть?

    • Alexey:

      Приветствую, например с помощью maskprocessor (эта программа работает в Windows и Linux):

      maskprocessor Zte531zTE@?d?d?d?d?d > file.txt
      
      • Сергей:

        Спасибо за совет. Я вот так сделал.

        crunch 17 17 -t Zte531zTE@fn%%%%% -l aaaaaaaaa@aaaaaaa -o pass.txt

  2. Иван:

    Здравствуйте. Столкнулся с проблемой. 🙁 Как правило для чего-то важного, пользуюсь несколькими вариантами паролей. Год назад запаролил крайне важные документы, которые сейчас срочно понадобились. Брутить по обычным словарям равносильно потере жизни, так как пароль по сути состоит из нескольких коротких слов, семантически сложенных в некую фразу, которая состоит больше чем из 20 символов, которые я к счастью помню Перед и после, а возможно и между словами стоят спецсимволы, иногда пароль может видоизменяться, так как пароль порой может начинаться с заглавной буквы, а иногда с пробелами между словами, а иногда без них. Сейчас стоит задача создать правильную базу брутфорсера подставляя указанные спецсимволы или убирая/добавляя их или пробелы между словами. Т.е. к примеру (группа спецсимволов)FIRSTWORD(пробел или спецсимволы)SECONDWORD(пробел или спецсимволы)THIRDWORD(группа спецсимволов или несколько цифр), типа +@Abc qwerty asdfg^@

    Подскажите пожалуйста, как можно сгенерировать больше вариантов таких паролей?

  3. Сергей:

    Здравствуйте. А как создать файл парный словарь логином и паролем? Такого типа: логин всегда постоянный, затем табуляция и пароль.

    superadmin    Zte531zTE@fn18131
    superadmin    Zte531zTE@fn18132

    И т.д.

     

    crunch 17 17 -t Zte531zTE@fn%%%%% -l aaaaaaaaa@aaaaaaa -o pass.txt

    создает только логины.

    • Сергей:

      crunch 17 17 -t Zte531zTE@fn%%%%% -l aaaaaaaaa@aaaaaaa -o pass.txt создает только пароли.

    • Alexey:

      Если вы делаете в Linux, то используйте команду sed:

      sed -e 's/^/superadmin\t/' pass.txt > login_pass.txt

      В этой команде:

      • superadmin — строка, которую нужно вставить перед каждым паролем
      • \t — символ табуляции, который будет разделять логин и пароль
      • pass.txt — файл, откуда считывать пароли
      • login_pass.txt — новый файл, куда будут сохранены пароли

      Если не хотите создавать новый файл, а хотите изменить имеющийся, то уберите перенаправление и добавьте опцию -i:

      sed -i -e 's/^/superadmin\t/' pass.txt
      
  4. Nikodim:

    Здравствуйте!

    Как мне сгенерить словарь "СЛОВО1, СЛОВО2, ?d?d?d" и чтоб они менялись местами.

    Спасибо!

    • Alexey:

      Приветствую! Это какое-то домашнее задание? Не могу представить реальную ситуацию, где это может понадобиться.

      Если использовать Hashcat с опцией --stdout или Maskprocessor, то в общих чертах порядок действий такой:

      0. Если слова не просто должны быть впритык друг к другу, а реально разделены запятой и пробелом, то с помощью команды sed добавляем «, » к концу каждого слова в обоих файлах.

      1. С помощью комбинаторной атаки генерируем первый промежуточный словарь, состоящий из "СЛОВО1, СЛОВО2, ".

      2. С помощью гибридной атаки добавляем любую маску к промежуточному словарю, в результате получаем конечный словарь "СЛОВО1, СЛОВО2, ?d?d?d".

      В принципе всё.

  5. Иван:

    Здравствуйте.

    Подскажите, как сгенерировать словарь на 8 символов, состоящий из больших букв и цифр? ОС Windows 7.

    • Alexey:

      Приветствую! Если для Windows, то подойдёт кроссплатформенная программа maskprocessor. По ссылке написано, как её установить.

      Если вы раньше не пользовались командной строкой в Windows, то рекомендую прочитать эту статью.

      Затем перейдите в папку с программой и запустите такую команду:

      maskprocessor -1 ?u?d ?1?1?1?1?1?1?1?1 > file.txt

      В ней:

      • -1 ?u?d — означает пользовательский набор символов номер 1, в который включены большие буквы (?u) и цифры (?d)
      • ?1?1?1?1?1?1?1?1 — означает маску из восьми символов, состоящую из пользовательского набора символов
      • > file.txt — означает сохранить сгенерированные пароли в файл file.txt
  6. Геннадий:

    Здравствуйте. Как вариант вопроса о генерировании словаря на 8 символов, а если известно, что пароль состоит из 6 букв и 2 цифр?

    Спасибо

     

    • Alexey:

      Здравствуйте! Нужно создать 28 уникальных по данным условиям масок и для каждой из них сгенерировать пароли:

      ?d?d?l?l?l?l?l?l

      ?d?l?d?l?l?l?l?l

      ?d?l?l?d?l?l?l?l

      ……………

      ……………

      ……………

      ……………

      ……………

      ?l?l?l?l?l?l?d?d

  7. Аникей:

    Здравствуйте! Нужно создать словарик 12 буквенных слов, состоящих только из десятичных цифр (?d) формата abcdefabcdef, т.е шестизначное число написано два раза, это как-то можно сделать?

    • Alexey:

      Мне кажется или сюда начали писать домашние задания? Народ, просьба к задающим вопросы типа «как достать левой пяткой до правого подбородка?» пишите, для чего вам это. Решать за вас домашние задания мне не прикольно!

      А так, конечно можно!

    • Alexey:

      Вот ладно, даже если домашнее задание, просто показать, насколько это элементарно:

      1. Словарь вида abcdef создаётся обычным способом

      2. Затем файл со словарём построчно считывается в PHP и значение каждой строки присваивается переменной.

      3. Значение каждой переменной выводится 2 раза на строку.

      Вот и всё!

      ===================================

      Аналогичный пример без PHP средствами Bash (все слова в из файла user.txt пишутся по 2 раза):

      cat user.txt | while read -r line; do echo $line$line; done

      Всё очень элементарно. Просто вы берётесь за проблему неверными инструментами. Не нужно пытаться сделать операцию более высокого уровня только с помощью Hashcat и maskprocessor. Одно действие делайте с помощью них, а второе (удвоение слов, генерацию масок) подходящим инструментом. В подавляющем большинстве случаев, в любом языке программирование это действие более высокого уровня можно решить одной строкой кода.

      • Аникей:

        Действительно, всё гениальное - просто, но думал, что есть что-то неописанное в самом генераторе, чтоб не прибегать к "стороннему" варианту, ведь при описанном случае уже приходится именно делать словарь, а не просто брутфорс. Спасибо.

        • Alexey:

          Если бы это было нужно в реальной жизни, то в генераторе словарей это тоже предусмотрели бы. Но они не догадались, что какому-то студенту зададут такое домашнее задание. Поэтому и не сделали…

          В реальной жизни никто никогда такой словарь составлять не будет. С точки зрения развития мозгов студента это имеет смысл, а с точки зрения практики делать удвоение слов — это бессмыслица.

          • Аникей:

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

  8. Need:

    Возможно ли, если да - то как, создать пароль от хххххХхххххХ до 999999999999?

    Чтобы где 'х' - были числа, но с обоих сторон одинаковые.
    А где 'X' - конец тех чисел.
    Пример:

    000001000001
    000002000002
    --------------------
    000032000032

    000099000099

    • Alexey:

      ППЦ, почитайте несколько комментариев вверх… Ваш сокурсник успел спросить первым…

      • Need:

        Ну тыкни тогда, раз написали, что-то даже Подобному не наблюдаю.

          • N e e d:

            Допустим я сделаю этим. Но как я сделаю исходник от 000001 до 000009?

            Вручную заполнять?)

            • Alexey:

              Первоначальная операция относится к элементарной для любого, кто хотя бы прочитал эту статью:

              maskprocessor ?d?d?d?d?d?d

              Если скомбинировать с предыдущим ответом:

              maskprocessor ?d?d?d?d?d?d | while read -r line; do echo $line$line; done

              Читайте, разбирайтесь — в этом и есть главное веселье!

              • N e e d:

                А если "maskprocessor: command not found", но "Уже установлен пакет maskprocessor самой новой версии (0.73+git20170609.1708898-1+b1)"

    • Alexey:

      Дистрибутив, вводимые команды?

  9. Юрий:

    Здравствуйте! Нужно создать пароль восьмизначный, в котором 6 значений "X" и 2 значения "0".
    Как это сделать? Спасибо!

  10. XES:

    Доброго времени суток.

    Подскажите пожалуйста как создать маску, имеется утраченный пароль формата:

    0123456789_ABCDEFGHIJKLMNOPQRSTUVXYZ_ABCDEFGHIJKLMNOPQRSTUVXYZ

    Наборы слов и цифр - определенные, надо только составить словарь с возможными вариантами комбинаций в разных регистрах.

    Буду благодарен

    • Alexey:

      Приветствую, я не понял, что именно вы хотите. Ваше сообщение для меня похоже на несвязанный набор слов. Попробуйте сформулировать мысль по-другому.

      • XES:

        Формат пароля я указал в прошлом сообщении. Набор цифр разделен нижним подчеркиванием с первым словом, далее через нижнее подчеркивание идет второе слово. Какие именно цифры и слова, и в каком порядке - мне известно, но регистр этих слов неизвестен. Я не могу понять как создать правило, которое переберет регистры. 

        • Alexey:

          Набор цифр разделен нижним подчеркиванием с первым словом,

          С каким первым словом? Где в той строке, которую вы называете форматом, слова? Если первую часть, состоящую из цифр, вы называете словом, то как она отделена сама от себя?

          Ну и так дальше по каждой вашей мысли — все слова знакомые, но даже примерно о чём вы говорите, я не понимаю.

          Приведите примеры нескольких паролей, возможно, будет понятнее.

          • XES:

            Прошу прощения, вероятно надо было сразу пример привести.

            Мне достоверно известно что пароль:

            1234_abcdef_ghijklmn

            Неизвестен регистр, напрмиер может быть:

            1234_AbcdeF_GhijklmN

            или

            1234_ABcdeF_GhijklMN

            А так же могут быть и другие вариации регистров двух конкретных слов. Под словами я подразумеваю то что идет после цифр 1234 и нижнего подчеркивания.

            • Alexey:

              Следующая команда

              maskprocessor -1 ?u?l '?d?d?d?d_?1?1?1?1?1?1_?1?1?1?1?1?1?1?1' > dic.txt

              сделает пароли, в которых:

              • вначале идут четыре цифры
              • затем подчёркивание
              • затем шесть символов, которые могут быть большими и маленькими буквами
              • затем подчёркивание
              • затем восемь символов, которые могут быть большими и маленькими буквами
              • и сохранит все пароли в файл dic.txt

              Обратите внимание, что файл получится очень большим, поскольку вариантов паролей очень много.

              • XES:

                Спасибо, а если цифры и слова известны, есть какой-то вариант сократить количество вариаций в выходном файле?

            • Alexey:

              Конечно, вместо условного обозначения набора символов (например, «?d») можно указать буквальный символ. Но если вы этого не знаете, получается, вы не читали эту статью? Рекомендую всё-таки прочитать. Но ещё лучше, перейдите сюда и прочитайте хотя бы с раздела «Как составлять маски в Hashcat». Ну или хотя бы раздел «Взлом пароля, когда известны некоторые символы».

              • XES:

                Перечитал обе статьи и пришел к такому выводу:

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

                Спасибо за помощь.

    • Alexey:

      То есть, у вас есть словарь и вы хотите просто поменять регистр букв? Неужели так трудно было просто написать «у меня есть словарь, и я хочу поменять регистр букв»? Зачем тогда морочите голову с маской? Это называется «Атака основанная на правилах» (Rule-based Attack).

      Допустим, есть файл с паролями passwords.txt:

      craig666
      Craig688

      Файл с правилами toggle.rute:

      T0
      T1
      T2
      T0T1
      T1T2
      T0T2
      T0T1T2

      T означает переключить регистр буквы на противоположный, а цифра означает номер символа.

      Тогда следующая команда:

      hashcat --stdout -r toggle.rute passwords.txt

      Даст следующий результат:

      Craig666
      cRaig666
      crAig666
      CRaig666
      cRAig666
      CrAig666
      CRAig666
      craig688
      CRaig688
      CrAig688
      cRaig688
      CRAig688
      crAig688
      cRAig688

      Атака на основе правил описана здесь (там перечислены все правила).

      • XES:

        Спасибо, этот метод то что нужно. Правда я не понял что за ограничение в 15 символов, пришлось помучаться, но в итоге все получилось, огромное спасибо!

        • Alexey:

          Нет никаких ограничений на количество символов, но есть на количество правил в одной строке. Их максимальное количество подняли до 31. Я уже поправил в той статье.

        • Сергей:

          Вы бы написали Вашу итоговую строку для тех кто будет потом читать.

    • Alexey:

      И ещё как раз должен подойти раздел «Атака с переключением регистра».

  11. Дмитрий:

    Здравствуйте Алексей! Очень Интересно читать ваши статьи,- но сам сейчас столкнулся с необходимостью создания словаря и не могу разобраться с маскпроцессором,- читаю ваши примеры и вроде все понятно, но когда пытаюсь редактировать, то программа либо дает ошибку по маске, либо вообще не запускается (Виндовс 7) , не могу разобраться с пользовательскими символами,- допустим пароль состоит из 20-ти знаков ( цифры от 0-9 и буквы маленькие abcdef ) , в одном варианте повторений символов нет, в другом два сивола могут повторяться два раза подряд ( допустим bb или 33 к примеру ), что мне нужно написать в командной строке? никак разобраться не могу ,- кстати в вашей статье про hascat я научился комбинировать графический интерфейс и командную строку 🙂 

    • Alexey:

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

      Если на каком-то этапе возникает ошибка, то пишите:

      1. Саму команду

      2. Чего вы хотели добиться этой командой

      3. Чем поведение фактическое поведение отличается от ожидаемого, приведите ошибку, если она возникла

      • Дмитрий:

        Спасибо! Вроде разобрался,- но обнаружил интерестную особенность программы,- то что не показывает число комбинаций при использовании опции q (кол-во повторяющихся символов), а также при использовании опции q не позволяет стартовать с определенного слова, скажите, а есть ли генераторы словарей для windows которые используют мощность видеокарт ?

        • Alexey:

          Вряд ли, это бессмысленно. На видеокартах выполняются громоздкие и однотипные вычисления. по подсчёту хешей, а другие операции в любом случае делаются на CPU. Генерация словаря обычно выполняется быстрее, чем скорость записи на диск, поэтому если вам кажется что медленно, попробуйте копать в этом направлении.

  12. Игорь:

    Здравствуйте! Как создать словарь из заданных слов, набора цифр и символов? Например есть слово food, набор цифр 123, набор символов /() . После генерации должны получиться следующие слова, например: food123/() или food/()123 и т.д. 

    • Alexey:

      Приветствую! Из вопроса многое неясно, поэтому рассмотрим разные варианты.

      1.

      Предположим, первым должно идти указанное слово, а затем ровно шесть символов из указанного набора символов, тогда подойдёт «Гибридная атака».

      Содержимое файла passwords.txt:

      food

      Команда для генерации словаря:

      hashcat -a 6 --stdout -1 '123/()' passwords.txt ?1?1?1?1?1?1

      Фрагмент вывода:

      food/3)3(/
      food)2)3(/
      food1(3)/)
      food2(3)/)
      food3(3)/)
      food(3)3(/
      food/(3)/)
      food)/)3(/
      food1)3)/)
      food2)3)/)
      food3)3)/)
      food(/)3(/
      food/)3)/)
      food)3)3(/

      2.

      Предположим (как это можно подумать из приведённых примеров), дано три слова «food», «123» и «/()» и нужно создать словарь из комбинации этих слов. Тогда подойдёт «Комбинаторная атака».

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

      3.

      Наконец, если нужно чтобы указанное слово «food» использовалось как есть, а символы из наборов подставлялись как перед, так и после слова, тогда нужно применять Атаку на основе правил. Она не очень проста для понимания (ближе к программированию), но позволяет делать что угодно со словами и символами:

      • Isak:

        Добрый день! Алексей, как составить словарь из 33 букв русского алфавита от 10 до 10 символов?

        • Alexey:

          Приветствую! При создании словарей с нелатинскими буквами вам нужно помнить о кодировке. Если пароль для зашифрованного файла в одной кодировке, а вы создаёте словарь в другой, то пароль никогда не совпадёт, поскольку с технической точки зрения две одинаковых строки на экране, но в разной кодировке, это совершенно разные вещи. Также смотрите статью «Как использовать Hashcat для взлома паролей, содержащих нелатинские символы (русские буквы в пароле, китайские иероглифы и пр.)».

          Также нужно помнить о количестве создаваемых кандидатов — словарь будет такого размера, что вы вряд ли хватит места чтобы разместить его на диске и количество кандидатов в пароле будет такого, что брут-форс затянется на слишком большое время.

          Количество строк в словаре: 6610 = 1,568336881×10¹⁸

          С учётом всего сказанного, команда, которая создаст словарь из больших и маленьких русских букв длиной 10 символов и в кодировке cp1251:

          hashcat -a 3 -1 /usr/share/doc/hashcat/charsets/special/Russian/ru_cp1251-special.hcchr --stdout ?1?1?1?1?1?1?1?1?1?1 > ru_cp1251.dic

          В этой команде:

          • -a 3 — атака по маске
          • -1 /usr/share/doc/hashcat/charsets/special/Russian/ru_cp1251-special.hcchr — файл с пользовательским набором символов — у вас может быть другой путь до него
          • --stdout — вместо брут-форса, только показать пароли
          • ?1?1?1?1?1?1?1?1?1?1 — маска на 10 пользовательских символов
          • > ru_cp1251.dic — сохранить словарь в указанный файл

          Но это теоретическая команда — её выполнение не завершиться никогда, т. к. слишком большое количество генерированных данных. Более того, её выполнение может и не начаться из-за нехватки ресурсов компьютера.

  13. ISAK:

    Алексей, здравствуйте!

    Если я хочу запустить Брут не создавая словарь только из маленьких букв Русского языка мне надо вот так команду написать:hashcat.exe -a 3 -1 /usr/share/doc/hashcat/charsets/special/Russian/ru_cp1251-special.hcchr -i --increment-min=10 --increment-max=10 -m 11300 hash.txt ?1?1?1?1?1?1?1?1?1?1

    ru_cp1251-special.hcchr я этот файл отредактировал оставив только маленькие буквы.  Спасибо

    • Alexey:

      Меня смущает расширение .exe и одновременное использование Linux пути. Часть «-i --increment-min=10 --increment-max=10» точно является лишней.

      Примерно так это должно быть:

      hashcat -a 3 -1 /usr/share/doc/hashcat/charsets/special/Russian/ru_cp1251-special.hcchr -m 11300 hash.txt ?1?1?1?1?1?1?1?1?1?1
      
  14. Аноним:

    а есть виндовая версия makeprocessor?

    • Alexey:

      Есть, смотрите на этой странице раздел «Установка в Windows» - достаточно распаковать архив и запустить в командной строке, всё уже скомпилировано.

  15. Дмитрий К:

    ПОдскажите пожалуйста как ограничить число перебора?

    К примеру разные варианты даты по маске ДД-ММ-ГГГГ: ?d?d-?d?d-?d?d?d но чтоб перебор был не в диапазоне 00-99, а 01-31, 01-12 и 1900-2021 соответственно.

    • Alexey:

      Приветствую! Такие словари умеет создавать программа pydictor.

      Но ещё проще словарь сделать следующим образом (он будет сохранён в файл dates.txt):

      echo {01..31}.{01..12}.{1900..2021} | tr " " "\n" > dates.txt

      Если хотите обойтись без создания словаря, то передавайте вывод предыдущие команды на стандартный ввод hashcat:

      echo {01..31}.{01..12}.{1900..2021} | tr " " "\n" | hashcat ……..
      
  16. Сергей:

    добрый день. можно ли как-то в maskprocessor разделить выходящий генерируемый словарь на несколько частей? например, частями по 1Гб

  17. Gena:

    Добрый день.
    Возможны ли такие условия генерации?
    1. Пароли ровно 100 символов т.е.. от 100 до 100.

    2. Всего два символа 0 и 1
    3. В пароле не должно идти более 5 символов "1" подряд, т.е. ..0111111.. уже недопустим

    4. в пароле не должно идти более одного символа "0" подряд т.е. ..001.. недопустим.

    • Alexey:

      Приветствую! Следующая команда выведет именно то, что вам нужно, но сколько на это понадобится времени я не знаю — скорее всего очень, ОЧЕНЬ долго — возможно, время будет примерно равно бесконечности (с точки зрения продолжительности человеческой жизни):

      maskprocessor -1 01 ?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1 | grep -v '00' | grep -v '111111'

      Пример выполнения команды, которая выводит пароли длиной в 15 символов по заданным условиям:

      maskprocessor -1 01 ?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1 | grep -v '00' | grep -v '111111'

      • Gena:

        Спасибо за развёрнутый ответ!
        К сожалению выдаёт ошибку "--occurrence-max must be set to at least 2"

        • Alexey:

          Не знаю, с чем связана ваша ошибка — вы действительно не указывали другие опции?

          Но зато эта ошибка напомнила мне про существование опции --seq-max=ЧИСЛО, которой можно установить максимальное количество одинаковой последовательности символов. В нашем случае мы можем установить 5, чтобы не выводились заведомо неподходящие варианты. Благодаря этой идеи, следующая команда сразу начинает выводить кандидаты в пароли длиной в 100 символов и соответствующие указанным критериям:

          maskprocessor -1 10 --seq-max=5 ?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1 | grep -v '00' | grep -v '111111'

  18. Max:

    Здравствуйте, Алексей, подскажите как создать словарь с такими условиями:
    1 .Пароль должен содержать 8 символов, в которых встречаются все Строчные и Заглавные буквы и Цифры.

    2. При этом в каждом пароле должы содержаться все 3 символа (т.е. исключить 1234abcd, ABCDefgh, ABCD5678 и тп, подходит ABcd1234)  

    3. В каждом из паролей могут Подряд идти не более двух одинаковых букв или двух одинаковых цифр и повтор может встречаться только Один раз, либо цифр, либо букв (исключить AAcd55gh, Abbcde22h, aa33efGh и тп, подходят: AbcDef77, AccdEfg8, AAc4efg8 и тп.) 
     

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *