
Инструмент для сбора информации, предназначенный для извлечения email-адресов из git-коммитов в сервисах хостинга систем контроля версий.

Эта версия Gitmails больше не поддерживается. Ознакомьтесь с портом Gitmails Shell, если хотите использовать поддерживаемую и, предположительно, развиваемую версию.
Если вы не хотите использовать порт на Shell и предпочитаете версию на Python, можете свободно форкнуть Gitmails и направить его по тому пути, который сочтёте нужным.
Gitmails использует тот факт, что коммиты git содержат имя и email, настроенные автором, а также то, что сервисы хостинга систем контроля версий используются для хранения множества проектов.
Что делает Gitmails:
С помощью этих шагов Gitmails может собрать все email, найденные в истории коммитов для конкретной цели.
Сначала необходимо выбрать метод работы: сбор email организации, пользователя или одного репозитория. Это можно сделать с помощью опций: -u --username, -o --organization или -r --repository.
После указания метода работы необходимо задать цель. Её нужно указать сразу после метода работы: python3 gitmails.py -u some_username, python3 gitmails.py -o some_org или python3 gitmails.py -r some_repo_url.
ПРИМЕЧАНИЕ: имена пользователей GitLab чувствительны к регистру, учитывайте это при попытке собрать там email.
С такой базовой настройкой Gitmails клонирует все репозитории для указанной цели (или клонирует репозиторий по указанному URL) и проанализирует его историю коммитов. Затем он выведет высокоуровневую информацию о пользователе или организации и, наконец, выведет в виде таблицы "fancy_grid" (из tabulate) все найденные пары Имя-Email.
Полезные опции:
--raw: Вывод результатов в виде простого текста, без таблиц, значения, разделённые запятыми;-f | --file: Сохранить результат в указанный файл. Результаты будут в формате CSV без заголовка.--include-repositories: Заставит Gitmails выводить результат с информацией о том, в каком репозитории был найден email.-p | --path: Указать временный путь для клонирования репозиториев.-e | --exclude: Игнорировать указанные репозитории. Будет сравниваться имя репозитория; если совпадёт, репозиторий будет пропущен, и будет выполнен переход к следующему.--no-cleanup: Не удалять клонированные репозитории.--include-forks: Включать форкнутые репозитории в анализ (только для GitHub).--include-users: При сборе информации об организации также собирать информацию о её публичных участниках (только для GitHub).--no-[gitlab|github|bitbucket]: Не собирать информацию с указанного сервиса хостинга.--run-plugins: Выполнить плагины для собранных результатов.Для установки Gitmails необходимо выполнить следующие шаги:
pip3 install -r requirements.txtЕсли вы используете Debian (возможно, Ubuntu тоже), пакет libgit2 не работает с Gitmails. Чтобы это исправить, нужно скомпилировать libgit2 вручную. Следующих шагов должно быть достаточно:
wget https://github.com/libgit2/libgit2/archive/v0.27.0.tar.gz && \
tar xzf v0.27.0.tar.gz && \
cd libgit2-0.27.0/ && \
cmake . && \
make && \
sudo make install
ldconfig
pip3 install pygit2
Или выполните скрипт debian install.
Вы также можете использовать Docker-версию инструмента, выполнив следующую команду:
docker run -it giovanifss/gitmails --helpОбратите внимание: если вы хотите записать в файл, вам нужно смонтировать Docker-том:
docker run -v /tmp/output:/opt -it giovanifss/gitmails -f /opt/result.txtЭтот проект больше не поддерживается. Если вы хотите внести вклад, ознакомьтесь с Gitmails Shell.
Этот инструмент собирает данные, которые могут быть полезны для легитимных работ по offensive security. Авторы этого проекта снимают с себя всякую ответственность за любой ущерб или убытки, вызванные неправильным или злонамеренным использованием данного инструмента. Дополнительные сведения см. в LICENSE.
--api