Доброго времени суток, Хабр! Так как я всё еще нахожусь на творческих каникулах, то имею возможность со всей силы пилить собственные проекты. Одним из таких проектов является 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)

sergey2212
17.09.2026 19:28А вот как то регулировать то что ищешь есть возможность? К примеру не нужны контакты но интересен сам источник. Открытые порты и технологии, Информация об IP и так далее.
Например как пробивка по ип адресу - чей он кто провайдер whois вобщем
Так же еще классно было бы подцепить на чем сайт собран. Часто в работе пользуюсь ищу эту инфу через плагин а тут все бы в одном месте. Мне кажется очень многим бы пригодилось - ничего подобного нет сейчас кажется.
Интерфейс приятный. Все по существу. Минимализм. Вобщем успехов
it_police Автор
17.09.2026 19:28Информация по IP, DNS, технологиям на портах есть. А вот на чем собран сайт я выпилил, кстати, пока переписывал. Запилю обратно, большое спасибо.

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-scanintoregistertools()or cutscan.py/app/main.py and ~800 lines of unreachable analyzers — right now the README describes a command that errors out.Add
requirements.txtwithrequests, andplaywrightas 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 - он давно мертв.

it_police Автор
17.09.2026 19:28Запускал через main.py? Потому что ты пишешь про легаси функционал, который не до конца выпилен после переписывания. Это остатки былой кобылы)
IPv6 я добавлю, спасибо. Но проверка ориентирована не на IP, а на домен.

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

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