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

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

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

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

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

Категории

Все категории
Loading categories
findcdn — Сканирует домены, чтобы определить, какую сеть доставки контента (CDN) они используют, путём фингерпринтинга HTTPS-заголовков, записей CNAME и данных WHOIS, с выводом в формате JSON и поддержкой модулей. | Kitploit
Инструменты/GitHubGitHub/cisagov/findcdn
OSINT (Разведка открытых источников)РазведкаКартирование сетиСбор информацииУтилиты и фреймворкиПодмена Цифрового ОтпечаткаАнализ DNS
GitHubcisagov/findcdn

findcdn

Сканирует домены, чтобы определить, какую сеть доставки контента (CDN) они используют, путём фингерпринтинга HTTPS-заголовков, записей CNAME и данных WHOIS, с выводом в формате JSON и поддержкой модулей.

Репозиторий
12323131 месяц назадПроверено Kitploit

Популярное

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

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

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

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

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

findcdn

GitHub Build Status Coverage Status Total alerts Language grade: Python Known Vulnerabilities

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

findcdn помогает пользователям инструмента точно определить, какую CDN использует домен. Список поддерживаемых доменов приведён в файле cdn_config.py в репозитории. Библиотека может быть реализована как автономный инструмент или как импортируемый модуль в вашем проекте. В обоих случаях результаты можно записать в выходной файл.

Начало работы

findcdn требует Python 3.7+. Python 2 не поддерживается.

findcdn можно установить как модуль с помощью pip и файла requirements.txt из репозитория.

Установка в качестве модуля

findcdn можно установить через pip:

root@kitploit:~
pip install --requirement requirements.txt

После этого его можно запускать напрямую:

root@kitploit:~
findcdn list github.com

Либо вы можете быстро установить его в любой проект с помощью:

root@kitploit:~
pip install git+https://github.com/cisagov/findcdn.git

Примечание: Рекомендуется использовать виртуальное окружение Python для установки модулей и поддержания чистоты окружения. Если вы хотите это сделать, вам понадобятся pyenv и плагин pyenv-virtualenv перед установкой модуля.

Автономное использование и примеры

root@kitploit:~
findcdn file <fileIn> [options]
findcdn list  <domain>... [options]
findcdn (-h | --help)

findcnd -h
findcdn file domains.txt -o output_cdn.txt -t 17 -d
findcdn list dhs.gov cisa.gov -o output_cnd.txt -v
findcdn list cisa.gov

Опции

root@kitploit:~
  -h --help                    Show this message.
  --version                    Show the current version.
  -o FILE --output=FILE        If specified, then the JSON output file will be
                               created at the specified value.
  -v --verbose                 Includes additional print statements.
  --all                        Includes domains with and without a CDN
                               in output.
  -d --double                  Run the checks twice to increase accuracy.
  -t --threads=<thread_count>  Number of threads, otherwise use default.
  --timeout=<timeout>          Max duration in seconds to wait for a domain to
                               conclude processing, otherwise use default.
  --user_agent=<user_agent>    Set the user agent to use, otherwise
                               use default.

Пример вывода

root@kitploit:~
user2@ubuntu:~$ findcdn list asu.edu -t 7 --double
Using 7 threads.
[Pending: 0 jobs]==[Threads: 2]: 100%|███████████████████████████████| 2/2 [00:00<00:00,  2.22it/s]
{
    "date": "06/19/2020, 13:00:38",
    "CDN_count": "1",
    "domains": {
        "asu.edu": {
            "IP": "'104.16.50.14'",
            "cdns": "'.cloudflare.com'",
            "cdns_by_names": "'Cloudflare'"
        }
    }
}
Domain processing completed.
1 domains had CDN's out of 1.

asciicast

Использование в качестве библиотеки

Поскольку findcdn можно установить как модуль, его возможности обнаружения CDN можно вызывать и реализовывать в любом проекте. Сначала импортируйте findcdn в ваш проект, как показано выше. Затем передайте ему список доменов для анализа. После обработки программа вернёт объект JSON, содержащий входные домены и используемые ими CDN.

Работа findcdn определяется переданными опциями; текущие возможные опции и пример приведены ниже для вашего удобства:

root@kitploit:~
findcdn.main(
    domain_list: List[str],  # List of domains to search
    output_path: str = None,  # if included, output results to JSON
    verbose: bool = False,  # Verbose mode (more printing!)
    all_domains: bool = False,  # Includes domains that dont have cdn's in the output
    interactive: bool = False,  # Includes a progress bar (normally used for command line)
    double_in: bool = False,  #D ouble the number of tries on a domain to increase accuracy
    threads: int = THREADS,  # Number of threads to use
    timeout: int = TIMEOUT,  # How long to wait on a domain
    user_agent: str = USER_AGENT,  # User Agent to use
)

Пример

root@kitploit:~
import findcdn
import json

domains = ['google.com', 'cisa.gov', 'censys.io', 'yahoo.com', 'pbs.org', 'github.com']
resp_json = findcdn.main(domains, output_path="output.json", double_in=True, threads=23)

dumped_json = json.loads(resp_json)

for domain in dumped_json['domains']:
    print(f"{domain} has CDNs:\n {dumped_json['domains'][domain]['cdns']}")

Как это работает

findcdn разделён на три части:

  • основной файл запуска findcdn
    • Проверяет и упорядочивает входные домены
    • Организует использование CDN Engine с помощью списка доменов
    • Выводит CDN доменов в JSON в stdout и в файл, если он выбран
  • CDN Engine
    • Организует все домены в «пот»
    • Chef использует библиотеку CDN Detection для получения всех CDN для каждого домена
    • Затем Chef запускает анализ, чтобы установить булево значение has_cdn, если он обнаруживает, что домен имеет CDN, после чего возвращает список доменов в файл запуска
  • CDN Detection
    • Собирает данные из:
      • Заголовков HTTPS-сервера
      • Записей CNAME
      • Данных WHOIS
    • По каждому из них он запускает сканирование отпечатков для идентификации любых CDN, определённых в cdn_config.py.

История

Изначальной целью этого инструмента было автоматическое определение того, можно ли использовать домен, использующий CDN, для фронтинга. Из-за значительных накладных расходов на обнаружение фронтинга мы изменили направление разработки этого инструмента, сделав его исключительно инструментом обнаружения CDN. Мы используем нашу wiki, чтобы дополнительно описать, что такое Domain Fronting, наши исследовательские заметки, проектные решения и плейбуки для фронтинга конкретных доменов. Если вы найдёте дополнительные домены, пригодные для фронтинга, или какие-либо недостатки в текущих плейбуках, пожалуйста, рассмотрите возможность внести вклад!

Краткое описание изменений проекта

  • Теперь проект предназначен для обнаружения CDN.
    • Определение возможности фронтинга было неосуществимым для каждого CDN-провайдера.
  • Ресурсы, заметки и плейбуки теперь доступны в wiki этого репозитория.
  • Любые отзывы, улучшения или дополнительные плейбуки всегда приветствуются.

Дополнительная информация

Дополнительная информация находится на нашей странице wiki. Мы призываем вас оставлять запросы на функции или вносить вклад в виде всего, что вы хотели бы видеть добавленным в проект или wiki.

Это может быть любое из следующего:

  • Информация, относящаяся к domain fronting
  • Плейбуки для фронтинга различных доменов
  • Улучшенные методы обнаружения CDN
  • Общие обновления текущих страниц wiki

Вклад

Мы приветствуем вклад! Пожалуйста, см. CONTRIBUTING.md для подробностей.

Лицензия

Этот проект находится во всемирном общественном достоянии.

Этот проект находится в общественном достоянии в Соединённых Штатах, а авторские и смежные права на произведение во всём мире отказываются через CC0 1.0 Universal public domain dedication.

Все вклады в этот проект будут выпущены под посвящением CC0. Отправляя pull request, вы соглашаетесь соблюдать этот отказ от авторских прав.

Скачать инструмент