Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
DiffCatcher — Uno strumento CLI in Rust che scopre ricorsivamente repository Git, cattura le modifiche di stato, genera diff, estrae elementi di codice con snippet completi e produce report incentrati sulla sicurezza per flussi di lavoro di revisione e audit del codice. | Kitploit
Strumenti/GitHubGitHub/teycir/diffcatcher
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del CodiceScripting e AutomazioneRaccolta InformazioniDevSecOpsUtilità e FrameworkRilevamento SegretiConfigurazione ErrataAnalisi dei Log
GitHubteycir/diffcatcher
445 mesi faNon ancora revisionato

DiffCatcher

Uno strumento CLI in Rust che scopre ricorsivamente repository Git, cattura le modifiche di stato, genera diff, estrae elementi di codice con snippet completi e produce report incentrati sulla sicurezza per flussi di lavoro di revisione e audit del codice.

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Supporta lo Sviluppo

Se questo progetto aiuta il tuo lavoro, supporta la manutenzione continua e le nuove funzionalità.

Portafoglio per Donazioni ETH
0x11282eE5726B3370c8B480e321b3B2aA13686582

QR code per donazioni Ethereum

Scansiona il QR code o copia l'indirizzo del portafoglio sopra.

Logo DiffCatcher

Rust Licenza Sicurezza

Uno strumento CLI in Rust che scopre ricorsivamente repository Git, cattura cambiamenti di stato, genera diff, estrae elementi di codice con frammenti completi e produce report orientati alla sicurezza per flussi di revisione del codice e audit.


🎯 Caratteristiche Principali

  • Scoperta Repository: Scansiona ricorsivamente directory alla ricerca di repo Git con filtri configurabili
  • Tracciamento Stato: Cattura stato pre/post-pull con hash dei commit, messaggi e rilevamento di directory sporche
  • Generazione Diff: Creazione automatica di diff N vs N-1 e storici con manifest dei file
  • Estrazione Elementi: Analizza i diff per identificare funzioni, struct, classi, import e altro in oltre 10 linguaggi
  • Frammenti di Codice: Estrae codice completo prima/dopo con rilevamento dei confini e finestre di contesto
  • Marcatura di Sicurezza: 18 pattern di sicurezza integrati (crittografia, autenticazione, segreti, SQL injection, XSS, ecc.)
  • Report Multi-Formato: Output JSON, Markdown, testo e SARIF con panoramica sicurezza cross-repo
  • Modalità Diff tra Branch: Crea diff tra due qualsiasi riferimenti (branch, tag, commit) in un singolo repo — ideale per revisioni PR
  • Prestazioni: Elaborazione parallela con barre di progresso, caching LRU e modalità incrementale

Perché non usare semplicemente bash?

Un one-liner come ls | while read line; do git -C "$line" diff HEAD~1 HEAD || true; done mostra solo diff grezzi. DiffCatcher aggiunge scoperta ricorsiva, estrazione di elementi di codice, rilevamento di pattern di sicurezza, output SARIF per CI/CD, elaborazione parallela e aggregazione della sicurezza tra repository. Vedi confronto completo più sotto.

📋 Indice

  • Installazione
  • Avvio Rapido
  • Utilizzo
    • Scansione Base
    • Modalità Pull
    • Opzioni di Estrazione
    • Marcatura di Sicurezza
    • File di Configurazione
    • Sistema di Plugin
    • Modalità Diff tra Branch (Revisione PR)
    • Output SARIF
    • Funzionalità Avanzate
  • Struttura del Report
  • Configurazione
  • Architettura
  • Test
  • Documentazione
  • Contributi

🚀 Installazione

Da Codice Sorgente

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

Requisiti

  • Rust 1.70+
  • Git 2.0+

⚡ Avvio Rapido

root@kitploit:~
# Scansiona tutti i repo in una directory (solo fetch, nessuna modifica)
diffcatcher ~/projects

# Esegui pull e genera report di sicurezza
diffcatcher ~/projects --pull -o ./report

# Crea diff tra due branch in un singolo repo (modalità revisione PR)
diffcatcher ./my-repo --diff main..feature/auth -o ./pr-report

# Genera output SARIF per GitHub Code Scanning
diffcatcher ~/projects --summary-format sarif,json -o ./report

# Esecuzione a secco per vedere cosa verrebbe scansionato
diffcatcher ~/projects --dry-run

# Scansione veloce con 8 lavoratori paralleli
diffcatcher ~/projects -j 8 --quiet

📖 Utilizzo

Scansione Base

root@kitploit:~
# Scansiona con impostazioni predefinite (solo fetch)
diffcatcher <ROOT_DIR>

# Directory di output personalizzata
diffcatcher ~/projects -o ./my-report

# Includi repo nidificati e segui i link simbolici
diffcatcher ~/projects --nested --follow-symlinks

# Salta directory nascoste
diffcatcher ~/projects --skip-hidden

Modalità Pull

root@kitploit:~
# Solo fetch (predefinito - nessuna modifica al working tree)
diffcatcher ~/projects

# Esegui effettivamente il pull delle modifiche
diffcatcher ~/projects --pull

# Forza pull con stash/pop per repo sporchi
diffcatcher ~/projects --pull --force-pull

# Usa strategia rebase
diffcatcher ~/projects --pull --pull-strategy rebase

# Salta fetch/pull completamente (solo diff storici)
diffcatcher ~/projects --no-pull

Opzioni di Estrazione

root@kitploit:~
# Salta estrazione elementi (solo diff grezzi)
diffcatcher ~/projects --no-summary-extraction

# Estrai elementi ma salta i frammenti di codice
diffcatcher ~/projects --no-snippets

# Regola contesto e limiti dei frammenti
diffcatcher ~/projects --snippet-context 10 --max-snippet-lines 300

# Limita elementi per diff
diffcatcher ~/projects --max-elements 1000

Marcatura di Sicurezza

root@kitploit:~
# Salta marcatura di sicurezza
diffcatcher ~/projects --no-security-tags

# Includi file di test nell'analisi di sicurezza
diffcatcher ~/projects --include-test-security

# Usa pattern di sicurezza personalizzati
diffcatcher ~/projects --security-tags-file ./custom-patterns.json

File di Configurazione

DiffCatcher può caricare automaticamente la configurazione locale del progetto da:

  • <ROOT_DIR>/.diffcatcher.toml (predefinito)
  • un file personalizzato tramite --config <FILE>
  • disabilitato con --no-config

Esempio:

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"]

I flag CLI sovrascrivono comunque i valori di configurazione quando esplicitamente impostati.

Sistema di Plugin

DiffCatcher supporta due tipi di plugin:

  • Plugin di pattern di sicurezza tramite --security-plugin-file <FILE> (ripetibile)
  • Plugin di estrazione tramite --extractor-plugin-file <FILE> (ripetibile)

Il formato del plugin di sicurezza corrisponde al JSON di --security-tags-file (version, mode, tags).

Formato del plugin di estrazione:

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

Modalità Diff tra Branch (Revisione PR)

root@kitploit:~
# Crea diff tra due branch in un singolo repo
diffcatcher ./my-repo --diff main..feature/auth

# Crea diff tra commit specifici
diffcatcher ./my-repo --diff abc123..def456

# Crea diff con output SARIF per integrazione CI
diffcatcher ./my-repo --diff origin/main..HEAD --summary-format sarif -o ./pr-report

Il flag --diff BASE..HEAD salta la scoperta del repository e il fetch/pull — crea direttamente il diff tra due riferimenti (branch, tag o SHA di commit) ed esegue l'intera pipeline di estrazione + marcatura di sicurezza sul risultato.

Output SARIF

root@kitploit:~
# Genera SARIF insieme ad altri formati
diffcatcher ~/projects --summary-format sarif,json,md

# Solo SARIF per upload CI/CD
diffcatcher ~/projects --summary-format sarif -o ./report

Quando sarif è incluso in --summary-format, viene scritto un file results.sarif nella directory principale del report. Questo file segue lo standard SARIF 2.1.0 ed è integrabile con GitHub Code Scanning, VS Code SARIF Viewer, Azure DevOps e altri strumenti compatibili con SARIF.

Funzionalità Avanzate

root@kitploit:~
# Modalità incrementale (salta repo invariati)
diffcatcher ~/projects --incremental -o ./report

# Filtra per pattern di branch
diffcatcher ~/projects --branch-filter "main"

# Regola profondità storica
diffcatcher ~/projects --history-depth 5

# Output JSON per CI/CD
diffcatcher ~/projects --quiet --json > result.json

# Output verboso con percorsi scoperti
diffcatcher ~/projects --verbose

📁 Struttura del Report

root@kitploit:~
<report_dir>/
├── summary.json                    # Riepilogo globale
├── summary.md                      # Riepilogo in Markdown
├── results.sarif                   # Output SARIF 2.1.0 (quando --summary-format sarif)
├── security_overview.json          # Aggregazione sicurezza cross-repo
├── security_overview.md
├── <repo-name>/
│   ├── status.json                 # Stato del repo
│   ├── pull_log.txt
│   └── diffs/
│       ├── diff_N_vs_N-1.patch     # Diff unificato grezzo
│       ├── changes_N_vs_N-1.txt    # Manifest dei file
│       ├── summary_N_vs_N-1.json   # Estrazione elementi
│       ├── 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
└── ...

⚙️ Configurazione

Flag CLI

FlagPredefinitoDescrizione
-o, --output./reports/<timestamp>Directory di output del report
-j, --parallel4Elaborazione concorrente dei repo
-t, --timeout120Timeout operazioni Git (secondi)
-d, --history-depth2Commit storici da confrontare
--snippet-context5Righe di contesto intorno alle modifiche
--max-snippet-lines200Numero massimo di righe per frammento
--max-elements500Numero massimo di elementi per diff
--diff—Crea diff tra due riferimenti in un singolo repo (BASE..HEAD)
--summary-formatjson,mdFormati di output: json, md, txt, sarif

Vedi diffcatcher --help per tutte le opzioni.

Pattern di Sicurezza Personalizzati

Crea un file JSON con pattern personalizzati:

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

Usalo con --security-tags-file ./patterns.json

🏗️ Architettura

root@kitploit:~
src/
├── cli.rs              # Analisi argomenti
├── scanner.rs          # Scoperta repository
├── git/                # Operazioni Git
│   ├── commands.rs     # Wrapper Git
│   ├── state.rs        # Cattura stato
│   ├── diff.rs         # Generazione diff
│   └── file_retrieval.rs
├── extraction/         # Estrazione elementi
│   ├── parser.rs       # Parser diff unificato
│   ├── elements.rs     # Rilevamento elementi
│   ├── snippets.rs     # Estrazione frammenti di codice
│   ├── boundary.rs     # Tracciamento parentesi/indentazione
│   └── languages/      # Pattern specifici per linguaggio
├── security/           # Marcatura di sicurezza
│   ├── tagger.rs       # Matching pattern
│   ├── patterns.rs     # Pattern integrati
│   └── overview.rs     # Aggregazione cross-repo
└── report/             # Generazione report
    ├── writer.rs       # Struttura directory
    ├── json.rs         # Serializzazione JSON
    ├── sarif.rs        # Output SARIF 2.1.0
    ├── markdown.rs     # Formattazione Markdown
    └── snippet_writer.rs

Confronto con Bash

Un semplice one-liner bash può elencare i diff:

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

Funziona per controlli rapidi, ma DiffCatcher aggiunge capacità significative:

CapacitàOne-Liner BashDiffCatcher
Scoperta ricorsivaSolo elementi di primo livelloRepo nidificati, link simbolici, filtri
Tracciamento statoNessunoHash dei commit, rilevamento sporcizia, log pull
Comprensione del codiceSolo diff grezzoEstrae funzioni/struct/classi in oltre 10 linguaggi
Frammenti di codiceNessunoCodice completo prima/dopo con finestre di contesto
Analisi di sicurezzaNessuna18 pattern integrati (auth, crypto, segreti, SQLi, XSS)
Formati di outputSolo terminaleJSON, Markdown, SARIF (GitHub Code Scanning)
Vista cross-repoSolo per repoReport di sicurezza aggregato su tutti i repo
PrestazioniSequenzialeLavoratori paralleli, caching LRU, modalità incrementale
Integrazione CI/CDNessunaUpload SARIF su GitHub/Azure DevOps
Gestione erroriSoppressione con `
Gestione percorsiFallisce con spaziGestisce correttamente tutti i nomi di percorso
Contesto storicoHEAD~1 fissoProfondità configurabile, tracciamento stato

L'one-liner bash è di circa 100 byte. DiffCatcher è uno strumento di audit orientato alla sicurezza con estrazione completa di elementi di codice.

🧪 Test

root@kitploit:~
# Esegui tutti i test
cargo test

# Esegui una suite di test specifica
cargo test security_tagger

# Esegui con output
cargo test -- --nocapture

La copertura dei test include:

  • Test unitari per estrazione, marcatura di sicurezza, rilevamento confini
  • Test di integrazione per cattura stato, generazione diff, report
  • Test golden-file per accuratezza estrazione
  • Test per casi limite (HEAD staccato, repo nudi, singolo commit)

Benchmark delle Prestazioni

root@kitploit:~
# Compila i binary di benchmark
cargo bench --no-run

# Esegui l'harness di benchmark
cargo bench --bench core_bench

Il sorgente del benchmark si trova in benches/core_bench.rs e monitora il throughput di parser/estrazione.

CI/CD

Sono inclusi flussi di lavoro GitHub Actions:

  • .github/workflows/ci.yml: controllo formato, clippy, test, build bench
  • .github/workflows/release.yml: packaging basato su tag e pubblicazione delle release su GitHub

📚 Documentazione

Documentazione del Progetto

  • Plan.md - Specifica completa (v1.2)
  • Roadmap.md - Roadmap di implementazione e progressi
  • Riferimento ai pattern di sicurezza (vedi src/security/patterns.rs)

Documentazione del Codice

Tutti i moduli includono documentazione inline completa. Moduli chiave:

  • src/extraction/parser.rs - Parser diff unificato con estrazione di hunk
  • src/extraction/elements.rs - Rilevamento elementi di codice sensibile al linguaggio
  • src/extraction/snippets.rs - Estrazione completa di frammenti di codice con rilevamento confini
  • src/security/tagger.rs - Motore di matching pattern di sicurezza
  • src/git/commands.rs - Wrapper per operazioni Git

Genera la documentazione API completa:

root@kitploit:~
cargo doc --open

🏷️ Tag

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

🤝 Contributi

I contributi sono benvenuti! Per favore:

  1. Fai il fork del repository
  2. Crea un branch per la funzionalità
  3. Aggiungi test per le nuove funzionalità
  4. Assicurati che cargo test passi
  5. Invia una pull request

📄 Licenza

Licenza MIT - vedi il file LICENSE per i dettagli

📧 Contatti

  • Autore: Teycir Ben Soltane
  • Email: [email protected]
  • Sito Web: teycirbensoltane.tn

🔗 Link

  • Repository GitHub
  • Tracker Issue
  • Changelog
Scarica lo strumento