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
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
373185vor 1 MonatVon 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.

Architektur

root@kitploit:~
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

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.

https://github.com/user-attachments/assets/29ce370a-7317-4fd4-9d1d-c3e868e1083d

Intel HDA Karte

ICH6-kompatibles Emulationsmodell, das in Verbindung mit Pipewire Samples abspielen kann.

HINWEIS: Leichtes Audioknistern ist nur in der Aufnahme hörbar, funktioniert ansonsten einwandfrei

https://github.com/user-attachments/assets/7264a18c-6fcb-46c4-acde-9531b0be7ff6

Intel E1000 Karte

Eine recht naive Implementierung der E1000-Karte. Unterstützt die Weiterleitung der Kommunikation zu/von Ihrer echten Netzwerkkarte. Kann auch WLAN nutzen, ist aber weniger stabil.

https://github.com/user-attachments/assets/b6b9862c-349c-49da-8a79-4769dfa31915

Ältere(s) Beispiel(e)

ProtoPCIem-Karte

Die Karte ist vollständig in QEMU programmiert (im Wesentlichen eine Zustandsmaschine für die Karte), die die gesamte Initialisierung und Befehlsverarbeitung im Userspace vom echten Treiber aus durchführt, der auf dem Host läuft.

Kann softwaregerendertes DOOM ausführen (übermittelt fertige Frames per DMA an die Karte, die QEMU anzeigt) und auch einfache OpenGL 1.X-Spiele (auf den Screenshots: tyr-glquake und xash3d; dank einer benutzerdefinierten OpenGL-Zustandsmaschine, die vollständig in QEMU implementiert ist und die Befehlslisten software-rendert sowie den internen Zustand entsprechend aktualisiert).

Screenshots

Bild

Bild

Bild

Lizenz

  • PCIem-Kernel-Komponenten: GPLv2
  • Beispiele: Dual MIT/GPLv2.

Referenzen

  • Blogbeitrag: https://cakehonolulu.github.io/introducing-pciem/
  • Hackernews-Beitrag: https://news.ycombinator.com/item?id=46689065
  • PCI-Express-Spezifikation: https://pcisig.com/specifications
Tool herunterladen
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

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