USB ट्रैफ़िक कैसे डंप करें?


9

मुझे एक USB गेमपैड मिला है और मैं संकेतों और आदेशों को देखना और निरीक्षण करना चाहूंगा कि यह परिधीय वास्तव में मेरे पीसी / कर्नेल को भेज रहा है: मैं यह कैसे कर सकता हूं?

मैं मान रहा था कि कुछ ऐसा है

cat /dev/bus/usb/006/003

पर्याप्त था, लेकिन जाहिर तौर पर यह कमांड तुरंत लौटता है और कुछ अपठित एनकोडेड चार्ट प्रिंट करता है।

उस तरह एक USB डिवाइस को "डीबग" करने का एक तरीका है?

जवाबों:


11

आप Wireshark के साथ USB ट्रैफ़िक कैप्चर कर सकते हैं।
यह विकी से है :

लिनक्स पर USB ट्रैफ़िक को डंप करने के लिए, आपको usbmonमॉड्यूल की आवश्यकता होती है , जो लिनक्स 2.6.11 के बाद से मौजूद है । /usr/src/linux/Documentation/usb/usbmon.txtलिनक्स सोर्स ट्री में उस मॉड्यूल की जानकारी उपलब्ध है । आपके द्वारा उपयोग किए जा रहे वितरण और उस वितरण के संस्करण के आधार पर, उस मॉड्यूल को कर्नेल में बनाया जा सकता है, या लोड करने योग्य मॉड्यूल हो सकता है; यदि यह एक लोड करने योग्य मॉड्यूल है, तो आपके द्वारा उपयोग किए जा रहे वितरण और उस वितरण के संस्करण के आधार पर, यह आपके लिए लोड हो सकता है या नहीं भी हो सकता है। यदि यह एक लोड करने योग्य मॉड्यूल है, और लोड नहीं किया गया है, तो आपको इसे कमांड के साथ लोड करना होगा

modprobe usbmon

जिसे रूट के रूप में चलाया जाना चाहिए।

1.0 से पहले libpcap रिलीज़ में USB समर्थन शामिल नहीं है, इसलिए आपको कम से कम libpcap 1.0.0 की आवश्यकता होगी ।

2.6.21 से पहले कर्नेल के संस्करणों के लिए , उपलब्ध एकमात्र USB ट्रैफ़िक कैप्चर तंत्र एक टेक्स्ट-आधारित तंत्र है जो प्रत्येक कच्चे USB ब्लॉक के लिए कैप्चर किए गए डेटा की कुल मात्रा को लगभग 30 बाइट्स तक सीमित करता है। कर्नेल को पैच किए बिना इसे बदलने का कोई तरीका नहीं है। यदि डीबगफ़ेट्स पहले से ही माउंट नहीं है /sys/kernel/debug, तो सुनिश्चित करें कि यह रूट के रूप में निम्नलिखित कमांड जारी करके वहां माउंट किया गया है:

mount -t debugfs / /sys/kernel/debug

कर्नेल संस्करण 2.6.21 और बाद में , USB पैकेट को ट्रेस करने के लिए एक बाइनरी प्रोटोकॉल है जिसमें उस आकार की सीमा नहीं है। उस कर्नेल संस्करण के लिए, आपको libpcap 1.1.0 या नए की आवश्यकता होगी , क्योंकि libpcap 1.0.x USB समर्थन उपयोग करता है, लेकिन सही ढंग से हैंडल नहीं करता है, USB ट्रैफ़िक के लिए मेमोरी-मैप किया गया तंत्र, जो libpcap उपलब्ध होने पर उपयोग करेगा - यह नहीं हो सकता उपलब्ध नहीं है, इसलिए libpcap हमेशा इसका उपयोग करेगी।

में libpcap 1.0.x, यूएसबी पर कब्जा करने के लिए उपकरणों नाम usbn है, जहां n बस की संख्या है। 1.1.0 और बाद में libpcap में, उनका नाम usbmonn है।

आपको Wireshark 1.2.x या नए की भी आवश्यकता होगी ।


2

अपडेट करना क्योंकि जब मैंने इसे देखा तो यह पहला परिणाम था। सबसे अच्छी विधि जो मैंने डेबियन स्ट्रेच पर पाई है वह इस प्रकार है:

# usbhid-dip --entity = सभी

यह सभी USB उपकरणों से आने वाले डेटा को डंप करेगा। मेरे कीबोर्ड को एक ट्रीट की तरह उठाया, और मैं स्ट्रीम में हर ओपोड को पढ़ सकता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.