Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
pciem — Ein Linux-Framework, das benutzerdefinierte "virtuelle" PCIe-Karten-Shims ermöglicht, um die Entwicklung von PCIe-Kartentreibern im Host zu ermöglichen. | Kitploit
Tools/GitHubGitHub/cakehonolulu/pciem
Embedded-System-SicherheitSicherheitsvirtualisierungFuzzingPenetrationstestsHardware-Sicherheit
GitHubcakehonolulu/pciem

pciem

Ein Linux-Framework, das benutzerdefinierte "virtuelle" PCIe-Karten-Shims ermöglicht, um die Entwicklung von PCIe-Kartentreibern im Host zu ermöglichen.

Repository anzeigen
3731819vor 19 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

PCIem

Ein Linux-Kernel-Framework, das die Emulation synthetischer PCIe-Geräte im Userspace ermöglicht. | Dokumentation

Was ist PCIem?

PCIem ist ein Framework, das virtuelle PCIe-Geräte im Linux-Kernel erstellt, indem es einige neuartige Techniken nutzt, um synthetische Karten als legitime PCI-Geräte für das Host-Betriebssystem erscheinen zu lassen.

Kurz gesagt: PCIem ist ein Framework für die (wenn auch nicht darauf beschränkte) Entwicklung und das Testen von PCIe-Gerätetreibern, ohne dass tatsächliche Hardware auf dem Host erforderlich ist.

Vergleich mit libfvio-user

PCIem und libfvio-user sind zwei verschiedene Lösungen für unterschiedliche Anforderungen. Beim Vergleich beider könnte Verwirrung entstehen, daher werden hier die Unterschiede dargelegt (siehe Abbildung 1 für weitere Details).

Der Hauptunterschied besteht darin, dass libvfio-user in der Regel auf einen Client angewiesen ist (der das vfio-user-Protokoll implementiert), normalerweise QEMU (über KVM, mittels VM-Exits), um das emulierte PCIe-Gerät dem Gast zugänglich zu machen. Sie schreiben Ihren vfio-Server (normalerweise mit einem Callback-Mechanismus), der dann mit dem Client interagiert.

Was PCIem stattdessen tut, ist, das Gerät direkt auf dem Host verfügbar zu machen; kein KVM, keine Gäste, keine virtuellen Maschinen, nichts. Das Gerät erscheint auf dem PCIe-Bus des Hosts, als wäre es physisch angeschlossen.

FunktionPCIemlibfvio-user
VerbindungGerätedatei (/dev/pciem)UNIX-Sockets (vfio-user-Protokoll)
Zieltreiber läuft aufHostGast-Betriebssystem
Emuliertes Gerät läuft aufUserspaceUserspace
GerätezugriffeDirekt (innerhalb des Hosts)Virtualisiert (Gast zu Host)

Abbildung 1: Vergleich zwischen Frameworks

Architektur

graph LR
    subgraph Kernel ["Host Linux Kernel"]
        direction TB

        RealDriver["Echter PCIe-Treiber"]

        subgraph Framework ["PCIem Framework"]
            direction TB
            Config["PCI-Konfigurationsraum"]
            BARs["BARs"]
            IRQ["Interrupts"]
            DMA["DMA / IOMMU"]
        end

    end

    Interface(("/dev/pciem"))

    subgraph User ["Linux Userspace"]
        direction TB
        Shim["Geräteemulation"]
    end

    Framework <==> Interface
    Interface <==> Shim

Derzeitige Funktionen

  • BAR-Erstellung: Programmgesteuertes Erstellen und Überwachen von BAR-Regionen.
  • BAR-MMIO-Verfolgung: Erkennung von MMIO-Lese-/Schreibzugriffen und Benachrichtigung, um Polling nach Zugriffen zu vermeiden.
  • Interrupt-Unterstützung: Legacy/MSI/MSI-X-Interrupt-Injektion.
  • PCI-Capability-Framework: PCI-Capability-System (unterliegend als verkettete Liste).
  • DMA-System: IOMMU-bewusste DMA-Zugriffe vom/auf das Userspace-Gerät.
    • P2P-Unterstützung (Vorläufig!): Peer-to-Peer-DMA zwischen Geräten mit Whitelist-basierter Zugriffskontrolle.
  • Userspace: Implementieren Sie Ihre PCIe-Geräte vollständig im Userspace.

Mindestunterstützte Umgebung

  • Linux-Kernel-Version: 6.6
  • C-Compiler: gcc-12
  • Architektur: amd64/i386, aarch64, riscv

aarch64-Hinweis: Getestet mit Raspberry Pi 4b, Device Tree (kein ACPI)

riscv-Hinweis: Getestet mit VisionFive 2 (Device Tree) und Muse Pi Pro (Device Tree und ACPI)


CI-Status

Distribution
Ubuntu Latest --
Ubuntu 24.04 LTS
Debian Stable --
Fedora Latest --
openSUSE Tumbleweed --

Beispiele

Bochs BGA (drm) Karte

Eine Bochs-BGA-kompatible (bochs-drm) Karte, die von Userspace-Programmen wie Weston verwendet werden kann; verwendet SDL3.

https://github.com/user-attachments/assets/d2f7abe4-aef4-4d3a-a30b-ab7ec793faed

NVME-Controller

NVME-Controller mit 1 GB angeschlossenem Speicher. Der Benutzer kann den Speicher frei formatieren, mounten, Dateien erstellen und löschen.

Tool herunterladen