Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pciem — Um framework Linux para permitir shims de cartão PCIe 'Virtual' definidos no espaço do usuário para permitir o desenvolvimento de drivers de cartão PCIe no host. | Kitploit
Ferramentas/GitHubGitHub/cakehonolulu/pciem
Segurança de Sistemas EmbarcadosVirtualização para SegurançaFuzzingTestes de PenetraçãoSegurança de Hardware
GitHubcakehonolulu/pciem

pciem

Um framework Linux para permitir shims de cartão PCIe 'Virtual' definidos no espaço do usuário para permitir o desenvolvimento de drivers de cartão PCIe no host.

Ver Repositório
3731820há 18 horasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PCIem

Um framework do kernel Linux que possibilita emulação sintética de dispositivos PCIe no espaço do usuário. | Documentação

O que é o PCIem?

O PCIem é um framework que cria dispositivos PCIe virtuais no kernel Linux, utilizando algumas técnicas inovadoras para apresentar placas sintéticas como dispositivos PCI legítimos ao SO do host.

Para resumir o que é o PCIem: um framework para (embora não limitado a) desenvolver e testar drivers de dispositivos PCIe sem exigir hardware real no host.

Comparação com o libfvio-user

O PCIem e o libfvio-user são duas soluções diferentes para necessidades diferentes; pode haver confusão ao compará-los, portanto, aqui estão as diferenças (Veja a figura 1 para mais detalhes).

A principal diferença é que o libvfio-user normalmente depende de um cliente (que implementa o protocolo vfio-user), geralmente QEMU (através de KVM, usando VM exits) para expor o dispositivo PCIe emulado ao convidado. Você escreve seu servidor vfio (geralmente com um mecanismo de callback) que então interage com o cliente.

O que o PCIem faz, em vez disso, é expor o dispositivo diretamente no host; sem KVM, sem convidados, sem máquinas virtuais, nada. O dispositivo aparece no barramento PCIe do host como se estivesse fisicamente conectado.

FuncionalidadePCIemlibfvio-user
ConexãoArquivo de dispositivo (/dev/pciem)Sockets UNIX (protocolo vfio-user)
Onde o driver alvo executaHostSO convidado
Onde o dispositivo emulado executaEspaço do usuárioEspaço do usuário
Acessos ao dispositivoDireto (dentro do host)Virtualizado (convidado para host)

Figura 1: Comparação entre os frameworks

Arquitetura

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

        RealDriver["Real PCIe Driver"]

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

    end

    Interface(("/dev/pciem"))

    subgraph User ["Linux Userspace"]
        direction TB
        Shim["Device Emulation"]
    end

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

Funcionalidades Atuais

  • Criação de BARs: Criar e monitorar regiões BAR programaticamente.
  • Rastreamento de MMIO em BARs: Detecção de leitura/escrita MMIO e notificação para evitar polling.
  • Suporte a interrupções: Injeção de interrupções Legacy/MSI/MSI-X.
  • Framework de capacidades PCI: Sistema de capacidades PCI (lista encadeada internamente).
  • Sistema DMA: Acessos DMA com consciência de IOMMU de/para o dispositivo no espaço do usuário.
    • Suporte P2P (Preliminar!): DMA ponto a ponto entre dispositivos com controle de acesso baseado em lista de permissões.
  • Espaço do usuário: Implemente seus dispositivos PCIe inteiramente no espaço do usuário.

Ambiente mínimo suportado

  • Versão do kernel Linux: 6.6
  • Compilador C: gcc-12
  • Arquitetura: amd64/i386, aarch64, riscv

nota aarch64: Testado com Raspberry Pi 4b, device-tree (sem ACPI)

nota riscv: Testado com VisionFive 2 (Device-tree) e Muse Pi Pro (Device-tree e ACPI)


Status da CI

Distribuição
Ubuntu mais recente --
Ubuntu 24.04 LTS
Debian estável --
Fedora mais recente --
openSUSE Tumbleweed --

Exemplos

Placa Bochs BGA (drm)

Uma placa compatível com Bochs BGA (bochs-drm) que pode ser utilizada por utilitários no espaço do usuário, como o Weston; usa SDL3.

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

Controlador NVME

Controlador NVME com 1GB de armazenamento anexado. O usuário pode livremente formatar, montar, criar e remover arquivos da memória.

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

Baixar ferramenta