
Expose USB activity on the fly

[!NOTE] USBvalve संस्करण 1.0.0
एप्लिकेशन का पूर्ण पुनर्लेखन किया गया है:
- Arduino IDE वातावरण से हटकर, अब कोड Pi Pico SDK के लिए लिखा गया है
- बाहरी लाइब्रेरीज़ पर निर्भरता काफी कम कर दी गई है
- लो स्पीड डिवाइसों (ATTiny85, EvilCrow, आदि) के लिए USB होस्ट समर्थन अब अधिक मजबूत है
- हार्डवेयर और कार्यक्षमताएँ लगभग अपरिवर्तित हैं, विवरण के लिए नीचे नोट्स देखें
मुझे यकीन है कि आपसे भी, मेरी तरह, किसी अज्ञात डिवाइस में अपनी USB ड्राइव लगाने को कहा गया होगा...और फिर वह संदेह:
पर्दे के पीछे मेरी बेचारी डोंगल के साथ क्या हुआ? मेरी फ़ाइलें चुराईं? उन्हें एन्क्रिप्ट किया? या मात्र एक मैलवेयर इंस्टॉल किया? USBvalve के साथ आप इसे सेकंडों में पहचान सकते हैं: बेहद सस्ते, तैयार-उपलब्ध हार्डवेयर पर निर्मित, आप किसी भी USB फाइल सिस्टम गतिविधि का तुरंत परीक्षण कर सकते हैं और समझ सकते हैं कि बहुत देर होने से पहले क्या हो रहा है!
USBvalve के साथ आपको ड्राइव के साथ क्या हो रहा है, इसके बारे में तुरंत प्रतिक्रिया मिल सकती है; स्क्रीन आपको दिखाएगी कि डिवाइस पर बनाया गया फर्जी फाइल सिस्टम एक्सेस किया गया है, पढ़ा गया है या लिखा गया है:
और संस्करण 0.8.0 से आप इसे BADUSB डिवाइसों का पता लगाने के लिए USB होस्ट के रूप में भी उपयोग कर सकते हैं:
यह सीरियल पोर्ट पर उपलब्ध BADUSB डिबगर का एक उदाहरण है:
यदि आप वीडियो पसंद करते हैं, तो आप मेरी Insomni'hack प्रस्तुति भी देख सकते हैं
संस्करण 0.15.0 से एक नया Pi Pico Watch संस्करण समर्थित है। नया संस्करण संकलित करने के लिए आपको कोड की शुरुआत में #define PIWATCH लाइन को अनकमेंट करना होगा। हार्डवेयर RP2040-आधारित 1.28-इंच TFT डिस्प्ले और वॉच बोर्ड है। आप कुछ और जानकारी यहाँ पा सकते हैं। यह Waveshare RP2040-LCD-1.28 के साथ भी पूरी तरह संगत है।
docs: परियोजना के बारे में दस्तावेज़ीकरण, जिसमें एक प्रस्तुति है जहाँ आप सभी सुविधाओं को देख सकते हैं
firmware: Raspberry Pi Pico के लिए पहले से निर्मित फर्मवेयर। आप इन्हें सीधे उपयोग कर सकते हैं और बोर्ड पर फ्लैश कर सकते हैं। हमारे पास कई अलग-अलग संस्करण हैं, 32 या 64 लाइनों वाली OLED के लिए, Pico 1 या Pico2 के लिए, Pi Pico Watch, आदि
PCB: Gerber फ़ाइल यदि आप कस्टम PCB प्रिंट करना चाहते हैं। यह अनिवार्य नहीं है, आप अपना खुद का उपयोग कर सकते हैं या इसे ब्रेडबोर्ड पर बना सकते हैं
src और data: स्रोत, यदि आप स्वयं फर्मवेयर को संशोधित और निर्मित करना चाहते हैं
utils: कुछ उपयोगिताएँ जिन्हें आप कस्टम FS बनाने के लिए उपयोग कर सकते हैं
pictures: इस दस्तावेज़ में उपयोग की गई छवियाँ और संसाधन
STL: आवरण के लिए STL फ़ाइलें। 1.1 और 1.2 फ़ोल्डरों में पूर्ण आवरण हैं (WhistleMaster को धन्यवाद)। 1.2_64 और 1.2_64_simple फ़ोल्डरों में 128x64 स्क्रीन के लिए आवरण हैं (rtmq0227 को धन्यवाद)। यदि आप LCD की सुरक्षा के लिए कुछ हल्का चाहते हैं, तो आप USBvalve_sliding_cover.stl चुन सकते हैं।
यदि आप अपना खुद का निर्माण करना चाहते हैं, तो आपको चाहिए:
0.x.x संस्करणों में, BOOTSEL का उपयोग डिवाइस को रीसेट करने या HID इवेंट्स की संख्या प्रिंट करने के लिए किया जाता था (> 2 सेकंड दबाएँ)। BOOTSEL की पोलिंग BADUSB डिटेक्शन के लिए कुछ समस्याएँ पैदा कर रही थी, इसलिए इसे संस्करण 1.0.0 से हटा दिया गया और निम्नलिखित दो विकल्पों से बदल दिया गया:
GP0 और GND (पैड 1 और 3, उदाहरण के लिए नीचे चित्र देखें) के बीच एक बटन सोल्डर करेंr (रीसेट) और h (HID इवेंट्स) कमांड का उपयोग करें
PCB में आपको बोर्ड का एक संस्करण 1.3 भी मिलेगा, जिसमें बटन की स्थापना को सुविधाजनक बनाने के लिए पैड 1 और 3 पर कुछ छेद हैं। लेकिन जैसा कि आप देख सकते हैं, आप अपने पुराने संस्करण का भी उपयोग कर सकते हैं।
यदि आप BADUSB फ़ंक्शन का उपयोग नहीं कर रहे हैं या यदि आप डिटेक्शन पर कम कवरेज रखना पसंद करते हैं लेकिन BOOTSEL का उपयोग बनाए रखना चाहते हैं, तो मैं bootsel सक्षम के साथ बनाया गया एक फर्मवेयर भी प्रदान कर रहा हूँ (फ़ोल्डर और रिलीज़ देखें)।
Tz1rf के धन्यवाद से हमारे पास दो बेहतरीन वीडियो भी हैं: एक निर्माण प्रक्रिया को चरण-दर-चरण समझाता है, और दूसरा दिखाता है कि फर्मवेयर अपलोड कैसे करें और टूल का उपयोग कैसे करें।
लगभग सारा काम सॉफ्टवेयर द्वारा सीधे बोर्ड पर किया जाता है, इसलिए आपको केवल आउटपुट के लिए OLED के साथ कनेक्शन की व्यवस्था करनी होती है।
फर्मवेयर के संस्करण 0.8.0 से, USBvalve HID डिवाइसों का पता लगा सकता है (BADUSB का पता लगाने के लिए उपयोग किया जाता है)। इसके लिए एक अतिरिक्त USB पोर्ट की आवश्यकता होती है जो होस्ट के रूप में कार्य करे। यदि आप इसमें रुचि नहीं रखते हैं, तो आप पुराने निर्देशों का उपयोग कर सकते हैं docs फ़ोल्डर में और PCB संस्करण 1.1 का उपयोग कर सकते हैं। अन्यथा PCB संस्करण 1.2 के साथ आगे बढ़ें (हमारे पास USB-A या USB-B के लिए संस्करण है, फ़ोल्डर देखें)।
USBH क्षेत्र में एक USB फीमेल पोर्ट सोल्डर करें। यह संस्करण A के लिए है, लेकिन यदि आप चाहें तो USB Micro-B के लिए भी एक संस्करण हैकुछ OLED में GND और VCC PIN आपस में बदले हुए होते हैं, इसलिए मैंने PCB को दोनों संस्करणों के साथ संगत बनाया है:
उदाहरण के लिए यदि आपके OLED में GND PIN1 पर और VCC PIN2 पर है, जैसे:
आपको PCB के पीछे इन दो पैड्स पर सोल्डर का एक गोला लगाना होगा:
अन्यथा आपको इसका विपरीत करना चाहिए और सोल्डर को दूसरे PADs पर लगाना चाहिए:
यदि आप ब्रेडबोर्ड या केवल वायरिंग का उपयोग कर रहे हैं, तो आपको बस यह सुनिश्चित करना है कि OLED स्क्रीन और होस्ट USB पोर्ट से सही PIN कनेक्ट हों।
मैपिंग निम्नलिखित है:
यदि आप DEBUG फ़ंक्शन का उपयोग करना चाहते हैं, तो आप बोर्ड के नीचे 3 SWD PINs पर एक हेडर भी लगा सकते हैं।
[!CAUTION] यह PCB अनुभवी इलेक्ट्रॉनिक निर्माताओं के लिए है यदि आपको यकीन नहीं है कि आप इसे संभाल सकते हैं, तो इसका उपयोग न करें!
[!NOTE] R7 और R8 वास्तव में किसी भी चीज़ से कनेक्ट नहीं हैं। इन्हें सर्किट डिबगिंग उद्देश्यों के लिए जोड़ा गया है। इसलिए ये BOM में नहीं दिखते
USBpipe इस परियोजना के लिए एक समर्पित PCB है।
आपको आवश्यक सब कुछ ./PCB/USBpipe/ फ़ोल्डर में मिलेगा।
फर्मवेयर फ्लैश करने के लिए, इन चरणों का पालन करें:
RPI-RP2 होगा (Linux वातावरण में आपको इसे मैन्युअल रूप से माउंट करना पड़ सकता है)uf2 के साथ) कॉपी करेंहो गया!
मुझे नहीं पता कि ऐसा कभी होगा या नहीं, लेकिन आप USBvalve-जागरूक मैलवेयर द्वारा की गई पहचान से बचने के लिए फर्मवेयर को कस्टमाइज़ करना चाह सकते हैं :-)
मैंने उन अधिकांश वेरिएबल्स को समूहित किया है जिन्हें आप usb_config.h के इस अनुभाग में संशोधित करना चाह सकते हैं (पुनर्निर्माण के लिए नीचे Dockerfile देखें)
// USB anti-detection settings
//
// Set USB IDs strings and numbers, to avoid possible detections.
// Remember that you can cusotmize FAKE_DISK_BLOCK_NUM as well
// for the same reason. Also DISK_LABEL in ramdisk.h can be changed.
//
// You can see here for inspiration: https://the-sz.com/products/usbid/
//
// Example:
// 0x0951 0x16D5 VENDORID_STR: Kingston PRODUCTID_STR: DataTraveler
//
#define USB_VENDORID 0x0951
#define USB_PRODUCTID 0x16D5
#define USB_DESCRIPTOR "DataTraveler"
#define USB_MANUF "Kingston"
#define USB_SERIAL "123456789A"
#define USB_VENDORID_STR "Kingston" // Up to 8 chars
#define USB_PRODUCTID_STR "DataTraveler" // Up to 16 chars
#define USB_VERSION_STR "1.0" // Up to 4 chars
जाहिर है, आप अपना खुद का फर्मवेयर भी बना सकते हैं। निर्माण के लिए आपको Raspberry Pi Pico SDK और यह रिपॉज़िटरी चाहिए।
बुनियादी पुनर्संकलन निर्देश:
export PICO_SDK_PATH=</path/to/pico-sdk>
git clone --recursive https://github.com/cecio/USBvalve.git
cd USBvalve
mkdir build && cd build
cmake -DPICO_BOARD=pico .. # or pico2 for standard build
make -j$(nproc)
# Output: build/src/USBvalve.uf2
यदि आप एक नया फर्जी फाइल सिस्टम फिर से बनाना चाहते हैं, तो आप utils फ़ोल्डर पर एक नज़र डाल सकते हैं, जहाँ मैंने एक नया बनाने के लिए कुछ उपयोगिताएँ रखी हैं।
यदि आप अपना खुद का फर्मवेयर बनाना चाहते हैं, तो इसे कस्टमाइज़ करने के बाद, मैं एक Dockerfile प्रदान करता हूँ जो एक संपूर्ण बिल्ड वातावरण बनाता है और फर्मवेयर संकलित करता है।
निर्माण के लिए मुख्य USBvalve फ़ोल्डर में निम्नलिखित कमांड दर्ज करें:
# To Build:
# docker build -t usbvalve-sdk -f Dockerfile.sdk .
#
# To Run (default: pico, SSD1306 OLED 128x32):
# docker run --rm -v $PWD:/mnt usbvalve-sdk
#
# Options (via environment variables):
# BOARD=pico|pico2 Board target (default: pico)
# OLED_HEIGHT=32|64 OLED display height (default: 32)
# PIWATCH=1 Use GC9A01 round TFT instead of SSD1306
# USE_BOOTSEL=1 Enable BOOTSEL button (disrupts Low Speed USB)
#
# Examples:
# docker run --rm -e BOARD=pico2 -v $PWD:/mnt usbvalve-sdk
# docker run --rm -e PIWATCH=1 -v $PWD:/mnt usbvalve-sdk
# docker run --rm -e BOARD=pico2 -e OLED_HEIGHT=64 -v $PWD:/mnt usbvalve-sdk
फर्मवेयर को USBvalve_out फ़ोल्डर में uf2 एक्सटेंशन के साथ रखा जाएगा।
यदि आपके मन में विचार या सुधार हैं, तो मैं आपको प्रोत्साहित करता हूँ कि एक issue खोलें ताकि हम मिलकर परियोजना को बेहतर बना सकें! धन्यवाद!
यदि आपके पास कोई प्रश्न है या सहायता चाहिए, तो आप यहाँ एक Issue खोल सकते हैं या मुझसे Twitter/X पर संपर्क कर सकते हैं @red5heep
समुदाय ने अन्य बोर्डों के लिए समर्थन या अन्य संशोधनों को लागू करने वाले कुछ फोर्क बनाए हैं। USBvalve के विकास में योगदान देने वाले सभी को धन्यवाद। नीचे एक अनौपचारिक/अधूरी/असमर्थित सूची दी गई है:
[!WARNING] मुझे USBvalve और USB किलर डिवाइसों के बारे में बहुत सारे प्रश्न मिले हैं। USBvalve इन डिवाइसों के परीक्षण के लिए नहीं बनाया गया है, इसमें किसी भी प्रकार का इन्सुलेशन या सुरक्षा नहीं है, इसलिए यदि आपको संदेह है कि आप ऐसे किसी डिवाइस से निपट रहे हैं, तो इसे किसी और चीज़ से परीक्षण करें, USBvalve से नहीं, अन्यथा आप डिवाइस, स्वयं या अपने आस-पास की वस्तुओं को नुकसान पहुंचा सकते हैं।