Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dirmap — Продвинутый инструмент для сканирования web-каталогов и файлов, который будет мощнее, чем DirBuster, Dirsearch, cansina и Yu Jian.Продвинутый инструмент для сканирования web-каталогов и файлов, функции которого будут сильнее, чем DirBuster, Dirsearch, cansina, 御剑. | Kitploit
Инструменты/GitHubGitHub/h4ckforjob/dirmap
РазведкаСканеры уязвимостейСбор информацииВеб-безопасностьТестирование на Проникновение
GitHubh4ckforjob/dirmap

dirmap

Продвинутый инструмент для сканирования web-каталогов и файлов, который будет мощнее, чем DirBuster, Dirsearch, cansina и Yu Jian.Продвинутый инструмент для сканирования web-каталогов и файлов, функции которого будут сильнее, чем DirBuster, Dirsearch, cansina, 御剑.

Репозиторий
3.4k5551 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Dirmap

English

Продвинутый инструмент для сканирования веб-каталогов, который будет мощнее DirBuster, Dirsearch, cansina, Yujian.

dirmap

Анализ требований

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

  • Параллельный движок
  • Возможность использования словарей
  • Возможность полного перебора (bruteforce)
  • Возможность сканирования с динамической генерацией словаря на основе обхода страниц
  • Возможность Fuzz-сканирования
  • Настраиваемые запросы
  • Настраиваемая обработка ответов...

Давайте посмотрим на особенности Dirmap.

Особенности

  1. Поддержка n целей * n нагрузок (payload) параллельно
  2. Поддержка рекурсивного сканирования
  3. Поддержка настраиваемых кодов состояния для рекурсивного сканирования
  4. Поддержка сканирования с (одним | несколькими) словарями
  5. Поддержка перебора по настраиваемому набору символов
  6. Поддержка динамического словаря на основе обхода страниц (crawler)
  7. Поддержка Fuzz-сканирования с настраиваемыми тегами в URL цели
  8. Настраиваемый User-Agent для запросов
  9. Настраиваемая случайная задержка между запросами
  10. Настраиваемое время ожидания запроса
  11. Настраиваемый прокси для запросов
  12. Поддержка регулярных выражений для фильтрации ложных 404-страниц
  13. Настраиваемые коды состояния ответа для обработки
  14. Настраиваемый пропуск страниц определенного размера
  15. Настраиваемое отображение Content-Type
  16. Настраиваемое отображение размера страницы
  17. Сохранение результатов с удалением дубликатов по домену

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

Подготовка среды

root@kitploit:~
git clone https://github.com/H4ckForJob/dirmap.git && cd dirmap && python3 -m pip install -r requirement.txt

Быстрый старт

Указание цели

Одна цель, по умолчанию http

root@kitploit:~
python3 dirmap.py -i https://target.com -lcf
root@kitploit:~
python3 dirmap.py -i 192.168.1.1 -lcf

Подсеть (в формате CIDR)

root@kitploit:~
python3 dirmap.py -i 192.168.1.0/24 -lcf

Диапазон адресов

root@kitploit:~
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf

Чтение из файла

root@kitploit:~
python3 dirmap.py -iF targets.txt -lcf

В targets.txt поддерживаются указанные выше форматы.

Сохранение результатов

  1. Результаты автоматически сохраняются в папку output в корне проекта.
  2. Для каждой цели создается txt-файл с именем домен_цели.txt.
  3. Результаты автоматически очищаются от дубликатов – не беспокойтесь об избыточности.

Расширенное использование

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

В настоящее время подробная конфигурация выполняется только через загрузку конфигурационного файла. Подробная настройка через параметры командной строки не поддерживается!

Отредактируйте файл dirmap.conf в корне проекта для настройки.

Подробное описание конфигурации dirmap.conf:

root@kitploit:~
#Настройки рекурсивного сканирования
[RecursiveScan]
#Включить рекурсивное сканирование: 0 - выключено, 1 - включено
conf.recursive_scan = 0
#При этих кодах состояния запускать рекурсивное сканирование. По умолчанию [301,403]
conf.recursive_status_code = [301,403]
#Если URL превышает эту длину, выйти из рекурсии
conf.recursive_scan_max_url_length = 60
#Эти расширения не сканировать рекурсивно
conf.recursive_blacklist_exts = ["html",'htm','shtml','png','jpg','webp','bmp','js','css','pdf','ini','mp3','mp4']
#Указать каталоги для исключения из сканирования. По умолчанию пусто. Пример: ['/test1','/test2']
#conf.exclude_subdirs = ['/test1','/test2']
conf.exclude_subdirs = ""

#Настройки режима сканирования (4 режима, одновременно можно выбрать только один)
[ScanModeHandler]
#Режим словаря: 0 - выключен, 1 - один словарь, 2 - несколько словарей
conf.dict_mode = 1
#Путь к словарю для режима одного словаря
conf.dict_mode_load_single_dict = "dict_mode_dict.txt"
#Путь к каталогу словарей для режима нескольких словарей, по умолчанию dictmult
conf.dict_mode_load_mult_dict = "dictmult"
#Режим перебора: 0 - выключен, 1 - включен
conf.blast_mode = 0
#Минимальная длина генерируемого словаря. По умолчанию 3
conf.blast_mode_min = 3
#Максимальная длина генерируемого словаря. По умолчанию 3
conf.blast_mode_max = 3
#Набор символов по умолчанию: a-z. Пока не используется.
conf.blast_mode_az = "abcdefghijklmnopqrstuvwxyz"
#Набор символов по умолчанию: 0-9. Пока не используется.
conf.blast_mode_num = "0123456789"
#Пользовательский набор символов. По умолчанию "abc". Используется для построения словаря.
conf.blast_mode_custom_charset = "abc"
#Пользовательский набор символов для возобновления. По умолчанию пусто.
conf.blast_mode_resume_charset = ""
#Режим обхода (crawler): 0 - выключен, 1 - включен
conf.crawl_mode = 0
#Словарь суффиксов для генерации динамических нагрузок для чувствительных файлов
conf.crawl_mode_dynamic_fuzz_suffix = "crawl_mode_suffix.txt"
#Разбор файла robots.txt. Пока не реализовано.
conf.crawl_mode_parse_robots = 0
#XPath-выражение для разбора HTML-страниц
conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"
#Включить динамическую генерацию словаря на основе обхода. По умолчанию 1 (включено). Другие значения: 0 - выключено, 1 - включено.
conf.crawl_mode_dynamic_fuzz = 1
#Режим Fuzz: 0 - выключен, 1 - один словарь, 2 - несколько словарей
conf.fuzz_mode = 0
#Путь к словарю для режима одного словаря.
conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"
#Путь к каталогу словарей для режима нескольких словарей. По умолчанию: fuzzmult
conf.fuzz_mode_load_mult_dict = "fuzzmult"
#Метка Fuzz. По умолчанию {dir}. Тег {dir} используется как точка вставки словаря: http://target.com/{dir}.php заменяется на http://target.com/каждая_строка_словаря.php. Другие примеры: {dir}; {ext}
#conf.fuzz_mode_label = "{ext}"
conf.fuzz_mode_label = "{dir}"

#Обработка нагрузок. Пока не реализовано.
[PayloadHandler]

#Настройки запросов
[RequestHandler]
#Пользовательские заголовки запроса. По умолчанию пусто. Пример: test1=test1,test2=test2
#conf.request_headers = "test1=test1,test2=test2"
conf.request_headers = ""
#Пользовательский User-Agent. По умолчанию UA браузера Chrome.
conf.request_header_ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
#Пользовательский Cookie. По умолчанию пусто (не устанавливать). Пример: cookie1=cookie1; cookie2=cookie2;
#conf.request_header_cookie = "cookie1=cookie1; cookie2=cookie2"
conf.request_header_cookie = ""
#Пользовательская аутентификация 401. Пока не реализовано (функция пользовательских заголовков может это покрыть).
conf.request_header_401_auth = ""
#Метод запроса. По умолчанию get. Другие значения: get; head
#conf.request_method = "head"
conf.request_method = "get"
#Тайм-аут запроса в секундах. По умолчанию 3.
conf.request_timeout = 3
#Случайная задержка (0-x) секунд перед отправкой запроса. Должна быть целым числом. По умолчанию 0 (без задержки).
conf.request_delay = 0
#Количество потоков/корутин для одной цели. По умолчанию 30.
conf.request_limit = 30
#Максимальное количество повторных попыток. Пока не реализовано.
conf.request_max_retries = 1
#Постоянное соединение. Использовать session(). Пока не реализовано.
conf.request_persistent_connect = 0
#Перенаправление 302. По умолчанию False (не перенаправлять). Другие значения: True; False
conf.redirection_302 = False
#Суффикс, добавляемый к нагрузке. По умолчанию пусто (не добавлять). Примеры: txt; php; asp; jsp
#conf.file_extension = "txt"
conf.file_extension = ""

#Обработка ответов
[ResponseHandler]
#Коды состояния ответа для записи. По умолчанию [200] (только 200). Пример: [200,403,301]
#conf.response_status_code = [200,403,301]
conf.response_status_code = [200]
#Записывать заголовок Content-Type в ответе. По умолчанию 1 (записывать).
#conf.response_header_content_type = 0
conf.response_header_content_type = 1
#Записывать размер страницы. По умолчанию 1 (записывать).
#conf.response_size = 0
conf.response_size = 1
#Автоматически обнаруживать страницу 404. По умолчанию True (включено). Другие значения: True; False
#conf.auto_check_404_page = False
conf.auto_check_404_page = True
#Пользовательское регулярное выражение для страницы 503. Пока не реализовано. Вероятно, будет удалено.
#conf.custom_503_page = "page 503"
conf.custom_503_page = ""
#Пользовательское регулярное выражение для сопоставления содержимого страницы.
#conf.custom_response_page = "([0-9]){3}([a-z]){3}test"
conf.custom_response_page = ""
#Пропускать страницы размером x. Если не нужно, установите "None". По умолчанию "None". Примеры: None; 0b; 1k; 1m
#conf.skip_size = "0b"
conf.skip_size = "None"

#Прокси
[ProxyHandler]
#Настройка прокси. По умолчанию "None" (без прокси). Пример: {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}
#conf.proxy_server = {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}
conf.proxy_server = None

#Отладка
[DebugMode]
#Вывести нагрузки и выйти.
conf.debug = 0

#Проверка обновлений
[CheckUpdate]
#Получить обновления с GitHub. Пока не реализовано.
conf.update = 0

TODO

  • Парсинг аргументов командной строки для глобальной инициализации
  • Инициализация движка
    • Установка количества потоков
  • Инициализация целей
    • Автоматический разбор и обработка входного формата (-i, inputTarget)
      • IP
      • Домен
      • URL
      • IP/MASK
      • IP Start-End
    • Чтение из файла (-iF, inputLocalFile)
  • Инициализация переборщика
    • Способ загрузки конфигурации
      • Чтение значений параметров командной строки
      • Загрузка файла конфигурации (-lcf, loadConfigFile)

Файлы словарей по умолчанию

Файлы словарей находятся в папке data в корне проекта.

  1. dict_mode_dict.txt Словарь для «режима словаря», используется словарь dirsearch по умолчанию.
  2. crawl_mode_suffix.txt Словарь для «режима обхода», используется словарь FileSensor по умолчанию.
  3. fuzz_mode_dir.txt Словарь для «режима Fuzz», используется словарь DirBuster по умолчанию.
  4. fuzz_mode_ext.txt Словарь для «режима Fuzz», создан на основе распространенных расширений.
  5. dictmult Директория, содержащая несколько словарей для «режима словаря» по умолчанию: BAK.min.txt (малый словарь резервных копий), BAK.txt (большой словарь резервных копий), LEAKS.txt (словарь файлов с утечкой информации).
  6. fuzzmult Директория, содержащая несколько словарей для «режима Fuzz» по умолчанию: fuzz_mode_dir.txt (стандартный каталог), fuzz_mode_ext.txt (стандартные расширения).

Известные недостатки

  1. В «режиме обхода» сканируется только текущая страница цели для генерации динамического словаря. В будущем планируется разделить «модуль обхода» и «функцию генерации динамического словаря».
  2. Ошибка в строке 517 bar.log.start() в bruter.py. Решение: установите progressbar2. Удалите progressbar во избежание конфликта имен модулей. Спасибо неизвестному пользователю за напоминание.
root@kitploit:~
Выполните команду:
python3 -m pip uninstall progressbar
python3 -m pip install progressbar2

Поддержка и обслуживание

  1. Если возникнут проблемы при использовании, создавайте issue.
  2. Проект поддерживается, в будущем будут добавлены новые функции, подробнее в списке TODO (неотмеченные пункты).

Благодарности

При разработке dirmap были заимствованы идеи и принципы многих отличных проектов с открытым исходным кодом. Выражаю им благодарность.

  • Sqlmap
  • POC-T
  • Saucerframe
  • gwhatweb
  • dirsearch
  • cansina
  • weakfilescan
  • FileSensor
  • BBscan
  • werdy

Контакты

mail: [email protected]

donate

Скачать инструмент
  • Режим рекурсивного сканирования (RecursiveScan)
    • Рекурсивное сканирование (-rs, recursive_scan)
    • Коды состояния для рекурсии (-rd, recursive_status_code)
    • Исключение каталогов (-es, exclude_subdirs)
  • Режимы сканирования (ScanModeHandler)
    • Режим словаря (-dm, dict_mode)
      • Загрузка одного словаря (-dmlsd, dict_mode_load_single_dict)
      • Загрузка нескольких словарей (-dmlmd, dict_mode_load_mult_dict)
    • Режим перебора (-bm, blast_mode)
      • Диапазон длины перебора (обязательно)
        • Минимальная длина (-bmmin, blast_mode_min)
        • Максимальная длина (-bmmax, blast_mode_max)
      • На основе набора символов по умолчанию
        • На основе a-z
        • На основе 0-9
      • На основе пользовательского набора символов (-bmcc, blast_mode_custom_charset)
      • Возобновление генерации нагрузок с точки останова (-bmrc, blast_mode_resume_charset)
    • Режим обхода (-cm, crawl_mode)
      • Пользовательские теги для разбора (-cmph, crawl_mode_parse_html) (a:href, img:src, form:action, script:src, iframe:src, div:src, frame:src, embed:src)
      • Разбор robots.txt (-cmpr, crawl_mode_parse_robots)
      • Динамическое Fuzz-сканирование на основе обхода (-cmdf, crawl_mode_dynamic_fuzz)
    • Режим Fuzz (-fm, fuzz_mode)
      • Fuzz с одним словарем (-fmlsd, fuzz_mode_load_single_dict)
      • Fuzz с несколькими словарями (-fmlmd, fuzz_mode_load_mult_dict)
      • Тег Fuzz (-fml, fuzz_mode_label)
  • Оптимизация запросов (RequestHandler)
    • Пользовательский тайм-аут (-rt, request_timeout)
    • Пользовательская задержка (-rd, request_delay)
    • Ограничение количества корутин для одной цели (-rl, request_limit)
    • Ограничение количества повторных попыток (-rmr, request_max_retries)
    • Постоянное HTTP-соединение (-rpc, request_persistent_connect)
    • Пользовательский метод запроса (-rm, request_method) (get, head)
    • Обработка кода 302 (-r3, redirection_302) (перенаправлять или нет)
    • Пользовательские заголовки
      • Пользовательские прочие заголовки (-rh, request_headers) (например, для аутентификации 401)
      • Пользовательский UA (-rhua, request_header_ua)
      • Пользовательский Cookie (-rhc, request_header_cookie)
  • Обработка словаря (PayloadHandler)
    • Обработка словаря (payload - удаление слэша)
    • Обработка словаря (payload - добавление слэша в начале)
    • Обработка словаря (payload - капитализация первой буквы)
    • Обработка словаря (payload - удаление расширения)
    • Обработка словаря (payload - удаление не буквенно-цифровых символов)
  • Обработка ответов (ResponseHandler)
    • Пропуск файлов размером x байт (-ss, skip_size)
    • Автоматическое обнаружение страницы 404 (-ac4p, auto_check_404_page)
    • Пользовательская страница 503 (-c5p, custom_503_page)
    • Пользовательское регулярное выражение для сопоставления содержимого ответа и выполнения действий
      • Пользовательское регулярное выражение для сопоставления ответа (-crp, custom_response_page)
      • Какое-то действие (пока не определено)
    • Вывод результатов для указанных кодов состояния (-rsc, response_status_code)
    • Вывод payload в виде полного пути (по умолчанию полный URL)
    • Отображение content-type в результатах
    • Автоматическое сохранение результатов без дубликатов
  • Обработка состояния (StatusHandler)
    • Отображение состояния (ожидание запуска, выполняется, приостановлено, ошибка, завершено)
    • Отображение прогресса
    • Управление состоянием (запуск, пауза, продолжение, остановка)
    • Модуль возобновления (пока не настроен)
    • Возобновление с точки останова
    • Возобновление с выбранной строки
  • Модуль ведения журнала (ScanLogHandler)
    • Журнал сканирования
    • Журнал ошибок
  • Прокси (ProxyHandler)
    • Одиночный прокси (-ps, proxy_server)
    • Пул прокси
  • Режим отладки (DebugMode)
    • debug (--debug)
  • Проверка обновлений (CheckUpdate)
    • update (--update)