
Uma ferramenta de coleta de informações para reunir e-mails de commits git em serviços de hospedagem de controle de versão

Esta versão do Gitmails não é mais mantida. Confira a Gitmails Shell port se quiser usar uma versão que é mantida e, esperançosamente, desenvolvida.
Se você não quiser usar a shell port e preferir a versão Python, sinta-se à vontade para fazer fork do Gitmails e direcioná-lo para o caminho que achar adequado.
Gitmails explora que os commits do git contêm um nome e um email configurados pelo autor e que serviços de hospedagem de controle de versão estão sendo usados para armazenar muitos projetos.
O que o Gitmails faz é:
Com esses passos, o Gitmails pode coletar todos os emails encontrados no histórico de commits para um alvo específico.
Primeiro, você deve escolher o método de operação: coletar emails de organização, usuário ou repositório único. Isso pode ser
feito pelas opções: -u --username, -o --organization ou -r --repository.
Após especificar o método de operação, você deve definir o alvo. Você deve passá-lo logo após o método de operação:
python3 gitmails.py -u some_username, python3 gitmails.py -o some_org ou python3 gitmails.py -r some_repo_url.
NOTA: os nomes de usuário do gitlab diferenciam maiúsculas de minúsculas, lembre-se disso ao tentar coletar emails lá.
Com esta configuração básica, o Gitmails clonará todos os repositórios para o alvo especificado (ou clonará o repositório da url) e analisará seu histórico de commits. Em seguida, imprimirá as informações de alto nível do usuário ou organização e finalmente imprimirá, em uma tabela "fancy_grid" (do tabulate), todos os pares Nome-Email encontrados durante a análise.
Opções úteis:
--raw: Imprimirá os resultados em texto puro, sem grades, apenas valores separados por vírgula;-f | --file: Armazenará o resultado no arquivo especificado. Os resultados estarão em csv sem formato de cabeçalho.--include-repositories: Fará com que o Gitmails imprima o resultado com informações sobre em qual repositório o
email foi encontrado.-p | --path: Especifique o caminho temporário para clonar os repositórios.-e | --exclude: Ignorar repositórios especificados. Comparará o nome do repositório, se corresponder, ignorará
o repositório e passará para o próximo.--no-cleanup: Não removerá os repositórios clonados.--include-forks: Incluirá repositórios bifurcados na análise (Apenas para github).--include-users: Se estiver coletando uma organização, coletará informações sobre seus membros públicos (Apenas para github).--no-[gitlab|github|bitbucket]: Não coletará informações do serviço de hospedagem especificado.--run-plugins: Executará plugins no resultado coletado.Para instalar o Gitmails, você terá que executar os seguintes passos:
pip3 install -r requirements.txtSe você estiver usando Debian (talvez Ubuntu também), o pacote libgit2 não funciona com o Gitmails. Para resolver isso, você precisará compilar o libgit2 manualmente. Os seguintes passos devem ser suficientes:
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
Ou execute o script debian install.
Você também pode usar a versão docker da ferramenta emitindo o seguinte comando:
docker run -it giovanifss/gitmails --helpNote que se você quiser escrever em um arquivo, precisará montar um volume docker:
docker run -v /tmp/output:/opt -it giovanifss/gitmails -f /opt/result.txtEste projeto não é mais mantido. Se você quiser contribuir, confira Gitmails Shell.
Esta ferramenta coleta dados que podem ser úteis para trabalhos legais de segurança ofensiva. Os autores deste projeto se eximem de qualquer responsabilidade por danos ou perdas causados pelo uso indevido ou malicioso desta ferramenta. Consulte LICENSE para mais detalhes.
--api: Tentará coletar todas as informações apenas através da API, sem clonar repositórios.
NOTA: Acessar APIs sem autenticação fará com que seu IP seja limitado. Além disso, a coleta apenas por API geralmente é
mais lenta do que clonar os repositórios.