
USBvalve v1.0.1
USB गतिविधि को तुरंत उजागर करें
[!NOTE] USBvalve संस्करण 1.0.0
एप्लिकेशन का पूर्ण पुनर्लेखन किया गया है:
- Arduino IDE वातावरण से हटा दिया गया है, अब कोड Pi Pico SDK के लिए लिखा गया है
- बाहरी लाइब्रेरी पर निर्भरता बहुत कम कर दी गई है
- Low Speed डिवाइसों के लिए USB होस्ट समर्थन अब अधिक मजबूत है (ATTiny85, EvilCrow, आदि)
- हार्डवेयर और कार्यक्षमताएँ लगभग अपरिवर्तित हैं, विवरण के लिए नीचे दिए गए नोट्स देखें
USB गतिविधि को तुरंत उजागर करें
मुझे यकीन है कि मेरी तरह, आपसे भी कभी कहा गया होगा कि अपनी USB ड्राइव किसी अज्ञात डिवाइस में लगाएँ... और फिर संदेह:
मेरे बेचारे डोंगल के साथ पर्दे के पीछे क्या हुआ? मेरी फ़ाइलें चुरा रहा है? उन्हें एन्क्रिप्ट कर रहा है? या बस कोई मैलवेयर इंस्टॉल कर रहा है? USBvalve के साथ आप इसे सेकंडों में पकड़ सकते हैं: अत्यंत सस्ते ऑफ-द-शेल्फ हार्डवेयर पर बना, आप किसी भी USB फ़ाइल सिस्टम गतिविधि का तुरंत परीक्षण कर सकते हैं और यह समझ सकते हैं कि क्या हो रहा है, इससे पहले कि बहुत देर हो जाए!
USBvalve के साथ आप ड्राइव के साथ क्या हो रहा है, इस पर तत्काल प्रतिक्रिया प्राप्त कर सकते हैं; स्क्रीन आपको दिखाएगी कि डिवाइस पर बनाए गए नकली फ़ाइल सिस्टम को एक्सेस, पढ़ा या लिखा जा रहा है या नहीं:
और संस्करण 0.8.0 से आप इसे USB होस्ट के रूप में भी उपयोग कर सकते हैं ताकि BADUSB डिवाइसों का पता लगाया जा सके:
यह सीरियल पोर्ट पर उपलब्ध BADUSB डीबगर का एक उदाहरण है:
यदि आप वीडियो पसंद करते हैं, तो आप मेरी Insomni'hack प्रस्तुति भी देख सकते हैं
USBvalve Watch
संस्करण 0.15.0 से एक नया Pi Pico Watch संस्करण समर्थित है। नया संस्करण संकलित करने के लिए आपको कोड की शुरुआत में #define PIWATCH पंक्ति को अनकमेंट करना होगा। हार्डवेयर एक RP2040-आधारित 1.28-इंच TFT डिस्प्ले और वॉच बोर्ड है। आप कुछ और जानकारी यहाँ पा सकते हैं।
यह Waveshare RP2040-LCD-1.28 के साथ भी पूरी तरह संगत है।
रिपॉज़िटरी संरचना
docs: प्रोजेक्ट के बारे में दस्तावेज़ीकरण, एक प्रस्तुति के साथ जिसमें आप सभी सुविधाओं को देख सकते हैं
firmware: Raspberry Pi Pico के लिए पूर्व-निर्मित फर्मवेयर। आप इन्हें सीधे उपयोग कर सकते हैं और बोर्ड पर फ्लैश कर सकते हैं। हमारे पास कई अलग-अलग संस्करण हैं, 32 या 64 लाइनों वाले OLEDs के लिए, 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 का उपयोग कर सकते हैं।
USBvalve बनाएँ
भागों की सूची
यदि आप अपना खुद का बनाना चाहते हैं, तो आपको आवश्यकता होगी:
- एक Raspberry Pi Pico 1 या 2 (या कोई अन्य RP2040 आधारित बोर्ड)
- एक I2C OLED स्क्रीन 128x64 या 128x32 (SSD1306)
- (वैकल्पिक) एक USBvalve PCB या एक ब्रेडबोर्ड
- (वैकल्पिक) स्क्रीन को बोर्ड से अलग करने के लिए एक 3D प्रिंटेड स्पेसर (https://www.thingiverse.com/thing:4748043), लेकिन आप इसके बजाय इलेक्ट्रिकल टेप का एक टुकड़ा उपयोग कर सकते हैं
BOOTSEL और संस्करण >= 1.0.0 के बारे में नोट्स
0.x.x संस्करणों में, BOOTSEL का उपयोग डिवाइस को रीसेट करने या HID इवेंट्स की संख्या प्रिंट करने के लिए किया जाता था (> 2s दबाएँ)।
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 के लिए संस्करण हैं, फ़ोल्डर देखें)।
USBvalve PCB के साथ
USBHक्षेत्र में एक USB फीमेल पोर्ट सोल्डर करें। यह संस्करणAके लिए है, लेकिन यदि आप चाहें तो USBMicro-Bके लिए भी एक संस्करण है- Raspberry Pi Pico को सामने की सिल्क स्क्रीन पर रखें
- आपको सभी PINs सोल्डर करने की आवश्यकता नहीं है। केवल निम्नलिखित:
- D4 और D5 (बाईं ओर)
- D14 और D15 (बाईं ओर)
- GND (दाईं ओर, ऊपर से तीसरा पिन)
- GND (दाईं ओर, नीचे से तीसरा पिन)
- 3v3_OUT (दाईं ओर)
- VBUS (दाईं ओर)
- नीचे के 3 DEBUG पिन: SWCLK, GND और SWDIO
- OLED के उन हिस्सों पर 3D प्रिंटर स्पेसर या टेप का एक टुकड़ा रखें जो Raspberry को छू सकते हैं
- OLED को (हेडर के साथ) 4 PIN स्थान पर सोल्डर करें
कुछ OLEDs में GND और VCC PINs की अदला-बदली होती है, इसलिए मैंने PCB को दोनों संस्करणों के अनुकूल बनाया है:
उदाहरण के लिए यदि आपके OLED में PIN1 पर GND और PIN2 पर VCC है जैसे यह:
आपको PCB के पीछे इन दो पैड्स पर सोल्डर की एक बूंद लगानी होगी:
अन्यथा आपको इसके विपरीत करना चाहिए और सोल्डर को अन्य PADs पर लगाना चाहिए:
USBvalve PCB के बिना
यदि आप ब्रेडबोर्ड या केवल वायरिंग का उपयोग कर रहे हैं, तो आपको बस यह सुनिश्चित करना है कि OLED स्क्रीन और होस्ट USB पोर्ट पर उचित PINs कनेक्ट हों।
मैपिंग निम्नलिखित है:
- Pi का PIN6 --> OLED SDA
- Pi का PIN7 --> OLED SCL
- Pi का PIN19 --> USB होस्ट का D+
- Pi का PIN20 --> USB होस्ट का D-
- Pi का PIN23 (GND) --> USB होस्ट का GND
- Pi का PIN38 (GND) --> OLED GND
- Pi का PIN36 (3V3OUT) --> OLED VCC
- Pi का PIN40 (VBUS) --> USB होस्ट का VCC
यदि आप DEBUG कार्यों का उपयोग करना चाहते हैं, तो आप बोर्ड के नीचे 3 SWD PINs पर एक हेडर भी लगा सकते हैं।
USBpipe PCB के साथ
[!CAUTION] यह PCB अनुभवी इलेक्ट्रॉनिक निर्माताओं के लिए है यदि आप सुनिश्चित नहीं हैं कि आप इसे संभाल सकते हैं तो इसका उपयोग न करें!
[!NOTE] R7 और R8 वास्तव में किसी भी चीज़ से जुड़े नहीं हैं। उन्हें सर्किट डीबगिंग उद्देश्यों के लिए जोड़ा गया है। इसलिए वे BOM में नहीं दिखते
USBpipe इस प्रोजेक्ट के लिए एक समर्पित PCB है।
आपको जो कुछ भी चाहिए वह ./PCB/USBpipe/ फ़ोल्डर में मिल जाएगा।
फर्मवेयर फ्लैश करें
फर्मवेयर फ्लैश करने के लिए, इन चरणों का पालन करें:
- BOOTSEL बटन दबाए रखते हुए Raspberry Pi Pico को USB केबल से कनेक्ट करें (बोर्ड पर बड़ा सफेद बटन)
- बटन छोड़ें
- आपको सिस्टम पर एक नई ड्राइव दिखाई देगी, जिसका नाम
RPI-RP2होगा (Linux वातावरण में आपको इसे मैन्युअल रूप से माउंट करना पड़ सकता है) - आपके द्वारा उपयोग किए गए OLED के आधार पर उचित फर्मवेयर फ़ाइल (
uf2एक्सटेंशन के साथ) को फ़ोल्डर में कॉपी करें - कुछ सेकंड प्रतीक्षा करें जब तक कि माउंट किया गया फ़ोल्डर गायब न हो जाए
हो गया!
एंटी-डिटेक्शन
मुझे नहीं पता कि क्या ऐसा कभी होगा, लेकिन आप USBvalve-aware मैलवेयर द्वारा किए गए डिटेक्शन से बचने के लिए फर्मवेयर को कस्टमाइज़ करना चाह सकते हैं :-)
मैंने उन अधिकांश वेरिएबल्स को समूहीकृत किया है जिन्हें आप संशोधित करना चाह सकते हैं, 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/
//
#define USB_VENDORID 0xCAFE
#define USB_PRODUCTID 0x1337
#define USB_DESCRIPTOR "DataStore"
#define USB_MANUF "USB Acme"
#define USB_SERIAL "123456789A"
#define USB_VENDORID_STR "Acme" // Up to 8 chars
#define USB_PRODUCTID_STR "DataStore" // 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
यदि आप इसे कस्टमाइज़ करने के बाद अपना खुद का फर्मवेयर बनाना चाहते हैं, तो मैं एक 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
फर्मवेयर uf2 एक्सटेंशन के साथ USBvalve_out फ़ोल्डर में रखा जाएगा।
योगदान करें
यदि आपके मन में विचार या सुधार हैं, तो मैं आपको एक issue खोलने के लिए प्रोत्साहित करता हूँ ताकि हम मिलकर प्रोजेक्ट को बेहतर बना सकें! धन्यवाद!
सहायता
यदि आपके कोई प्रश्न हैं या आपको सहायता की आवश्यकता है तो आप यहाँ एक Issue खोल सकते हैं या मुझसे Twitter/X @red5heep पर संपर्क कर सकते हैं
समुदाय संस्करण
समुदाय ने अन्य बोर्डों के लिए समर्थन या अन्य संशोधनों को लागू करते हुए कुछ फोर्क बनाए हैं। USBvalve के विकास में योगदान देने वाले सभी को धन्यवाद। नीचे एक अनौपचारिक/अपूर्ण/असमर्थित सूची दी गई है:
सुरक्षा चेतावनी
[!WARNING] मुझे USBvalve और USB killer डिवाइसों के बारे में बहुत सारे प्रश्न प्राप्त हुए हैं। USBvalve इन डिवाइसों का परीक्षण करने के लिए नहीं बनाया गया है, इसमें किसी भी प्रकार का इंसुलेशन या सुरक्षा नहीं है, इसलिए यदि आपको संदेह है कि आप इनमें से किसी डिवाइस से निपट रहे हैं, तो इसे किसी और चीज़ से परीक्षण करें, USBvalve से नहीं, अन्यथा आप डिवाइस, स्वयं को या अपने आस-पास की वस्तुओं को नुकसान पहुँचा सकते हैं।
