[M] ContentDiscovery

Общее описание

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

ContentDiscovery является обёрткой вокруг DafsDict, которая генерирует словарь искомых объектов. Как только словарь готов, запускается DafsDict и начинает поиск. Соответственно, модуль ContentDiscovery имеет логику и параметры модуля DafsDict. Он лишь добавляет к ним несколько параметров описанных ниже.

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

В начале работы модуль генерирует словарь куда складывает множество искомых имён генерируемых по следующим схемам:

  1. Годы с 2010 по текущий

  2. Имена из базы bases/content-discovery/base.txt в чистом виде и с расширениями из списка опции «--discovery-exts».

  3. Имена из базы bases/content-discovery/tools-and-others.txt

  4. Все комбинации букв нижнего регистра и цифр длиною до 2 символов включительно (маска ?l?d,1,2). В чистом виде и с расширениями из списка опции «--discovery-exts»

Если вы указали список уже известных URL в параметре «--urls-file», то на его основе также генерируются искомые имена. Каждый URL разбивается на отдельные части (/a/b/c => a, b, c), при этом имя файла учитывается как полностью, так и без расширения (/a/log.txt => a, log, log.txt). Для каждой из частей имени генерируются варианты по следующим схемам:

  1. Чистый вид (без модификаций).

  2. Варианты резервных копий имени. Шаблоны для них берутся из bases/content-discovery/backup-schemas.txt. В каждом шаблоне подстрока «|name|» заменяется на целевое имя.

  3. Варианты с изменёнными цифрами в конце и начале имени. Подробно об этом читайте в разделе «Генерация вариантов имён содержащих числа».

  4. Варианты с изменёнными буквами в конце и начале имени. Подробно об этом читайте в разделе «Генерация вариантов имён содержащих буквы».

  5. Варианты с расширениями из списка опции «--discovery-exts»

Обратите внимание на то, что поиск происходит в конкретной директории, путь к которой вы указали в параметре «--template». Модуль проверяет в ней имена директорий/файлов и их модификации. Пути из списка ранее найденных URL не проверяются, лишь отдельные имена на которые они разбиваются.

Генерация вариантов имён содержащих числа

Если в начале имени присутствует цифра, то генерируются все варианты имени в котором вместо этой цифры ставятся числа от 1 до 9 включительно (1admin => 2admin, 3admin, …, 9admin). Аналогично с цифрами в конце имени (admin1=>admin2,...,admin9). Это касается и имён файлов в которых цифра идёт перед расширением (admin1.php => admin2.php, …, admin9.php). Если цифры находятся и в начале и в конце имени, то вариации для них генерируются с одинаковыми цифрами в обоих местах (1admin1 => 2admin2, 3admin3,…). Обратите внимание на то, что меняются только крайние цифры. Например, в имени «12admin34.php» будут изменены цифры 1 и 4. т. к. они находятся по краям имени.

Генерация вариантов имён содержащих буквы

Если в начале имени присутствует буква, то генерируются все варианты имени в котором вместо этой буквы ставятся другие буквы того же регистра (admin => bdmin, cdmin, …, zdmin). Аналогично с буквами в конце имени (admin => admia,...,admib). Это касается и имён файлов в которых буква идёт перед расширением (admin.php => admia.php, …, admiz.php).

Примеры

Простой запуск для поиска новых URL:

./ws.py ContentDiscovery --template http://simple.polygon.web-scout.online/@ --urls-file bases/demo/cd-urls.txt

Опции (* - обязательные)

R - присутствует ли в raw режиме S - присутствует ли в selenium режиме.

Имя

По умолчанию

R

S

Описание

--urls-file

Да

Да

Путь к списку уже известных URL. Целевой хост и хост этих URL не обязательно должны совпадать.

--discovery-exts

php,html,js,log,txt

Да

Да

Список расширений для генерации искомых имён.

Остальные опции вы можете найти в описании модуля DafsDict.