Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
DiffCatcher — Uma ferramenta CLI em Rust que descobre recursivamente repositórios Git, captura mudanças de estado, gera diffs, extrai elementos de código com snippets completos e produz relatórios focados em segurança para fluxos de trabalho de revisão de código e auditoria. | Kitploit
Ferramentas/GitHubGitHub/teycir/diffcatcher
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoScripting e AutomaçãoColeta de InformaçõesDevSecOpsUtilitários e FrameworksDetecção de SegredosConfiguração IncorretaAnálise de Logs
GitHubteycir/diffcatcher
44há 5 mesesAinda não revisado

DiffCatcher

Uma ferramenta CLI em Rust que descobre recursivamente repositórios Git, captura mudanças de estado, gera diffs, extrai elementos de código com snippets completos e produz relatórios focados em segurança para fluxos de trabalho de revisão de código e auditoria.

Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Apoie o Desenvolvimento

Se este projeto ajuda seu trabalho, apoie a manutenção contínua e novos recursos.

Carteira de Doação ETH
0x11282eE5726B3370c8B480e321b3B2aA13686582

Código QR de doação Ethereum

Escaneie o código QR ou copie o endereço da carteira acima.

Logotipo do DiffCatcher

Rust License Security

Uma ferramenta CLI em Rust que descobre recursivamente repositórios Git, captura mudanças de estado, gera diffs, extrai elementos de código com trechos completos e produz relatórios focados em segurança para fluxos de revisão de código e auditoria.


🎯 Principais Recursos

  • Descoberta de Repositórios: Varre recursivamente diretórios em busca de repositórios Git com filtros configuráveis
  • Rastreamento de Estado: Captura estado pré/pós-pull com hashes de commit, mensagens e detecção de sujeira
  • Geração de Diffs: Criação automática de diffs N vs N-1 e históricos com manifesto de arquivos
  • Extração de Elementos: Analisa diffs para identificar funções, estruturas, classes, importações e mais em mais de 10 linguagens
  • Trechos de Código: Extrai código completo antes/depois com detecção de limites e janelas de contexto
  • Marcação de Segurança: 18 padrões de segurança incorporados (criptografia, autenticação, segredos, injeção SQL, XSS, etc.)
  • Relatórios em Múltiplos Formatos: Saídas JSON, Markdown, texto e SARIF com visão geral de segurança entre repositórios
  • Modo Diff de Branch: Diferença entre quaisquer duas referências (branches, tags, commits) em um único repositório — ideal para revisões de PR
  • Desempenho: Processamento paralelo com barras de progresso, cache LRU e modo incremental

Por que não usar apenas bash?

Um one-liner como ls | while read line; do git -C "$line" diff HEAD~1 HEAD || true; done mostra apenas diffs brutos. DiffCatcher adiciona descoberta recursiva, extração de elementos de código, detecção de padrões de segurança, saída SARIF para CI/CD, processamento paralelo e agregação de segurança entre repositórios. Veja a comparação completa abaixo.

📋 Índice

  • Instalação
  • Início Rápido
  • Uso
    • Varredura Básica
    • Modos de Pull
    • Opções de Extração
    • Marcação de Segurança
    • Arquivo de Configuração
    • Sistema de Plugins
    • Modo Diff de Branch (Revisão de PR)
    • Saída SARIF
    • Recursos Avançados
  • Estrutura do Relatório
  • Configuração
  • Arquitetura
  • Testes
  • Documentação
  • Contribuindo

🚀 Instalação

A Partir do Código Fonte

root@kitploit:~
git clone https://github.com/Teycir/DiffCatcher.git
cd DiffCatcher
cargo build --release
./target/release/diffcatcher --help

Requisitos

  • Rust 1.70+
  • Git 2.0+

⚡ Início Rápido

root@kitploit:~
# Varre todos os repositórios em um diretório (apenas fetch, sem modificações)
diffcatcher ~/projects

# Atualiza com pull e gera relatório de segurança
diffcatcher ~/projects --pull -o ./report

# Diferença entre duas branches em um único repositório (modo revisão de PR)
diffcatcher ./my-repo --diff main..feature/auth -o ./pr-report

# Gera saída SARIF para GitHub Code Scanning
diffcatcher ~/projects --summary-format sarif,json -o ./report

# Simulação para ver o que seria varrido
diffcatcher ~/projects --dry-run

# Varredura rápida com 8 trabalhadores paralelos
diffcatcher ~/projects -j 8 --quiet

📖 Uso

Varredura Básica

root@kitploit:~
# Varre com configurações padrão (apenas fetch)
diffcatcher <ROOT_DIR>

# Diretório de saída personalizado
diffcatcher ~/projects -o ./my-report

# Inclui repositórios aninhados e segue links simbólicos
diffcatcher ~/projects --nested --follow-symlinks

# Pula diretórios ocultos
diffcatcher ~/projects --skip-hidden

Modos de Pull

root@kitploit:~
# Apenas fetch (padrão - sem alterações na árvore de trabalho)
diffcatcher ~/projects

# Realmente puxa alterações
diffcatcher ~/projects --pull

# Força pull com stash/pop para repositórios sujos
diffcatcher ~/projects --pull --force-pull

# Usa estratégia rebase
diffcatcher ~/projects --pull --pull-strategy rebase

# Pula fetch/pull completamente (apenas diffs históricos)
diffcatcher ~/projects --no-pull

Opções de Extração

root@kitploit:~
# Pula extração de elementos (apenas diffs brutos)
diffcatcher ~/projects --no-summary-extraction

# Extrai elementos mas pula trechos de código
diffcatcher ~/projects --no-snippets

# Ajusta contexto e limites dos trechos
diffcatcher ~/projects --snippet-context 10 --max-snippet-lines 300

# Limita elementos por diff
diffcatcher ~/projects --max-elements 1000

Marcação de Segurança

root@kitploit:~
# Pula marcação de segurança
diffcatcher ~/projects --no-security-tags

# Inclui arquivos de teste na análise de segurança
diffcatcher ~/projects --include-test-security

# Usa padrões de segurança personalizados
diffcatcher ~/projects --security-tags-file ./custom-patterns.json

Arquivo de Configuração

DiffCatcher pode carregar automaticamente a configuração local do projeto a partir de:

  • <ROOT_DIR>/.diffcatcher.toml (padrão)
  • um arquivo personalizado via --config <FILE>
  • desabilitado com --no-config

Exemplo:

root@kitploit:~
output = "reports-local"
no_pull = true
history_depth = 2
summary_formats = ["json", "txt"]
no_security_tags = false

[plugins]
security_pattern_files = ["plugins/security-extra.json"]
extractor_files = ["plugins/extractors.json"]

As flags da linha de comando ainda sobrescrevem os valores de configuração quando definidas explicitamente.

Sistema de Plugins

DiffCatcher suporta dois tipos de plugins:

  • Plugins de padrões de segurança via --security-plugin-file <FILE> (repetível)
  • Plugins de extratores via --extractor-plugin-file <FILE> (repetível)

O formato do plugin de segurança corresponde ao JSON de --security-tags-file (version, mode, tags).

Formato do plugin de extrator:

root@kitploit:~
{
  "version": 1,
  "extractors": [
    {
      "name": "policy-rule",
      "kind": "Config",
      "regex": "^policy\\s+([A-Za-z_][A-Za-z0-9_]*)"
    }
  ]
}

Modo Diff de Branch (Revisão de PR)

root@kitploit:~
# Diferença entre duas branches em um único repositório
diffcatcher ./my-repo --diff main..feature/auth

# Diferença entre commits específicos
diffcatcher ./my-repo --diff abc123..def456

# Diferença com saída SARIF para integração CI
diffcatcher ./my-repo --diff origin/main..HEAD --summary-format sarif -o ./pr-report

A flag --diff BASE..HEAD pula a descoberta de repositórios e fetch/pull — ela difere diretamente duas referências (branches, tags ou SHAs de commit) e executa o pipeline completo de extração + marcação de segurança no resultado.

Saída SARIF

root@kitploit:~
# Gera SARIF junto com outros formatos
diffcatcher ~/projects --summary-format sarif,json,md

# Apenas SARIF para upload em CI/CD
diffcatcher ~/projects --summary-format sarif -o ./report

Quando sarif está incluído em --summary-format, um arquivo results.sarif é escrito na raiz do relatório. Este arquivo segue o padrão SARIF 2.1.0 e se integra com GitHub Code Scanning, Visualizador SARIF do VS Code, Azure DevOps e outras ferramentas compatíveis com SARIF.

Recursos Avançados

root@kitploit:~
# Modo incremental (pula repositórios inalterados)
diffcatcher ~/projects --incremental -o ./report

# Filtra por padrão de branch
diffcatcher ~/projects --branch-filter "main"

# Ajusta profundidade do histórico
diffcatcher ~/projects --history-depth 5

# Saída JSON para CI/CD
diffcatcher ~/projects --quiet --json > result.json

# Saída verbosa com caminhos descobertos
diffcatcher ~/projects --verbose

📁 Estrutura do Relatório

root@kitploit:~
<report_dir>/
├── summary.json                    # Resumo global
├── summary.md                      # Resumo em Markdown
├── results.sarif                   # Saída SARIF 2.1.0 (quando --summary-format sarif)
├── security_overview.json          # Agregação de segurança entre repositórios
├── security_overview.md
├── <repo-name>/
│   ├── status.json                 # Estado do repositório
│   ├── pull_log.txt
│   └── diffs/
│       ├── diff_N_vs_N-1.patch     # Diff unificado bruto
│       ├── changes_N_vs_N-1.txt    # Manifesto de arquivos
│       ├── summary_N_vs_N-1.json   # Extração de elementos
│       ├── summary_N_vs_N-1.md
│       └── snippets/
│           ├── 001_validate_token_ADDED.rs
│           ├── 002_check_permissions_BEFORE.rs
│           ├── 002_check_permissions_AFTER.rs
│           └── 002_check_permissions.diff
└── ...

⚙️ Configuração

Flags da Linha de Comando

BandeiraPadrãoDescrição
-o, --output./reports/<timestamp>Diretório de saída do relatório
-j, --parallel4Processamento concorrente de repositórios
-t, --timeout120Timeout da operação Git (segundos)
-d, --history-depth2Commits históricos para diff
--snippet-context5Linhas de contexto ao redor das alterações
--max-snippet-lines200Máximo de linhas por trecho
--max-elements500Máximo de elementos por diff
--diff—Diferença entre duas referências em um único repositório (BASE..HEAD)
--summary-formatjson,mdFormatos de saída: json, md, txt, sarif

Veja diffcatcher --help para todas as opções.

Padrões de Segurança Personalizados

Crie um arquivo JSON com padrões personalizados:

root@kitploit:~
{
  "version": 1,
  "mode": "extend",
  "tags": [
    {
      "tag": "pii-handling",
      "description": "Processamento de dados PII",
      "severity": "High",
      "patterns": ["ssn", "social_security", "passport"]
    }
  ]
}

Use com --security-tags-file ./patterns.json

🏗️ Arquitetura

root@kitploit:~
src/
├── cli.rs              # Análise de argumentos
├── scanner.rs          # Descoberta de repositórios
├── git/                # Operações Git
│   ├── commands.rs     # Wrappers Git
│   ├── state.rs        # Captura de estado
│   ├── diff.rs         # Geração de diffs
│   └── file_retrieval.rs
├── extraction/         # Extração de elementos
│   ├── parser.rs       # Analisador de diff unificado
│   ├── elements.rs     # Detecção de elementos
│   ├── snippets.rs     # Extração de trechos de código
│   ├── boundary.rs     # Rastreamento de colchetes/indentação
│   └── languages/      # Padrões específicos de linguagem
├── security/           # Marcação de segurança
│   ├── tagger.rs       # Correspondência de padrões
│   ├── patterns.rs     # Padrões incorporados
│   └── overview.rs     # Agregação entre repositórios
└── report/             # Geração de relatórios
    ├── writer.rs       # Estrutura de diretórios
    ├── json.rs         # Serialização JSON
    ├── sarif.rs        # Saída SARIF 2.1.0
    ├── markdown.rs     # Formatação Markdown
    └── snippet_writer.rs

Comparação com Bash

Um one-liner simples em bash pode listar diffs:

root@kitploit:~
ls | while read line; do git -C "$line" diff HEAD~1 HEAD || true; done

Isso funciona para verificações rápidas, mas DiffCatcher adiciona capacidades significativas:

CapacidadeOne-Liner BashDiffCatcher
Descoberta recursivaApenais itens de nível superiorRepositórios aninhados, links simbólicos, filtros
Rastreamento de estadoNenhumHashes de commit, detecção de sujeira, logs de pull
Compreensão de códigoApenas diff brutoExtrai funções/estruturas/classes em mais de 10 linguagens
Trechos de códigoNenhumCompleto antes/depois com janelas de contexto
Análise de segurançaNenhum18 padrões incorporados (auth, crypto, segredos, SQLi, XSS)
Formatos de saídaApenas terminalJSON, Markdown, SARIF (GitHub Code Scanning)
Visão entre repositóriosApenas por repositórioRelatório de segurança agregado em todos os repositórios
DesempenhoSequencialTrabalhadores paralelos, cache LRU, modo incremental
Integração CI/CDNenhumUpload SARIF para GitHub/Azure DevOps
Tratamento de errosSupressão com `
Manipulação de caminhosFalha em espaçosLida corretamente com todos os nomes de caminho
Contexto históricoHEAD~1 fixoProfundidade configurável, rastreamento de estado

O one-liner bash tem ~100 bytes. DiffCatcher é uma ferramenta de auditoria focada em segurança com extração completa de elementos de código.

🧪 Testes

root@kitploit:~
# Executa todos os testes
cargo test

# Executa suíte de testes específica
cargo test security_tagger

# Executa com saída
cargo test -- --nocapture

A cobertura de testes inclui:

  • Testes unitários para extração, marcação de segurança, detecção de limites
  • Testes de integração para captura de estado, geração de diffs, relatórios
  • Testes de arquivo dourado para precisão da extração
  • Testes de casos extremos (HEAD desanexado, repositórios vazios, commit único)

Benchmarks de Desempenho

root@kitploit:~
# Compila binários de benchmark
cargo bench --no-run

# Executa harness de benchmark
cargo bench --bench core_bench

O código-fonte do benchmark está em benches/core_bench.rs e monitora a taxa de transferência do analisador/extrator.

CI/CD

Workflows do GitHub Actions estão incluídos:

  • .github/workflows/ci.yml: verificação de formatação, clippy, testes, compilação de bench
  • .github/workflows/release.yml: empacotamento de release baseado em tag e publicação de release no GitHub

📚 Documentação

Documentação do Projeto

  • Plan.md - Especificação completa (v1.2)
  • Roadmap.md - Roteiro de implementação e progresso
  • Referência de padrões de segurança (veja src/security/patterns.rs)

Documentação do Código

Todos os módulos incluem documentação inline abrangente. Módulos principais:

  • src/extraction/parser.rs - Analisador de diff unificado com extração de hunks
  • src/extraction/elements.rs - Detecção de elementos de código consciente de linguagem
  • src/extraction/snippets.rs - Extração completa de trechos de código com detecção de limites
  • src/security/tagger.rs - Mecanismo de correspondência de padrões de segurança
  • src/git/commands.rs - Wrappers de operações Git

Gere a documentação completa da API:

root@kitploit:~
cargo doc --open

🏷️ Tags

#rust #git #security #code-review #diff-analysis #static-analysis #devops #cli-tool #audit #vulnerability-detection #code-quality #snippet-extraction #parallel-processing #security-scanning

🤝 Contribuindo

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do repositório
  2. Crie uma branch de recurso
  3. Adicione testes para novas funcionalidades
  4. Certifique-se de que cargo test passa
  5. Envie um pull request

📄 Licença

Licença MIT - veja o arquivo LICENSE para detalhes

📧 Contato

  • Autor: Teycir Ben Soltane
  • E-mail: [email protected]
  • Site: teycirbensoltane.tn

🔗 Links

  • Repositório GitHub
  • Rastreador de Problemas
  • Changelog
Baixar ferramenta