
Генерируйте списки слов с помощью логики шаблонов и выражений.
Генерация словарей с использованием логики шаблонов и выражений
Установка • Документация • Использование • Участие
[!NOTE] Этот проект был переименован из
fuse/fuse-generatorвmapcharначиная с версии 7.0.2. Имя пакета PyPI, команда CLI и имя пакета Python были соответствующим образом изменены. Если вы использовали старое имя, пожалуйста, обновите ваши установки и импорты.
[!NOTE] Рекомендуется устанавливать через
pipxилиpipдля версии из PyPI.
| Метод | Примечания |
|---|---|
pipx install mapchar | Вместо pipx можно использовать pip |
git clone https://github.com/pwnfo/mapchar.git && cd mapchar && pip install . | Клонирование и установка напрямую из GitHub |
Для полного руководства, описания функций и продвинутых примеров посетите документацию.
Для генерации словаря из простого выражения:
mapchar '/l{2,4}'
Для объединения файлов с генераторами:
mapchar '^:^' names.txt pass.txt
Вывод можно обрабатывать, фильтровать и сохранять.
Общие параметры:
-h, --help показать это справочное сообщение и выйти
-v, --version показать информацию о версии и выйти
-S, --stats показать статистику по шаблону и выйти
-q, --quiet подавить необязательный вывод
-n, --non-interactive
пропустить запрос подтверждения перед выполнением
Параметры генерации:
-d, --delimiter <строка>
строка, вставляемая между сгенерированными записями
-b, --write-buffer <размер>
размер буфера вывода
-w, --workers <1-64> количество рабочих процессов (по умолчанию: 1)
-k, --flush-threshold <размер>
сброс вывода после достижения этого порога в байтах (по умолчанию: 512 КБ)
Параметры ввода:
-f, --file <путь> загрузить шаблоны из файла
-s, --start <слово> начать вывод с <слово>
-e, --end <слово> остановить вывод на <слово>
Параметры вывода:
-o, --output <путь> записать вывод в файл
-z, --compress <формат>
сжать вывод (поддерживается: gzip, bzip2, lzma)
-l, --compresslevel <уровень>
уровень сжатия для выбранного формата
[...] создают по одному элементу на позицию.Пример:
$ mapchar '/l{2,3}'
# вывод: aa, ab, ac, ..., ZY, ZZ
Пример: /l/l генерирует все двухбуквенные комбинации (верхний и нижний регистр).
[abc] выбирает один символ из a, b или c.| для разделения альтернативных целых слов внутри классов:
[admin|root|123] вставляет admin ИЛИ root ИЛИ 123 в этой позиции.|| для разделения выражений верхнего уровня:
mapchar 'admin/d||guest/d' объединяет два независимых шаблона.Вы можете проанализировать шаблон перед генерацией, используя флаг -S/--stats. Он показывает количество токенов, предполагаемый размер и детали фильтрации диапазона.
mapchar -S '/l{3}||/d{3}'
{N} — повторить ровно N раз{min,max} — повторить от min до max раз (включительно)? — опционально (0 или 1 раз)Примеры:
$ mapchar '[XYZ]{3}' # XXX, XXY, ..., ZZZ
$ mapchar '[XYZ]{2,5}' # XY, XZ, ..., XYZXY
$ mapchar 'Ryan?/d' # Rya0, Rya1, ..., Ryan9
$ mapchar '[XYZ]?Ryan' # Ryan, XRyan, YRyan, ZRyan
#[1-10] → генерирует 1,2,3,4,5,6,7,8,9,10#[1-10:2] → генерирует 1,3,5,7,9#[2-10:2] → генерирует 2,4,6,8,10Эти числовые диапазоны могут использоваться в любой позиции выражения.
Используйте ^ в выражении в качестве заполнителя для следующего аргумента файла. Каждый ^ использует один файл и перебирает его строки:
$ mapchar '^/d' names.txt
# вывод: Bob0, Bob1, ..., Ana0, Ana1, ...
$ mapchar '^-^' names.txt years.txt
# вывод: Bob-1990, Ana-1991, Ryan-1992, ...
Добавьте префикс // к имени файла, чтобы обрабатывать его как встроенное выражение, а не как путь к файлу.
Используйте <@name=expr> для вычисления выражения один раз на строку вывода и сохранения его, затем используйте повторно с <@name>.
В отличие от конкатенации, это создает зависимость, поэтому декартово произведение между определением и его ссылками не создается.
$ mapchar '<@d=/d>-<@d>'
# вывод: 0-0, 1-1, ..., 9-9
$ mapchar '<@x=^>:<@x>' words.txt
# вывод: foo:foo, bar:bar, ...
$ mapchar '<@n=/d{2}>_<@n>'
# вывод: 00_00, 01_01, ..., 99_99
Mapchar поддерживает сжатие на лету при записи файлов вывода.
# gzip (быстро, сбалансированно)
mapchar '/l{5}' -z gzip -o wordlist.txt.gz
# lzma (лучшее сжатие)
mapchar '/l{5}' -z lzma -o wordlist.txt.xz
# bzip2 (средний вариант)
mapchar '/l{5}' -z bzip2 -o wordlist.txt.bz2
Используйте \ для экранирования специальных символов.
$ mapchar '\/d/d'
# вывод: /d/0, /d/1, ..., /d/9
Мы приветствуем вклад в Mapchar! Будь то добавление новых функций, улучшение документации или исправление ошибок — ваша помощь ценится.
Не стесняйтесь открывать issue или отправлять pull request в нашем репозитории GitHub по адресу pwnfo/mapchar.
MIT © Ryan R. <[email protected]>
| Символ | Значение |
|---|
/l | буквы (a–z, A–Z) |
/a | строчные буквы (a–z) |
/A | заглавные буквы (A–Z) |
/d | цифры (0–9) |
/D | ненулевые цифры (1–9) |
/h | строчные шестнадцатеричные (0–9, a–f) |
/H | заглавные шестнадцатеричные (0–9, A–F) |
/s | пробел |
/o | восьмеричные цифры (0–7) |
/p | специальные символы |
/b | новая строка (\n) |