
Ferramenta para mineração avançada de conteúdo no Github
+---------------------------------------------------+
| OS DESENVOLVEDORES NÃO ASSUMEM NENHUMA |
| RESPONSABILIDADE E NÃO SÃO RESPONSÁVEIS POR |
| QUALQUER USO INDEVIDO OU DANO CAUSADO POR |
| ESTE PROGRAMA |
+---------------------------------------------------+
O GitMiner v3 é uma ferramenta modular projetada para descobrir informações sensíveis em repositórios públicos do GitHub. Ele utiliza consultas dork avançadas, correspondência de padrões regex e gera relatórios abrangentes de inteligência de ameaças.
Este projeto é uma refatoração completa do script original Gitminer, com foco em manutenibilidade, escalabilidade e princípios profissionais de arquitetura de software.
O projeto está organizado em uma estrutura modular para separar responsabilidades e melhorar a clareza.
gitminer_v3/
├── config/ # Arquivos de configuração
│ ├── paths.yaml # Caminhos de diretórios, arquivos e API
│ ├── labels.yaml # Mapeamentos de regex para rótulos de parâmetros
│ └── patterns.yaml # Padrões regex para detecção de segredos
├── data/ # Armazenamento persistente de dados
│ └── gitminer_history.sqlite # Banco de dados SQLite para histórico
├── gitminer/ # Pacote Python principal
│ ├── __init__.py
│ ├── config_manager.py # Carrega e gerencia todas as configurações
│ ├── github_client.py # Lida com todas as interações com a API do GitHub
│ ├── file_manager.py # Gerencia downloads e armazenamento de arquivos
│ ├── pattern_analyzer.py # Examina arquivos em busca de segredos
│ ├── database.py # Gerencia operações do banco de dados SQLite
│ ├── report_generator.py # Gera relatórios em Markdown
│ └── utils.py # Funções utilitárias compartilhadas
├── raw/ # Armazena arquivos baixados do GitHub
├── reports/ # Armazena relatórios de inteligência de ameaças gerados
├── gitminer_v3.py # Script executável principal
├── requirements.txt # Dependências do Python
└── README.md # Este arquivo
public_repo.Clone o repositório ou baixe o código-fonte.
Configure seu Token do GitHub: O GitMiner requer um token do GitHub para interagir com a API. Você deve defini-lo como uma variável de ambiente.
export GITHUB_TOKEN="seu_token_de_acesso_pessoal_do_github_aqui"
Instale os pacotes Python necessários:
pip install -r requirements.txt
O comportamento do GitMiner é controlado por arquivos no diretório config/.
paths.yamlEste arquivo define todos os caminhos e configurações importantes da API.
directories: Especifica onde armazenar arquivos brutos, relatórios e dados.files: Define os nomes para o banco de dados e a saída CSV padrão.github: Contém configurações para a API do GitHub, como URLs, timeouts e limites padrão de resultados.labels.yamlEste arquivo mapeia padrões regex para rótulos legíveis por humanos. É usado principalmente para identificar nomes de parâmetros (por exemplo, ftp_user, api_key) no código.
# Formato: "regex_pattern": "LABEL_NAME"
"(?i)(api[_\\- ]?key|apikey)": "API_KEY"
"(?i)(password|passwd)": "PASSWORD"
patterns.yamlEste arquivo contém os padrões regex principais usados para detectar valores sensíveis como chaves, tokens e credenciais.
# Formato: PATTERN_NAME: "regex_pattern"
GITHUB_TOKEN: "ghp_[A-Za-z0-9_]{36,255}"
AWS_ACCESS_KEY_ID: "AKIA[0-9A-Z]{16}"
O script principal gitminer_v3.py é o ponto de entrada para todas as operações.
Buscar usando uma única dork e gerar um relatório:
python3 gitminer_v3.py -d "filename:.env DB_PASSWORD" --report
Buscar usando um arquivo contendo múltiplas dorks:
Crie um arquivo chamado dorks.txt:
filename:wp-config.php DB_PASSWORD
filename:settings.py SECRET_KEY
extension:pem private
Em seguida, execute o comando:
python3 gitminer_v3.py -d dorks.txt -m 500 --report
Exportar uma lista de todos os arquivos baixados para CSV:
python3 gitminer_v3.py -d dorks.txt -o downloaded_files.csv
Baixar arquivos sem realizar nenhuma análise:
python3 gitminer_v3.py -d dorks.txt --no-analyze
O GitMiner produz vários tipos de saída, armazenados nos diretórios raw/, reports/ e data/.
Todos os arquivos baixados do GitHub são armazenados no diretório raw/, organizados por palavra-chave da dork e nome do repositório.
raw/
└── DB_PASSWORD/
└── someuser_some-repo/
└── .env
Se a flag --report for usada, um relatório detalhado em Markdown é gerado para cada dork e salvo no diretório reports/. Esses relatórios incluem:
O arquivo data/gitminer_history.sqlite contém um histórico completo de todas as operações, incluindo:
search_history: Registros de cada busca de dork realizada.downloaded_files: Metadados de cada arquivo baixado.findings: Registros detalhados de cada segredo encontrado.Este banco de dados pode ser usado para rastreamento de longo prazo e análises avançadas.
O GitMiner v3 foi projetado para ser facilmente extensível.
config/patterns.yaml.config/labels.yaml.gitminer/ é bem documentado e pode ser facilmente modificado ou estendido.Este projeto é de código aberto e está disponível para uso pessoal e educacional. Use-o de forma responsável e ética. O autor não é responsável por qualquer uso indevido desta ferramenta.
| Argumento | Curto | Descrição | Obrigatório |
|---|
--dorks | -d | Arquivo com dorks (uma por linha) ou uma única string de dork. | Sim |
--token | -t | Token do GitHub (substitui a variável de ambiente GITHUB_TOKEN). | Não |
--max-results | -m | Máximo de resultados a buscar por dork. (Padrão: 200) | Não |
--per-page | -p | Resultados por página para a API. (Padrão: 30, Máx: 100) | Não |
--output-csv | -o | Exporta um resumo dos arquivos baixados para um arquivo CSV. | Não |
--report | Gera um relatório detalhado de inteligência de ameaças em Markdown. | Não | |
--no-analyze | Ignora a etapa de análise local de arquivos (apenas baixa arquivos). | Não |