Доброго времени суток, Хабр! Так как я всё еще нахожусь на творческих каникулах, то имею возможность со всей силы пилить собственные проекты. Одним из таких проектов является PhishIntel, о котором я рассказывал в прошлой статье. Но так уж получилось, что я его полностью переписал, а значит информацию о возможностях следует обновить.

PhishIntel написан на Python и немного приправлен Go, не требует установки дополнительных библиотек, запускается полностью готовым к бою одной командой.

python3 main.py

Теперь его главная задача: быстро получить первоначальную информационную базу о целевом ресурсе, с которой детективы, аналитики, и разного рода OSINT‑специалисты смогут работать дальше.

При запуске программы будет доступно интерактивное меню, в котором потребуется выбрать язык, и далее воспользоваться нужным инструментом. Проверка по username и email являются дополнительными, поэтому рассматривать будем только основной функционал по поиску информации на сайте.

Сбор данных с целевого ресурса представлыет собой краулер страниц, который рекурсивно обходит заданное количество страниц с соответствующей глубиной, и количеством параллельных запросов, собирая все что похоже на телефонные номера, электронную почту, криптокошельки, и адреса. Кроме того, собирается информация о домене. Вместе с тем происходит сканирование небольшого количества популярных портов, с целью определения доступности, и технологии за ними. Для этого модуля и был использован Go.

Через несколько секунд основной результат сохраняется в структурированном JSON‑отчёте, но есть возможность сохранить его краткую форму в более читаемом HTML‑формате. Тогда вы увидете еще и файл примерно с таким содержимым:

В стандартный отчет входят:

  • email‑адреса;

  • телефоны по российским и американским форматам;

  • телефоны из HTML‑полей tel, phone, telephone, mobile и аналогов;

  • адреса из специализированных полей и строк с явными адресными признаками;

  • источники только тех страниц, где найдены контакты;

  • внешние домены;

  • внешние API endpoint‑ы;

  • внешние JavaScript‑файлы;

  • агрегированные счётчики обхода;

  • DNS, IP и reverse DNS;

  • RDAP и WHOIS;

  • TLS‑сертификат;

  • цепочка перенаправлений;

  • найденные поддомены;

  • локальная история DNS/TLS.

  • ограниченное сканирование TCP‑портов исходного домена и определение технологий.

Что касается последнего, конечно, это не Nmap, но для общей информации вполне себе сойдет. Ранее PhishIntel включал в отчет работу активных сканеров, но я посчитал это излишеством. Все же это отдельная ступень работы. Хотя ничего не мешает добавить работу со сканерами в отдельный раздел, чтобы упростить возню со скриптами. Если в этом есть неоходимость.

Отдельно хочу отметить, что для работы программы не требуется обязательно заполнять .env. Но если вы понимаете. что делаете, хотите изменить стандартные настройки, добавить юзер агентов или прокси, заполните его в соответствии с примером .env.example.

Кроме того, вы легко можете изменить поведение сканера портов, дописав нужный функционал в модуль Go, и скомпилировав новый бинарник. Краткая документация по этому поводу лежит в директории сканера.

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

Репозиторий проекта

Благодарю за внимание.

Комментарии (7)


  1. Sergey2455
    17.09.2026 19:28

    весьма интересно


  1. sergey2212
    17.09.2026 19:28

    А вот как то регулировать то что ищешь есть возможность? К примеру не нужны контакты но интересен сам источник. Открытые порты и технологии, Информация об IP и так далее.

    Например как пробивка по ип адресу - чей он кто провайдер whois вобщем
    Так же еще классно было бы подцепить на чем сайт собран. Часто в работе пользуюсь ищу эту инфу через плагин а тут все бы в одном месте. Мне кажется очень многим бы пригодилось - ничего подобного нет сейчас кажется.

    Интерфейс приятный. Все по существу. Минимализм. Вобщем успехов



    1. it_police Автор
      17.09.2026 19:28

      Информация по IP, DNS, технологиям на портах есть. А вот на чем собран сайт я выпилил, кстати, пока переписывал. Запилю обратно, большое спасибо.


  1. unit42
    17.09.2026 19:28

    Первая попытка сломалась на IPv6.

    Запустил code analyzer, вот вердикт:

    • The infinite-loop test — nothing else in the suite can run until it's gone.

    • The three silent-failure bugs: proxy context=, forced SMTP probing, missing wordlist files (either ship them or delete the feature and the README claim).

    • Wire domain-scan into registertools() or cut scan.py/app/main.py and ~800 lines of unreachable analyzers — right now the README describes a command that errors out.

    • Add requirements.txt with requests, and playwright as an extra.

    • Replace the committed ELF with a build step.

    • Anchor the Solana regex (require a wallet-ish context) or drop it — as written, the wallets field is noise.

    Еще search.py использует Bing API - он давно мертв.


    1. it_police Автор
      17.09.2026 19:28

      Запускал через main.py? Потому что ты пишешь про легаси функционал, который не до конца выпилен после переписывания. Это остатки былой кобылы)

      IPv6 я добавлю, спасибо. Но проверка ориентирована не на IP, а на домен.


      1. unit42
        17.09.2026 19:28

        IPv6 посыпался из-за некорректного URL: на самом деле там проблема была в парсере urlparse.

        Еще куча ошибок из-за Solana образовалась: кошельки там, где их нет. Outlook safelink таким образом "распознался", Azure AD tenant ID был в списке кошельков, и еще список штатов в drop-down был не понят...


        1. it_police Автор
          17.09.2026 19:28

          Спасибо. Надо тестить и допиливать. Но точных данных алгоритмами не собрать, лучше брать чуть больше и отсеивать на анализе, как мне кажется. Сегодня, кстати, вливал пару патчей, нужно сделать git pull