Zum Hauptinhalt springen
Nicht gelistete Seite
Diese Seite ist nicht gelistet. Suchmaschinen indexieren sie nicht, und nur Nutzer mit einem direkten Link können darauf zugreifen.

Details zum technischen Stack

Gilt für:
PQC ScannerRustCargoPlattformübergreifend

Kerntechnologie​

Version: Stable (neueste empfohlen)

Warum Rust?

Speichersicherheit

Keine Garbage Collection, Garantien für Speichersicherheit zur Kompilierzeit

Leistung

Zero-Cost-Abstraktionen, vergleichbar mit C/C++

Nebenläufigkeit

Furchtlose Nebenläufigkeit dank Ownership-System

Plattformübergreifend

Erstklassige Unterstützung für Linux, macOS, Windows

  • Moderne Werkzeuge: Cargo-Paketmanager, rustfmt, clippy
  • Starkes Typsystem: Verhindert viele Fehlerklassen bereits zur Kompilierzeit

Abhängigkeiten​

rustls (v0.23+)

Reine Rust-Implementierung von TLS 1.2/1.3, zusammen mit rustls-pemfile für das Laden von PEM verwendet.

Funktionen:

  • Keine OpenSSL-Abhängigkeit
  • Speichersicheres TLS
  • Moderne Cipher-Suites
  • TLS-1.3-Unterstützung

x509-parser (v0.16+)

X.509-Zertifikatsparsing

Fähigkeiten:

  • DER-/PEM-Zertifikate parsen
  • Öffentliche Schlüssel extrahieren
  • Zertifikatsketten validieren
  • OID-Parsing

der & pem (v0.7+ / v3.0+)

Low-Level-Kodierung/-Dekodierung von DER- und PEM-Daten.

tokio (v1.35+)

Asynchrone Runtime (mit vollem Funktionsumfang aktiviert).

Verwendete Funktionen:

  • fs: Asynchrone Dateisystemoperationen
  • net: TCP-/TLS-Netzwerk
  • sync: Channels, Mutexe
  • time: Timer, Timeouts
  • macros: #[tokio::main]
  • rt-multi-thread: Multithreaded-Runtime

clap (v4.5+)

Parsing von Befehlszeilenargumenten (unter Verwendung der Features derive, env und cargo).

Funktionen:

  • Derive-Makros zur einfachen CLI-Definition
  • Unterbefehle
  • Unterstützung von Umgebungsvariablen
  • Shell-Vervollständigungen
  • Hilfe-Generierung

serde (v1.0+)

Serialisierungs-Framework, gepaart mit serde_json und serde_yaml für die JSON- und YAML-Ausgabeformate.

Unterstützte Formate:

  • JSON (Standardausgabe)
  • YAML (menschenlesbar)
  • Benutzerdefiniertes SARIF-Format

tracing (v0.1+)

Strukturiertes Logging, wobei tracing-subscriber (env-filter-Feature) die Log-Ausgabe und -Filterung übernimmt.

Funktionen:

  • Strukturiertes, kontextbezogenes Logging
  • Mehrere Log-Level
  • Filterung nach Modul
  • Unterstützung von JSON-Ausgabe

anyhow & thiserror (v1.0+)

Verwendung:

  • anyhow: Fehler auf Anwendungsebene
  • thiserror: Benutzerdefinierte Fehler auf Bibliotheksebene

walkdir (v2.4+)

Rekursive Verzeichnisdurchquerung

Funktionen:

  • Effizientes rekursives Scannen
  • Behandlung symbolischer Links
  • Filterung
  • Zugriff auf Metadaten

rayon (v1.8+)

Datenparallelität

Anwendungsfälle:

  • Parallele Dateiverarbeitung
  • Nebenläufige Zertifikatsanalyse
  • Multithreaded-Scanning

pcap (v2.0+)

Paketerfassung (libpcap-Wrapper)

Plattformabhängigkeiten:

  • Linux: libpcap-dev
  • macOS: Integriertes libpcap
  • Windows: WinPcap oder Npcap

pnet (v0.35+)

Paket-Parsing

Funktionen:

  • TCP-/IP-Paket-Parsing
  • Protokollunterstützung für Layer 2-4
  • Helfer zur Stream-Wiederzusammensetzung

indicatif (v0.17+)

Fortschrittsbalken

ratatui (v0.26+)

Terminal-UI-Framework, zusammen mit crossterm für die Terminalsteuerung verwendet.

Verwendet für:

  • Echtzeitanzeige im Netzwerkmodus
  • Interaktive Statistiken
  • Statusüberwachung

Build-System​

Das Projekt wird mit Cargo gebaut. Das Paket wird unter dem Namen dke-scanner-agent in Version 1.0.0 veröffentlicht, zielt auf die 2021-Edition ab und ist dual unter MIT oder Apache-2.0 lizenziert. Es erzeugt eine Binärdatei namens dke-scanner-agent und eine wiederverwendbare Bibliothek namens pqc_scanner.

Die Laufzeitabhängigkeiten sind nach Zweck gruppiert:

GruppeCrates
Coretokio, anyhow, thiserror
Kryptorustls, x509-parser, der, pem
CLIclap
Serialisierungserde, serde_json, serde_yaml
Loggingtracing, tracing-subscriber
Dateisystemwalkdir
Parallelitätrayon
Netzwerkpcap, pnet
UIindicatif, ratatui, crossterm

Zu den Entwicklungsabhängigkeiten gehören criterion für Benchmarking und tempfile für Tests. Das Release-Profil ist auf Größe und Geschwindigkeit abgestimmt: maximale Optimierungsstufe, Link-Time-Optimierung, eine einzige Codegen-Einheit und entfernte Debug-Symbole.

Plattformspezifische Abhängigkeiten​

Systempakete:

# Ubuntu/Debian
sudo apt-get install libpcap-dev pkg-config build-essential

# RHEL/CentOS
sudo yum install libpcap-devel

# Arch
sudo pacman -S libpcap

Systempakete:

# libpcap ist in macOS enthalten
# Optional: Homebrew für Entwicklungswerkzeuge
brew install pkg-config

Voraussetzungen:

# Npcap installieren
choco install npcap

Kompilierung​

cargo build --release

Ausgabe: target/release/dke-scanner-agent

Leistungsmerkmale​

Binärgröße

Build-TypGrößeBeschreibung
Debug~50 MBNicht optimiert mit Debug-Symbolen
Release~8 MBOptimiert, Symbole entfernt
Release + UPX~3 MBMit UPX komprimiert

Speicherverbrauch

ModusTypischSpitze
Agent30 MB50 MB
Dateisystem50 MB100 MB
Domain40 MB80 MB
Netzwerk60 MB150 MB

CPU-Auslastung

  • Einzelthread-Parsing: 1 Kern
  • Paralleler Dateisystem-Scan: Alle Kerne
  • Netzwerkerfassung: 1-2 Kerne

Testabhängigkeiten​

Tests stützen sich auf eine kleine Gruppe von nur zur Entwicklung verwendeten Crates:

CrateZweck
criterionBenchmarking
tempfileTemporäre Dateien für Tests
mockallMocking-Framework
proptestProperty-basiertes Testen

CI/CD-Integration​

name: CI
on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: cargo test --all-features
- run: cargo clippy -- -D warnings

Versionsanforderungen​

AbhängigkeitMindestversionEmpfohlen
Rust1.70Neueste stable
Cargo1.70Neueste
libpcap1.9.01.10.0+