Ищем по email в GitHub
@osint_mindsetСложно не иметь репозитория на GitHub, если ты хоть сколько-нибудь занимаешься разработкой. Разумеется, с кодом человек оставляет в репозитории email -- чаще всего личный, иногда рабочий, иногда оба вместе.
Ранее я уже писал небольшую утилиту gitcolombo для анализа почт из коммитов репозитория и выявления всех ящиков одного человека. Но это работает, когда нам известен аккаунт или хотя бы проект. А что делать, когда у нас на руках только email-адрес?
Внутренний поиск

Поиск по коду на самом GitHub имеет ряд ограничений и неочевидностей. Но всё равно даёт большой шанс наткнуться на совпадение -- нередко в коде фигурирует контакт автора.
Искать по email в коммитах, к сожалению, нельзя. Зато есть поиск по публичному ящику с помощью модификатора вида test in:email. Бесполезный по большей части, потому что ящик из профиля с большой вероятностью проиндексируется в Google.
Да, и расстраивает нечёткий поиск -- например, на скрине выше GitHub почему-то искал не по строке test@example.com , а по трем подстрокам test, example и com.
grep.app

Проблему с нечётким поиском точно решит сайт grep.app. Он производит поиск по 500К популярных репозиториев, поддерживает регулярные выражения и, разумеется, поиск по точному вхождению.
Как видно из скриншота, результатов в сравнении на два порядка меньше. И по коммитам искать он также не умеет. Но для сложного поиска сайт подходит идеально, так что когда у вас будет известна только часть email, то обязательно загляните сюда.
Пример ниже: поиск по корпоративному ящику, для которого известен формат имя.фамилия@домен.ru, имя "Влад" и конец фамилии "ов".

Самый большой минус -- это, конечно, малое количество данных. Сомнительно, что сайт когда-нибудь сможет в реалтайме делать поиск по всем репозиториям (потому что GitHub попросту не предоставит такого API), но будем надеяться на скорейшее увеличение базы.
Google BigQuery

Самым перспективным инструментом я всё же считаю датасет свободных репозиториев GitHub, выложенный в Google BigQuery. 2,8 млн репозиториев, больше 2 млрд файлов, 145 млн коммитов, общий размер -- около 3 терабайт.
И для всего этого доступен интерфейс SQL-запросов, что позволяет делать точечные запросы по email, имени, кускам кода, и с самой изощрённой логикой.
Для оценки всех возможностей советую почитать вот эту статью и посмотреть на примеры по ссылкам. А мы перейдём к нашей цели -- поиск по почтовому ящику.
Датасет немного деперсонализирован. Это значит, что в метаданных коммитов мы найдём не ящик test@example.com , а a94a8fe5ccb19ba61c4c0873d391e987982fbbd3@example.com. Нас это не остановит, поскольку имя ящика у нас должно быть на руках. Следовательно, достаточно сделать SHA1 от начала email -- и выражение для поиска готово.
Да, и ссылка на коммит всегда хранится рядом, так что email можно посмотреть вручную, если репозиторий до сих пор доступен на GitHub.
Алгоритм поиска
1. Допустим, мы уверены, что ник человека используется и в имени ящика. Берём его для поиска (на моём примере -- soxoj).
2. Хэшируем SHA1 -- онлайн или через консоль:
echo -n "soxoj" | sha1sum
Получаем 4b9e910872a66d9b7d7e137ad70e3abfaad7eda7.
3. Идём в интерфейс для запросов. Нас попросят создать проект, если у вас его ещё нет -- создаём.
4. Вводим следующий запрос:
select
repo_name, commit,
author.name, author.email,
committer.name, committer.email
from
bigquery-public-data.github_repos.commits
where
author.email like '4b9e910872a66d9b7d7e137ad70e3abfaad7eda7%'
or
committer.email like '4b9e910872a66d9b7d7e137ad70e3abfaad7eda7%'
Что мы делаем этим запросом?
Запрашиваем имя репозитория, хэш коммита, имя и email для автора и коммиттера. Ищем в таблице с коммиттами. Фильтруем по email, указывая его начало -- хэшированное имя.
5. Нажимаем "Выполнить", ожидаем, получаем таблицу из репозиториев, коммитов и "обезличенных" email-адресов.

Email очевиден (теперь мы видим домен), а остальное можно посмотреть прямо в репозитории. Cсылка формируется как repo_name+commit:
https://github.com/rs/domcheck/commit/b0d1a1427e22805cea2cedc49039facbb5e516e4
Надо учитывать квоты. Именно для этого нам предлагали создать проект. Подразумевается, что при массовых запросах в API нам бы хорошо и денег занести в Google. У меня, например, быстро исчерпалась квота в 1 TB из-за региональных ограничений -- считается она на каждый проект.
Таким образом можно производить поиск и по более сложным кейсам -- в зависимости от вашего случая и полёта фантазии.
Разумеется, ни один инструмент не универсален и может не решить вашу поисковую проблему. Всегда имеет смысл по-новому взглянуть на привычные вещи и попробовать нестандартно их использовать. Если вас это интересует -- добро пожаловать на канал OSINT mindset и в одноимённый чат.