Генератор пользовательских словарей: краулит веб-сайт цели и собирает уникальные слова для последующих атак на пароли.
sudo apt install cewl # Или из исходников: git clone https://github.com/digininja/CeWL cd CeWL gem install bundler bundle install # Использование: ruby cewl.rb http://target.com -m 6 -w wordlist.txt
Copyright(c) 2026, Robin Wood robin@digi.ninja
На основе обсуждения в PaulDotCom (эпизод 129) о создании пользовательских списков слов путём обхода целевого веб-сайта и сбора уникальных слов, я решил написать CeWL — генератор пользовательских списков слов. CeWL — это приложение на Ruby, которое обходит заданный URL до указанной глубины, при необходимости переходя по внешним ссылкам, и возвращает список слов, которые затем могут использоваться в программах для подбора паролей, таких как John the Ripper.
По умолчанию CeWL ограничивается только указанным вами сайтом и проходит на глубину до 2 ссылок. Это поведение можно изменить, передав соответствующие аргументы. Будьте осторожны при установке большой глубины и разрешении перехода на внешние сайты — вы можете оказаться на множестве других доменов. Все слова длиной три символа и более выводятся в стандартный поток вывода (stdout). Эту минимальную длину можно увеличить, а слова можно записывать в файл вместо вывода на экран, что позволяет автоматизировать работу приложения.
У CeWL также есть сопутствующее приложение командной строки — FAB (Files Already Bagged, «Файлы уже упакованы»), которое использует те же методы извлечения метаданных для создания списков авторов/создателей из уже скачанных файлов.
Для тех, кто запускает CeWL с Ruby 2.7, могут появиться предупреждения в стиле:
.../ruby-2.7.0/gems/mime-types-3.2.2/lib/mime/types/logger.rb:30: warning: `_1' is reserved for numbered parameter; consider another name
Это связано с новой возможностью, введённой в версии 2.7, которая конфликтует с одной строкой кода в скрипте логгера из гема mime-types. Для этого есть обновление в репозитории гема, и, надеюсь, оно скоро будет выпущено. Пока что, насколько я могу судить, это предупреждение никак не влияет на работу CeWL. Если вы по эстетическим соображениям хотите скрыть предупреждение, можно запустить скрипт следующим образом:
ruby -W0 ./cewl.rb
Домашняя страница: https://digi.ninja/projects/cewl.php
GitHub: https://github.com/digininja/CeWL
Поскольку меня об этом спросили, CeWL произносится как «кул» (от английского «cool»).
Для работы CeWL необходимы следующие гемы (пакеты Ruby):
Самый простой способ установить эти гемы — использовать Bundler:
gem install bundler
bundle install
Альтернативно, вы можете установить их вручную командой:
gem install xxx
Для гема mini_exiftool также требуется установленное приложение exiftool.
git clone https://github.com/digininja/CeWL.git
cd CeWL
bundle install
chmod u+x ./cewl.rb
Создайте символьную ссылку (symlink):
sudo ln -s $(pwd)/cewl.rb /usr/local/bin/cewl
# Проверьте, запускается ли скрипт (должны вывести версию и справку)
./cewl.rb --version
# Если вы создали символьную ссылку или добавили в PATH, проверьте команду cewl
cewl --version
Страница проекта на моем сайте содержит советы по решению распространенных проблем, с которыми люди сталкивались при работе с CeWL — https://digi.ninja/projects/cewl.php
./cewl.rb --help
# ИЛИ
cewl --help
CeWL 6.2.1 (More Fixes) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
Использование: cewl [ОПЦИИ] ... <url>
ОПЦИИ:
-h, --help: Показать справку.
-k, --keep: Сохранить скачанный файл.
-d <x>,--depth <x>: Глубина обхода, по умолчанию 2.
-m, --min_word_length: Минимальная длина слова, по умолчанию 3.
-x, --max_word_length: Максимальная длина слова, по умолчанию не задана.
-o, --offsite: Разрешить обходчику посещать другие сайты.
--exclude: Файл со списком путей для исключения.
--allowed: Регулярное выражение, которому должен соответствовать путь для перехода по нему.
-w, --write: Записать вывод в файл.
-u, --ua <agent>: Пользовательский агент (User agent) для отправки.
-n, --no-words: Не выводить список слов.
-g <x>, --groups <x>: Также возвращать группы слов.
--lowercase: Преобразовать все разобранные слова в нижний регистр.
--with-numbers: Принимать также слова, содержащие цифры, а не только буквы.
--convert-umlauts: Конвертировать распространенные умлауты ISO-8859-1 (Latin-1) (ä-ae, ö-oe, ü-ue, ß-ss).
-a, --meta: Включить метаданные.
--meta_file file: Файл для вывода метаданных.
-e, --email: Включить адреса электронной почты.
--email_file <file>: Файл для вывода адресов электронной почты.
--meta-temp-dir <dir>: Временный каталог, используемый exiftool при разборе файлов, по умолчанию /tmp.
-c, --count: Показывать количество для каждого найденного слова.
-v, --verbose: Подробный вывод.
--debug: Дополнительная отладочная информация.
Аутентификация
--auth_type: Digest (дайджестная) или basic (базовая).
--auth_user: Имя пользователя для аутентификации.
--auth_pass: Пароль для аутентификации.
Поддержка прокси
--proxy_host: Хост прокси-сервера.
--proxy_port: Порт прокси-сервера, по умолчанию 8080.
--proxy_username: Имя пользователя для прокси, если требуется.
--proxy_password: Пароль для прокси, если требуется.
Заголовки
--header, -H: В формате имя:значение - можно передавать несколько.
Захват структуры URL
--capture-paths: Добавить компоненты пути URL в список слов.
--capture-subdomains: Добавить компоненты поддоменов в список слов.
--capture-domain: Добавить основной домен в список слов.
--capture-url-structure: Захватить домен, пути и поддомены (всю структуру URL).
<url>: Сайт для обхода.
Для быстрого использования CeWL с Docker можно использовать официальный образ ghcr.io/digininja/cewl:
docker run -it --rm -v "${PWD}:/host" ghcr.io/digininja/cewl [ОПЦИИ] ... <url>
Вы также можете собрать его локально:
docker build -t cewl .
docker run -it --rm -v "${PWD}:/host" cewl [ОПЦИИ] ... <url>
Если вы хотите увидеть это в действии, посмотрите мое видео Запуск CeWL в Docker на Kali.
Этот проект распространяется под лицензией Creative Commons Attribution-Share Alike 2.0 UK: England & Wales
http://creativecommons.org/licenses/by-sa/2.0/uk/
Альтернативно, вместо оригинальной лицензии вы можете использовать GPL-3+.