Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
mmiotic — अप्रलेखित हार्डवेयर के लिए विलंबता एक्स-रे | Kitploit
उपकरण/GitHubGitHub/xoreaxeaxeax/mmiotic
टोहीरिवर्स इंजीनियरिंगजानकारी एकत्र करनाहार्डवेयर हैकिंगहार्डवेयर सुरक्षा
GitHubxoreaxeaxeax/mmiotic

mmiotic

अप्रलेखित हार्डवेयर के लिए विलंबता एक्स-रे

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

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

सभी देखें →

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

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

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

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

mmiotic

MMIO टाइमिंग के लिए एक अन्वेषणात्मक उपकरण — किसी भी भौतिक पते का समय नापें, और विलंबता से हार्डवेयर की पड़ताल करें।

MMIO latency heatmap

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

उदाहरण

मेमोरी रेंज की रिवर्स-इंजीनियरिंग

भौतिक मेमोरी का पहला मेगाबाइट शुरू करने के लिए एक आसान उदाहरण है, भले ही इसकी संरचना पहले से ही अच्छी तरह से ज्ञात हो।

first megabyte heatmap

विलंबता सीमाएँ हमें बताई गई लेआउट पर निर्भर हुए बिना एड्रेस स्पेस को विभाजित करने देती हैं।

  1. एक साधारण लेटेंसी स्कैन से शुरू करें: sudo ./mmiotic --start-address 0x0 --end-address 0x100000 --stride 4 --count 20 --quiet-mmap
  2. विलंबता क्लासिक सीमाओं पर आती है — 0x9FFFF तक DRAM ~380 cy, फिर 128 KB वीडियो होल, जो 0xB0000 पर दो भागों में बँट जाता है। 0x20000 पर विचरण में बदलाव नल पेज के लिए अलग पेज वॉक का संकेत दे सकता है।
  3. A0000–AFFFF: धीमा और अस्थिर (996 cy, stdev 327), पावर्ड-लेकिन-निष्क्रिय Radeon को रूट किया गया। B0000–BFFFF: तेज़ और स्थिर (780 cy, stdev 3.2, ffffffff पढ़ता है), किसी के द्वारा दावा नहीं किया गया। समान दिखने वाला डेटा, लेकिन 100x विचरण अंतर।
  4. C0000–FFFFF: /proc/iomem कहता है "System ROM", लेकिन स्कैन DRAM विलंबता दिखाता है, फ्लैश गति नहीं — BIOS DRAM में शैडो किया गया है।

अप्रलेखित मेलबॉक्स रजिस्टर

रूट-कॉम्प्लेक्स कॉन्फ़िग स्पेस (00:00.0, 4 KB) को एक समतल ~675-साइकिल फ़्लोर के मुकाबले लेटेंसी आउटलायर्स के लिए स्कैन करें:

mailbox register heatmap

मेलबॉक्स विलंबता आसपास के डेटा से काफी अधिक है, और डुप्लिकेट स्पाइक्स तथा समतुल्य विचरण हमें कार्यात्मक रूप से समान रजिस्टरों को मिलाने देते हैं।

  1. रूट-कॉम्प्लेक्स कॉन्फ़िग स्पेस स्कैन करें: sudo ./mmiotic --start-address 0xf8000000 --end-address 0xf8001000 --stride 4 --count 200
  2. दो dwords आउटलायर हैं: ऑफसेट 0xe4 (1218 cy, value 80e3110b) और 0xa4 (1199 cy, value deadbeef)। e4 एक प्रलेखित डोरबेल है; a4 है अप्रलेखित।
  3. लगभग समान विलंबता, 0x40 अलग, दोनों फ़्लोर से काफी ऊपर — एक रजिस्टर परिवार उसी off-die लक्ष्य तक पहुँच रहा है, जिसमें से केवल e4 सार्वजनिक है।
  4. मान भिन्न हैं: deadbeef एक अनइनिशियलाइज़्ड/त्रुटि सेंटिनल की तरह पढ़ा जाता है — वही मेलबॉक्स, a4 अकार्यान्वित या अमान्य इनपुट दिया गया।

इंटरप्ट कैलिब्रेशन

सावधानीपूर्वक चुनी गई विलंबताएँ कभी-कभी असामान्य शोषण परिदृश्यों में उपयोग की जा सकती हैं (MCHAMMER, smiiiiiiiiiiiiiiii):

interrupt calibration heatmap

यहाँ एक निष्क्रिय, ड्राइवर-रहित Radeon एक संरेखित 4-बाइट रीड को ~100,000-साइकिल रुकावट में बदल देता है।

  1. sudo ./mmiotic --start-address 0x90e00000 --end-address 0x90e00100 --stride 4 --count 50 — GPU BAR (0x90e00000, 256 KB) के शीर्ष को स्वीप करें। 0x90e00008 की लागत 110,152 cy; 0x90e00018, 16 बाइट आगे, फिर से तेज़ — 1,523 पर — प्रति-रजिस्टर, प्रति-पेज नहीं।
  2. sudo ./mmiotic --start-address 0x90e00000 --end-address 0x90e40000 --stride 4 --count 1 --binary — --binary बिट-रिवर्सल क्रम में जाँच करता है, इसलिए पूर्ण 256 KB एपर्चर समान रूप से कवर हो जाता है 1,012 प्रोब के बाद, एक सतत 48 KB ब्लॉक का नक्शा बनाता है जहाँ हर रजिस्टर धीमा है।
  3. संभवतः, विलंबता एक क्लॉक/पावर-गेटेड डोमेन को अनगेट करने के लिए SMU राउंड-ट्रिप के कारण है — इसलिए लेटेंसी मैप GPU का पावर लेआउट निकालता है, बिना किसी ड्राइवर या डेटाशीट की आवश्यकता के।

किलर पीक

आदर्श रूप से, किसी भौतिक पते को पढ़ना एक अपेक्षाकृत सुरक्षित ऑपरेशन होगा, लेकिन mmiotic गलती से अपवादों को ढूँढने में विशेष रूप से अच्छा है:

killer peek heatmap

उदाहरण के लिए, उपरोक्त प्लेटफ़ॉर्म पर, 0xdc5003b0 का 1-बाइट रीड — एक अनड्रिवन Zen 4 iGPU रजिस्टर BAR (Region 5, 0xdc500000, 512 KB) का ऑफसेट 0x3b0 — विश्वसनीय रूप से सिस्टम को रीसेट कर देता है।

  1. sudo ./mmiotic --address 0xdc5003b0 --size 1 --count 1। कोई आउटपुट नहीं; मशीन रिबूट हो जाती है।
  2. ठीक एक dword: दोनों ओर 0x3ac और 0x3b4 ~3,200 cy पर 00000000 पढ़ते हैं और हानिरहित हैं।
  3. 0x3a0–0x3fc का प्रति-dword स्वीप 17 सुरक्षित dwords के साथ मिले-जुले 7 ज़हरीले dwords ढूँढता है।
  4. sudo busybox devmem 0xdc5003b0 32 और sudo dd if=/dev/mem bs=1 count=1 skip=$((0xdc5003b0)) मशीन को बंद कर देते हैं यदि आप बिचौलिया छोड़ना चाहते हैं।

उपयोग

[!WARNING] कुछ प्लेटफ़ॉर्म रीसेट हो जाएँगे जब विशिष्ट एड्रेस क्षेत्रों की जाँच की जाती है mmiotic द्वारा। सावधान रहें कि आप इसका उपयोग कहाँ करते हैं।

लक्ष्यीकरण

विकल्पनाम
-b/-d/-f/-rPCI --bus/--device/--function/--register — ECAM आधार के विरुद्ध डिकोड किया गया
-o, --offset <n>MMIO आधार से ऑफसेट (B/D/F डिकोड छोड़ता है)
-A, --address <n>एक भौतिक पता; क्षेत्र आधार को परोक्ष रूप से सेट करता है
-a/-z--start-address/--end-address — एक भौतिक रेंज; --scan का संकेत देता है

ECAM आधार और आकार ACPI MCFG (/sys/firmware/acpi/tables/MCFG) से स्वतः पता लगाए जाते हैं। -M, --mmio-base / -Z, --mmio-size के साथ ओवरराइड करें।

स्कैनिंग

विकल्पप्रभाव
-S, --scanलक्ष्य क्षेत्र के सभी पतों को स्कैन करें
-t, --stride <n>पतों के बीच कदम (डिफ़ॉल्ट: 4)
-n, --limit <n>इतने पतों के बाद रुकें
--binaryबिट-रिवर्सल क्रम में जाँच करें — k जाँचों के बाद रेंज ~range/k ग्रैन्युलैरिटी पर समान कवरेज रखती है (ऊपर चेतावनी देखें)
-x, --limitedसीमित रजिस्टर रेंज (0x00–0xff बनाम 0x000–0xfff)
-e, --skipउन फ़ंक्शनों को छोड़ें जो ऑफसेट 0 पर 0xffffffff पढ़ते हैं (अनुपस्थित डिवाइस)
-I, --iomem/proc/iomem में हर गैर-System-RAM टॉप-लेवल क्षेत्र को स्कैन करें
-R, --ioregion <name>/proc/iomem के उन क्षेत्रों को स्कैन करें जिनका लेबल <name> से मेल खाता है, किसी भी गहराई पर

--find-target/--find-longest स्कैनिंग को खोज में बदल देते हैं:

विकल्पप्रभाव
-F, --find-target <s>ऐसा पता खोजें जिसका एक्सेस समय s सेकंड तक पहुँचे, फिर उसे और ऊपर ले जाने के लिए चौड़ाई बढ़ाएँ (असंरेखित 4b → 8/16/32/64/512b)
-G, --find-longestवही खोज, लेकिन पहली हिट पर रुकने के बजाय हर उम्मीदवार को समाप्त करें
-B, --fallbacks <n>एस्केलेशन चरण में ले जाए गए उम्मीदवार (डिफ़ॉल्ट: 10)

एक्सेस विधि

विकल्पप्रभाव
-s, --size <n>प्रति एक्सेस बाइट्स: 1 / 2 / 4 (डिफ़ॉल्ट) / 8 / 16 (XMM) / 32 (YMM) / 64 (ZMM) / 512 (fxrstor)। आकार > 4 स्पेक के बाहर हैं लेकिन परीक्षित हार्डवेयर पर काम करते हैं; AVX चौड़ाई के लिए AVX / AVX-512F आवश्यक है
-c, --count <n>प्रति पता नमूने (डिफ़ॉल्ट: 1); न्यूनतम रिपोर्ट किया जाता है
-L, --lockलॉक किए गए RMW का समय नापें: lock xadd (आकार 1/2/4/8) या lock cmpxchg16b (आकार 16)। मान को वापस लिखता है
-g, --gatherएक वेक्टर किए गए गैदर का समय नापें; --size 16/32/64 XMM/YMM/ZMM (AVX-512) चुनता है
-w, --write-readएक ऐसे रीड को समयबद्ध करके write विलंबता को कैप्चर करें जिसे पिछले पोस्ट किए गए राइट को देखना चाहिए — नीचे देखें
-E, --enter (--enter-2, --enter-3)एक enter $0, $31 से 30 एक्सेस तक का बर्स्ट चलाएँ — नीचे देखें
-k, --continuefxrstor फ़ॉल्ट पर, उस नमूने को छोड़ दें और स्कैन करते रहें

आउटपुट / निष्पादन

टूल डाउनलोड करें