
अपने Pi Zero 2W को BadUSB बनाने के लिए कॉन्फ़िगर करें।
Raspberry Pi Zero 2 W पर निर्मित एक प्रोग्रामेबल BadUSB / HID आक्रमण प्लेटफ़ॉर्म। यह Pi एक USB कम्पोज़िट डिवाइस (कीबोर्ड प्लस एक वैकल्पिक रीड-ओनली मास-स्टोरेज वॉल्यूम) के रूप में एन्यूमरेट होता है और Ducky-Script-शैली के पेलोड उस होस्ट पर निष्पादित करता है जिससे यह जुड़ा होता है। यह अधिकृत रेड-टीम अभियानों, पेनेट्रेशन परीक्षणों और CTF के लिए डिज़ाइन किया गया है।
⚠️ कानूनी सूचना। केवल उन्हीं सिस्टम पर उपयोग करें जिनके आप स्वामी हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति आपके पास है। अधिकांश क्षेत्राधिकारों में अनधिकृत पहुँच अवैध है, और यह दिखावा करना कि आपको पता नहीं था, काम नहीं आएगा।
configured अवस्था के माध्यम से — बूट पर कोई फ़र्ज़ी पेलोड फायर नहीं होता।LAYOUT के साथ प्रति-पेलोड चयन योग्य।IF / ELSE, WHILE, HOLD / RELEASE, INJECT_MOD, RANDOM_* जनरेटर, STRING_BLOCK / STRINGLN_BLOCK, DEFINE।ExecStop के साथ जो गैजेट को सफाई से टियर-डाउन करता है। कोई बचा हुआ configfs स्टेट नहीं, रीस्टार्ट बिना रीबूट के काम करता है।/dev/hidg0 के लिए — कोई वर्ल्ड-राइटेबल डिवाइस नोड नहीं।+----------------+ USB cable +-------------+
| Raspberry Pi | ===================>>> | Host PC |
| Zero 2 W | (Pi emulates HID + | (target) |
| (this device) | optional drive) | |
+----------------+ +-------------+
|
| /home/pi/pi-badusb/
|
+-- badusb.service ----> monitor_and_run.py
|
| on `state == configured`:
v
run_payload.py
|
v
/dev/hidg0 (USB HID gadget)
badusb.service systemd यूनिट gadget_setup.sh चलाता है, जो configfs/libcomposite का उपयोग करके एक HID कीबोर्ड फ़ंक्शन और (वैकल्पिक रूप से) /var/badusb/storage.img पर एक फ्लैट इमेज फ़ाइल द्वारा समर्थित मास-स्टोरेज LUN के साथ एक USB गैजेट कम्पोज़ करता है।monitor_and_run.py चलाती है। यह /sys/class/udc/<udc>/state को पोल करती है और configured की प्रतीक्षा करती है — USB-विनिर्देश अवस्था जिसका अर्थ है कि एक होस्ट ने गैजेट को सफलतापूर्वक एन्यूमरेट कर लिया है। (हम /dev/hidg0 के अस्तित्व को संकेत के रूप में नहीं उपयोग करते: वह उसी क्षण सत्य होता है जब गैजेट बूट पर UDC से बाइंड होता है, चाहे कुछ भी प्लग्ड हो।)run_payload.py निष्पादित करता है, जो payload.txt को पार्स करता है और HID रिपोर्टें /dev/hidg0 पर लिखता है।configured संक्रमण की प्रतीक्षा करता है।| घटक | टिप्पणी |
|---|---|
| Raspberry Pi Zero 2 W | 2026-05 हार्डवेयर रिवीज़न पर परीक्षण किया गया। BCM2835 dwc_otg ड्राइवर वाला पुराना Pi Zero W भी सैद्धांतिक रूप से काम करता है, लेकिन यह README dwc2 वाले 2 W को मानता है। |
| micro-USB से USB-A केबल | या एक "USB स्टिक" फॉर्म-फैक्टर एडेप्टर जो Pi को सीधे होस्ट पोर्ट में प्लग करने देता है। |
| वैकल्पिक: अलग चार्जर | यदि आप Pi को गैर-होस्ट स्रोत से पावर देना चाहते हैं ताकि लिसनर किसी टारगेट में प्लग होने से पहले बूट हो सके (अन्यथा होस्ट पोर्ट पावर की आपूर्ति करता है)। |
Pi Zero 2 W में दो micro-USB पोर्ट हैं:
PWR IN — केवल पावर, dwc2 OTG ब्लॉक को USB डेटा लाइनें एक्सपोज़ नहीं करता।USB — OTG डेटा पोर्ट; यही वह जगह है जहाँ आप टारगेट में प्लग करते हैं।| आवश्यकता | क्यों |
|---|---|
| Raspberry Pi OS (Debian Bookworm या Trixie, 64-bit Lite अनुशंसित) | इंस्टॉल स्क्रिप्ट Bookworm+ पर /boot/firmware/... में लिखती है और पुरानी इमेजों पर /boot/... पर फॉल बैक करती है। |
| Python 3 | Pi OS के साथ आता है। |
mkfs.vfat | पहले रन पर मास-स्टोरेज बैकिंग इमेज को फ़ॉर्मेट करने के लिए। यदि आप मास स्टोरेज अक्षम करते हैं तो छोड़ दें। |
| सेटअप के लिए रूट एक्सेस | systemd, udev, और /boot/firmware/config.txt को छूता है। |
रिपो को Pi में क्लोन या कॉपी करें, फिर इंस्टॉलर चलाएँ:
git clone http://your-gitea/admin/Pi-Zero-2W-Bad-USB.git /home/pi/pi-badusb
cd /home/pi/pi-badusb
sudo ./install.sh
sudo reboot
रीबूट के बाद, सेवा को सक्षम और प्रारंभ करें:
sudo systemctl enable --now badusb.service
journalctl -u badusb -f
install.sh इडेम्पोटेंट है — जब भी आप प्रोजेक्ट फ़ाइलें बदलें, इसे दोबारा चलाएँ। यह:
/boot/firmware (Bookworm+) बनाम /boot (पुराना) का पता लगाता है।config.txt में [all] ब्लॉक के अंतर्गत dtoverlay=dwc2,dr_mode=otg सक्रिय है। Raspberry Pi Imager डिफ़ॉल्ट इस पंक्ति को [cm5] फ़िल्टर के अंदर रखते हैं जो Pi Zero 2 W पर लागू नहीं होता; इंस्टॉलर एक सेंटिनल-चिह्नित ओवरराइड जोड़ता है ताकि दोबारा चलाने पर यह डुप्लिकेट न हो।modules-load=dwc2 cmdline.txt में है।g_ether अभी भी cmdline.txt में मौजूद है (यह libcomposite से UDC चुरा लेता है और गैजेट मोड को तोड़ देता है)।/etc/systemd/system/badusb.service पर इंस्टॉल करता है।/etc/udev/rules.d/99-badusb-hidg.rules पर इंस्टॉल करता है ताकि /dev/hidg0 plugdev द्वारा ग्रुप-राइटेबल हो।pi उपयोगकर्ता को plugdev में जोड़ता है।/var/badusb/ बनाता है।# Start / stop / restart
sudo systemctl start badusb
sudo systemctl stop badusb
sudo systemctl restart badusb # safe to do while plugged in
# Watch live
journalctl -u badusb -f
# Disable autostart on boot
sudo systemctl disable badusb
# Tune timings (creates an override drop-in)
sudo systemctl edit badusb
# (paste an [Service] block with Environment="BADUSB_REARM_COOLDOWN_S=8" etc)
sudo systemctl restart badusb
सेवा sys-kernel-config.mount और एक UDC की उपस्थिति पर निर्भर करती है, इसलिए गैजेट वास्तव में तैयार होने से पहले यह पेलोड फायर नहीं कर सकती।
पेलोड संपादित करने के लिए रीस्टार्ट की आवश्यकता नहीं होती — payload.txt हर प्लग-इन पर ताज़ा पढ़ा जाता है।
payload.txt इंस्टॉल निर्देशिका में रहता है। पूर्ण कमांड संदर्भ payload_commands.md में है।
REM Open Run dialog and type a greeting via Notepad
LAYOUT US
GUI r
DELAY 1500
STRING notepad
ENTER
DELAY 2500
STRINGLN Hello from the Pi Zero 2 W