Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
DiffCatcher — Ein Rust-CLI-Tool, das rekursiv Git-Repositorys entdeckt, Zustandsänderungen erfasst, Diffs generiert, Code-Elemente mit vollständigen Snippets extrahiert und sicherheitsorientierte Berichte für Code-Review- und Audit-Workflows erstellt. | Kitploit
Tools/GitHubGitHub/teycir/diffcatcher
Statische AnalyseSchwachstellenanalyseCode-AnalyseScripting & AutomatisierungInformationsbeschaffungDevSecOpsDienstprogramme & FrameworksSecret-ErkennungFehlkonfigurationLog-Analyse
GitHubteycir/diffcatcher

DiffCatcher

4vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Ein Rust-CLI-Tool, das rekursiv Git-Repositorys entdeckt, Zustandsänderungen erfasst, Diffs generiert, Code-Elemente mit vollständigen Snippets extrahiert und sicherheitsorientierte Berichte für Code-Review- und Audit-Workflows erstellt.

Repository anzeigen

Unterstützung der Entwicklung

Wenn dieses Projekt Ihre Arbeit unterstützt, tragen Sie zur laufenden Wartung und zu neuen Funktionen bei.

ETH-Spenden-Wallet
0x11282eE5726B3370c8B480e321b3B2aA13686582

Ethereum-Spenden-QR-Code

Scannen Sie den QR-Code oder kopieren Sie die obige Wallet-Adresse.

DiffCatcher Logo

Rust License Security

Ein Rust-CLI-Tool, das rekursiv Git-Repositorys findet, Zustandsänderungen erfasst, Diffs erstellt, Code-Elemente mit vollständigen Snippets extrahiert und sicherheitsorientierte Berichte für Code-Review- und Audit-Workflows erzeugt.


🎯 Hauptfunktionen

  • Repository-Erkennung: Rekursives Durchsuchen von Verzeichnissen nach Git-Repos mit konfigurierbaren Filtern
  • Zustandsverfolgung: Erfassung des Zustands vor/nach dem Pull mit Commit-Hashes, Nachrichten und Erkennung von uncommitteten Änderungen
  • Diff-Generierung: Automatische Erstellung von N vs. N‑1 und historischen Diffs mit Dateimanifesten
  • Element-Extraktion: Analyse von Diffs zur Identifizierung von Funktionen, Strukturen, Klassen, Imports u. a. in über 10 Sprachen
  • Code-Snippets: Extraktion vollständiger Vorher/Nachher-Codes mit Grenzerkennung und Kontextfenstern
  • Sicherheits-Tagging: 18 integrierte Sicherheitsmuster (Krypto, Authentifizierung, Geheimnisse, SQL-Injection, XSS usw.)
  • Multi-Format-Berichte: JSON, Markdown, Text und SARIF mit Repo-übergreifender Sicherheitsübersicht
  • Branch-Diff-Modus: Diff zweier beliebiger Referenzen (Branches, Tags, Commits) in einem einzigen Repository – ideal für PR-Reviews
  • Leistung: Parallele Verarbeitung mit Fortschrittsbalken, LRU-Caching und inkrementellem Modus

Warum nicht einfach Bash?

Ein Einzeiler wie ls | while read line; do git -C "$line" diff HEAD~1 HEAD || true; done zeigt nur rohe Diffs. DiffCatcher bietet rekursive Erkennung, Code-Element-Extraktion, Sicherheitsmustererkennung, SARIF-Ausgabe für CI/CD, parallele Verarbeitung und Repo-übergreifende Sicherheits-Aggregation. Siehe den vollständigen Vergleich unten.

📋 Inhaltsverzeichnis

  • Installation
  • Schnellstart
  • Verwendung
    • Grundlegendes Scannen
    • Pull-Modi
    • Extraktionsoptionen
    • Sicherheits-Tagging
    • Konfigurationsdatei
    • Plugin-System
    • Branch-Diff-Modus (PR-Review)
    • SARIF-Ausgabe
    • Fortgeschrittene Funktionen
  • Berichtsstruktur
  • Konfiguration
  • Architektur
  • Tests
  • Dokumentation
  • Mitwirken

🚀 Installation

Aus dem Quellcode

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

Voraussetzungen

  • Rust 1.70+
  • Git 2.0+

⚡ Schnellstart

root@kitploit:~
# Alle Repos in einem Verzeichnis scannen (nur fetch, keine Änderungen)
diffcatcher ~/projects

# Updates pullen und Sicherheitsbericht erstellen
diffcatcher ~/projects --pull -o ./report

# Zwei Branches in einem einzelnen Repo difffen (PR-Review-Modus)
diffcatcher ./my-repo --diff main..feature/auth -o ./pr-report

# SARIF-Ausgabe für GitHub Code Scanning erzeugen
diffcatcher ~/projects --summary-format sarif,json -o ./report

# Trockenlauf, um zu sehen, was gescannt würde
diffcatcher ~/projects --dry-run

# Schnelles Scannen mit 8 parallelen Arbeitern
diffcatcher ~/projects -j 8 --quiet

📖 Verwendung

Grundlegendes Scannen

root@kitploit:~
# Standard-Scan (nur fetch)
diffcatcher <ROOT_DIR>

# Benutzerdefiniertes Ausgabeverzeichnis
diffcatcher ~/projects -o ./my-report

# Verschachtelte Repos einbeziehen und Symlinks folgen
diffcatcher ~/projects --nested --follow-symlinks

# Versteckte Verzeichnisse überspringen
diffcatcher ~/projects --skip-hidden

Pull-Modi

root@kitploit:~
# Nur fetch (Standard – keine Arbeitsverzeichnis-Änderungen)
diffcatcher ~/projects

# Änderungen tatsächlich pullen
diffcatcher ~/projects --pull

# Force pull mit stash/pop für schmutzige Repos
diffcatcher ~/projects --pull --force-pull

# Rebase-Strategie verwenden
diffcatcher ~/projects --pull --pull-strategy rebase

# Fetch/Pull komplett überspringen (nur historische Diffs)
diffcatcher ~/projects --no-pull

Extraktionsoptionen

root@kitploit:~
# Element-Extraktion überspringen (nur rohe Diffs)
diffcatcher ~/projects --no-summary-extraction

# Elemente extrahieren, aber Code-Snippets überspringen
diffcatcher ~/projects --no-snippets

# Snippet-Kontext und -Grenzen anpassen
diffcatcher ~/projects --snippet-context 10 --max-snippet-lines 300

# Elemente pro Diff begrenzen
diffcatcher ~/projects --max-elements 1000

Sicherheits-Tagging

root@kitploit:~
# Sicherheits-Tagging überspringen
diffcatcher ~/projects --no-security-tags

# Testdateien in die Sicherheitsanalyse einbeziehen
diffcatcher ~/projects --include-test-security

# Benutzerdefinierte Sicherheitsmuster verwenden
diffcatcher ~/projects --security-tags-file ./custom-patterns.json

Konfigurationsdatei

DiffCatcher kann automatisch eine projektspezifische Konfiguration laden von:

  • <ROOT_DIR>/.diffcatcher.toml (Standard)
  • einer benutzerdefinierten Datei über --config <FILE>
  • deaktiviert mit --no-config

Beispiel:

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

CLI-Flags überschreiben Konfigurationswerte, wenn sie explizit gesetzt sind.

Plugin-System

DiffCatcher unterstützt zwei Plugin-Typen:

  • Sicherheitsmuster-Plugins über --security-plugin-file <FILE> (wiederholbar)
  • Extraktor-Plugins über --extractor-plugin-file <FILE> (wiederholbar)

Das Sicherheitsplugin-Format entspricht dem --security-tags-file JSON (version, mode, tags).

Extraktor-Plugin-Format:

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

Branch-Diff-Modus (PR-Review)

root@kitploit:~
# Zwei Branches in einem einzelnen Repo difffen
diffcatcher ./my-repo --diff main..feature/auth

# Bestimmte Commits difffen
diffcatcher ./my-repo --diff abc123..def456

# Diff mit SARIF-Ausgabe für CI-Integration
diffcatcher ./my-repo --diff origin/main..HEAD --summary-format sarif -o ./pr-report

Das Flag --diff BASE..HEAD überspringt die Repository-Erkennung und Fetch/Pull – es erstellt direkt ein Diff zwischen zwei Referenzen (Branches, Tags oder Commit-SHAs) und führt die vollständige Pipeline aus Extraktion und Sicherheits-Tagging auf dem Ergebnis aus.

SARIF-Ausgabe

root@kitploit:~
# SARIF zusammen mit anderen Formaten erzeugen
diffcatcher ~/projects --summary-format sarif,json,md

# Nur SARIF für CI/CD-Upload
diffcatcher ~/projects --summary-format sarif -o ./report

Wenn sarif in --summary-format enthalten ist, wird eine Datei results.sarif im Berichtsstammverzeichnis geschrieben. Diese Datei folgt dem SARIF 2.1.0-Standard und kann mit GitHub Code Scanning, VS Code SARIF Viewer, Azure DevOps und anderen SARIF-kompatiblen Tools integriert werden.

Fortgeschrittene Funktionen

root@kitploit:~
# Inkrementeller Modus (unveränderte Repos überspringen)
diffcatcher ~/projects --incremental -o ./report

# Nach Branch-Muster filtern
diffcatcher ~/projects --branch-filter "main"

# Historientiefe anpassen
diffcatcher ~/projects --history-depth 5

# JSON-Ausgabe für CI/CD
diffcatcher ~/projects --quiet --json > result.json

# Ausführliche Ausgabe mit gefundenen Pfaden
diffcatcher ~/projects --verbose

📁 Berichtsstruktur

root@kitploit:~
<report_dir>/
├── summary.json                    # Globale Zusammenfassung
├── summary.md                      # Markdown-Zusammenfassung
├── results.sarif                   # SARIF 2.1.0-Ausgabe (wenn --summary-format sarif)
├── security_overview.json          # Repo-übergreifende Sicherheits-Aggregation
├── security_overview.md
├── <repo-name>/
│   ├── status.json                 # Repo-Zustand
│   ├── pull_log.txt
│   └── diffs/
│       ├── diff_N_vs_N-1.patch     # Roh-Unified-Diff
│       ├── changes_N_vs_N-1.txt    # Dateimanifest
│       ├── summary_N_vs_N-1.json   # Element-Extraktion
│       ├── 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
└── ...

⚙️ Konfiguration

CLI-Flags

Alle Optionen mit diffcatcher --help anzeigen.

Benutzerdefinierte Sicherheitsmuster

Erstellen Sie eine JSON-Datei mit benutzerdefinierten Mustern:

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

Verwendung mit --security-tags-file ./patterns.json

🏗️ Architektur

root@kitploit:~
src/
├── cli.rs              # Argument-Parsing
├── scanner.rs          # Repository-Erkennung
├── git/                # Git-Operationen
│   ├── commands.rs     # Git-Wrapper
│   ├── state.rs        # Zustandserfassung
│   ├── diff.rs         # Diff-Generierung
│   └── file_retrieval.rs
├── extraction/         # Element-Extraktion
│   ├── parser.rs       # Unified-Diff-Parser
│   ├── elements.rs     # Element-Erkennung
│   ├── snippets.rs     # Code-Snippet-Extraktion
│   ├── boundary.rs     # Klammer/Einrückungs-Verfolgung
│   └── languages/      # Sprachspezifische Muster
├── security/           # Sicherheits-Tagging
│   ├── tagger.rs       # Mustervergleich
│   ├── patterns.rs     # Integrierte Muster
│   └── overview.rs     # Repo-übergreifende Aggregation
└── report/             # Berichtserstellung
    ├── writer.rs       # Verzeichnisstruktur
    ├── json.rs         # JSON-Serialisierung
    ├── sarif.rs        # SARIF 2.1.0-Ausgabe
    ├── markdown.rs     # Markdown-Formatierung
    └── snippet_writer.rs

Bash-Vergleich

Ein einfacher Bash-Einzeiler kann Diffs auflisten:

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

Dies funktioniert für schnelle Überprüfungen, aber DiffCatcher bietet erweiterte Funktionen:

Der Bash-Einzeiler ist ~100 Bytes groß. DiffCatcher ist ein sicherheitsorientiertes Audit-Tool mit vollständiger Code-Element-Extraktion.

🧪 Tests

root@kitploit:~
# Alle Tests ausführen
cargo test

# Bestimmte Test-Suite ausführen
cargo test security_tagger

# Mit Ausgabe ausführen
cargo test -- --nocapture

Die Testabdeckung umfasst:

  • Unit-Tests für Extraktion, Sicherheits-Tagging, Grenzerkennung
  • Integrationstests für Zustandserfassung, Diff-Generierung, Berichte
  • Golden-File-Tests für Extraktionsgenauigkeit
  • Edge-Case-Tests (losgelöster HEAD, Bare-Repos, Ein-Commits)

Leistungs-Benchmarks

root@kitploit:~
# Benchmark-Binärdateien kompilieren
cargo bench --no-run

# Benchmark-Harness ausführen
cargo bench --bench core_bench

Der Benchmark-Quellcode befindet sich in benches/core_bench.rs und misst den Durchsatz von Parser/Extraktion.

CI/CD

GitHub Actions-Workflows sind enthalten:

  • .github/workflows/ci.yml: Format-Check, Clippy, Tests, Bench-Build
  • .github/workflows/release.yml: Tag-basierte Release-Paketierung und GitHub-Release-Veröffentlichung

📚 Dokumentation

Projektdokumentation

  • Plan.md - Vollständige Spezifikation (v1.2)
  • Roadmap.md - Implementierungsfahrplan und Fortschritt
  • Referenz der Sicherheitsmuster (siehe src/security/patterns.rs)

Code-Dokumentation

Alle Module enthalten umfassende Inline-Dokumentation. Schlüsselmodule:

  • src/extraction/parser.rs - Unified-Diff-Parser mit Hunk-Extraktion
  • src/extraction/elements.rs - Sprachbewusste Code-Element-Erkennung
  • src/extraction/snippets.rs - Vollständige Code-Snippet-Extraktion mit Grenzerkennung
  • src/security/tagger.rs - Engine für Sicherheitsmustervergleich
  • src/git/commands.rs - Git-Operation-Wrapper

Vollständige API-Dokumentation erstellen:

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

🤝 Mitwirken

Beiträge sind willkommen! Bitte:

  1. Repository forken
  2. Einen Feature-Branch erstellen
  3. Tests für neue Funktionalität hinzufügen
  4. Sicherstellen, dass cargo test bestanden wird
  5. Einen Pull-Request einreichen

📄 Lizenz

MIT-Lizenz – siehe Datei LICENSE für Details

📧 Kontakt

  • Autor: Teycir Ben Soltane
  • E-Mail: [email protected]
  • Webseite: teycirbensoltane.tn

🔗 Links

  • GitHub-Repository
  • Issue-Tracker
  • Änderungsprotokoll
Tool herunterladen
FlagStandardBeschreibung
-o, --output./reports/<timestamp>Ausgabeverzeichnis für Berichte
-j, --parallel4Gleichzeitige Repo-Verarbeitung
-t, --timeout120Git-Operation-Timeout (Sekunden)
-d, --history-depth2Zu diffende historische Commits
--snippet-context5Kontextzeilen um Änderungen
--max-snippet-lines200Max. Zeilen pro Snippet
--max-elements500Max. Elemente pro Diff
--diff—Diff zweier Referenzen in einem Repo (BASE..HEAD)
--summary-formatjson,mdAusgabeformate: json, md, txt, sarif
FähigkeitBash-EinzeilerDiffCatcher
Rekursive ErkennungNur Elemente der obersten EbeneVerschachtelte Repos, Symlinks, Filter
ZustandsverfolgungKeineCommit-Hashes, Erkennung von Uncommitted, Pull-Protokolle
Code-VerständnisNur rohes DiffExtrahiert Funktionen/Structs/Klassen in über 10 Sprachen
Code-SnippetsKeineVollständiger Vorher/Nachher-Code mit Kontextfenstern
SicherheitsanalyseKeine18 integrierte Muster (Authentifizierung, Krypto, Geheimnisse, SQLi, XSS)
AusgabeformateNur TerminalJSON, Markdown, SARIF (GitHub Code Scanning)
Repo-übergreifende AnsichtPro RepoAggregierter Sicherheitsbericht über alle Repos
LeistungSequentiellParallele Arbeiter, LRU-Caching, inkrementeller Modus
CI/CD-IntegrationKeineSARIF-Upload zu GitHub/Azure DevOps
Fehlerbehandlung`
PfadbehandlungScheitert bei LeerzeichenBehandelt alle Pfadnamen korrekt
Historischer KontextFest HEAD~1Konfigurierbare Tiefe, Zustandsverfolgung