Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
pciem — एक लिनक्स फ्रेमवर्क जो उपयोगकर्ता-स्थान द्वारा परिभाषित "वर्चुअल" PCIe कार्ड शिम्स को सक्षम करता है ताकि इन-होस्ट PCIe कार्ड ड्राइवर विकास किया जा सके। | Kitploit
उपकरण/GitHubGitHub/cakehonolulu/pciem
एम्बेडेड सिस्टम सुरक्षासुरक्षा वर्चुअलाइजेशनफज़िंगपेनिट्रेशन टेस्टिंगहार्डवेयर सुरक्षा
GitHubcakehonolulu/pciem

pciem

एक लिनक्स फ्रेमवर्क जो उपयोगकर्ता-स्थान द्वारा परिभाषित "वर्चुअल" PCIe कार्ड शिम्स को सक्षम करता है ताकि इन-होस्ट PCIe कार्ड ड्राइवर विकास किया जा सके।

रिपॉजिटरी देखें
3731857घं 45मि पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

PCIem

एक Linux कर्नेल फ्रेमवर्क जो सिंथेटिक यूज़रस्पेस PCIe डिवाइस एमुलेशन को सक्षम करता है। | दस्तावेज़ीकरण

PCIem क्या है?

PCIem एक फ्रेमवर्क है जो Linux कर्नेल में वर्चुअल PCIe डिवाइस बनाता है, जिसमें कुछ नवीन तकनीकों का उपयोग करके सिंथेटिक कार्ड को होस्ट OS में वैध PCI डिवाइस के रूप में प्रस्तुत किया जाता है।

संक्षेप में PCIem: यह PCIe डिवाइस ड्राइवरों को विकसित करने और परीक्षण करने के लिए एक फ्रेमवर्क है (इसी तक सीमित नहीं) जिसमें होस्ट पर वास्तविक हार्डवेयर की आवश्यकता नहीं होती।

libfvio-user से तुलना

PCIem और libfvio-user विभिन्न आवश्यकताओं के लिए दो अलग-अलग समाधान हैं; दोनों की तुलना करने पर भ्रम हो सकता है, इसलिए यहाँ अंतर दिए गए हैं (अधिक जानकारी के लिए चित्र 1 देखें)।

मुख्य अंतर यह है कि libvfio-user आमतौर पर एक क्लाइंट पर निर्भर करता है (जो vfio-user प्रोटोकॉल लागू करता है), आमतौर पर QEMU (KVM के माध्यम से, VM निकास का उपयोग करके) जो एमुलेटेड PCIe डिवाइस को गेस्ट को उजागर करता है। आप अपना vfio सर्वर लिखते हैं (आमतौर पर कॉलबैक तंत्र के साथ) जो फिर क्लाइंट के साथ इंटरैक्ट करता है।

इसके विपरीत, PCIem डिवाइस को सीधे होस्ट पर उजागर करता है; कोई KVM, कोई गेस्ट, कोई वर्चुअल मशीन नहीं। डिवाइस होस्ट के PCIe बस पर ऐसे दिखाई देता है जैसे वह भौतिक रूप से जुड़ा हो।

आर्किटेक्चर

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

वर्तमान सुविधाएँ

  • BAR निर्माण: प्रोग्रामेटिक रूप से BAR क्षेत्र बनाएँ और उनकी निगरानी करें।
  • BAR MMIO ट्रेसिंग: MMIO रीड/राइट का पता लगाना और अधिसूचना ताकि एक्सेस के लिए पोलिंग से बचा जा सके।
  • इंटरप्ट सपोर्ट: लीगेसी/MSI/MSI-X इंटरप्ट इंजेक्शन।
  • PCI क्षमता फ्रेमवर्क: PCI क्षमताओं की प्रणाली (नीचे लिंक्ड-लिस्ट)।
  • DMA प्रणाली: यूज़रस्पेस डिवाइस से/को IOMMU-जागरूक DMA एक्सेस।
    • P2P समर्थन (प्रारंभिक!): व्हाइटलिस्ट-आधारित एक्सेस नियंत्रण के साथ उपकरणों के बीच पीयर-टू-पीयर DMA।
  • यूज़रस्पेस: अपने PCIe डिवाइस को पूरी तरह यूज़रस्पेस में लागू करें।

न्यूनतम समर्थित वातावरण

  • Linux कर्नेल संस्करण: 6.6
  • C कंपाइलर: gcc-12
  • आर्किटेक्चर: amd64/i386, aarch64, riscv

aarch64 नोट: Raspberry Pi 4b पर परीक्षण किया गया, डिवाइस-ट्री (कोई ACPI नहीं)

riscv नोट: VisionFive 2 (डिवाइस-ट्री) और Muse Pi Pro (डिवाइस-ट्री और ACPI) पर परीक्षण किया गया


CI स्थिति

उदाहरण

Bochs BGA (drm) कार्ड

एक Bochs BGA-संगत (bochs-drm) कार्ड जिसे Weston जैसी यूज़रस्पेस उपयोगिताओं द्वारा चलाया जा सकता है; SDL3 का उपयोग करता है।

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

NVME नियंत्रक

NVME नियंत्रक जिसमें 1GB स्टोरेज संलग्न है। उपयोगकर्ता मेमोरी से स्वतंत्र रूप से फ़ॉर्मेट, माउंट, फ़ाइलें बना और हटा सकता है।

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

Intel HDA कार्ड

ICH6-संगत एमुलेशन मॉडल जो pipewire के साथ सैंपल चला सकता है।

नोट: रिकॉर्डिंग में हल्की ऑडियो क्रैकलिंग सुनाई देती है, अन्यथा ठीक काम करता है

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

Intel E1000 कार्ड

E1000 कार्ड का एक काफी सरल कार्यान्वयन। आपके वास्तविक NIC से/को संचार पुनर्निर्देशन का समर्थन करता है। Wi-Fi का भी उपयोग कर सकता है लेकिन कम स्थिर है।

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

पुराने उदाहरण

ProtoPCIem कार्ड

कार्ड पूरी तरह QEMU में प्रोग्राम किया गया है (मूलतः कार्ड के लिए स्टेट मशीन), जो होस्ट पर चलने वाले वास्तविक ड्राइवर से सभी यूज़रस्पेस इनिशियलाइज़ेशन और कमांड हैंडलिंग करता है।

यह सॉफ्टवेयर-रेंडर किया हुआ DOOM चला सकता है (DMA के साथ तैयार फ्रेम कार्ड को सबमिट करता है जिसे QEMU प्रदर्शित करता है) और साथ ही सरल OpenGL 1.X गेम्स (स्क्रीनशॉट पर, tyr-glquake और xash3d; QEMU में पूरी तरह से लागू एक कस्टम OpenGL स्टेट मशीन के लिए धन्यवाद जो कमांड सूचियों को सॉफ्टवेयर-रेंडर करता है और आंतरिक स्थिति को तदनुसार अपडेट करता है)।

स्क्रीनशॉट

imagen

imagen

imagen

लाइसेंस

  • PCIem कर्नेल घटक: GPLv2
  • उदाहरण: दोहरी MIT/GPLv2।

संदर्भ

  • ब्लॉग पोस्ट: https://cakehonolulu.github.io/introducing-pciem/
  • Hackernews पोस्ट: https://news.ycombinator.com/item?id=46689065
  • PCI Express विनिर्देश: https://pcisig.com/specifications
टूल डाउनलोड करें
विशेषताPCIemlibfvio-user
कनेक्शनडिवाइस फ़ाइल (/dev/pciem)UNIX सॉकेट्स (vfio-user प्रोटोकॉल)
लक्ष्य ड्राइवर कहाँ चलता हैहोस्टगेस्ट OS
एमुलेटेड डिवाइस कहाँ चलता हैयूज़रस्पेसयूज़रस्पेस
डिवाइस एक्सेसप्रत्यक्ष (होस्ट के भीतर)वर्चुअलाइज़्ड (गेस्ट से होस्ट)

चित्र 1: फ्रेमवर्क के बीच तुलना

वितरण
Ubuntu नवीनतम --
Ubuntu 24.04 LTS
Debian स्थिर --
Fedora नवीनतम --
openSUSE Tumbleweed --