mirror of
https://github.com/dbisu/pico-ducky.git
synced 2025-12-06 02:41:45 +00:00
Pico W Support (#137)
* Refactor code to support Pico W board * Updates for Pico W support * Update based on changes in CircuitPython v8.0.0 beta 6 * Updated bundle download to 8.x, fixed a few typos * Updating documentation for web interface * Update support for CircuitPython 8.0.0, fix many bugs * Document multiple payload options * Update copyright dates * Fixed typo
This commit is contained in:
61
README.md
61
README.md
@@ -22,13 +22,14 @@ Install and have your USB Rubber Ducky working in less than 5 minutes.
|
||||
|
||||
1. Clone the repo to get a local copy of the files. `git clone https://github.com/dbisu/pico-ducky.git`
|
||||
|
||||
2. Download [CircuitPython for the Raspberry Pi Pico](https://circuitpython.org/board/raspberry_pi_pico/). *Updated to 7.0.0
|
||||
2. Download [CircuitPython for the Raspberry Pi Pico](https://circuitpython.org/board/raspberry_pi_pico/). *Updated to 8.0.0
|
||||
Download [CircuitPython for the Raspberry Pi Pico W](https://circuitpython.org/board/raspberry_pi_pico_w/). *Updated to 8.0.0
|
||||
|
||||
3. Plug the device into a USB port while holding the boot button. It will show up as a removable media device named `RPI-RP2`.
|
||||
|
||||
4. Copy the downloaded `.uf2` file to the root of the Pico (`RPI-RP2`). The device will reboot and after a second or so, it will reconnect as `CIRCUITPY`.
|
||||
|
||||
5. Download `adafruit-circuitpython-bundle-7.x-mpy-YYYYMMDD.zip` [here](https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest) and extract it outside the device.
|
||||
5. Download `adafruit-circuitpython-bundle-8.x-mpy-YYYYMMDD.zip` [here](https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest) and extract it outside the device.
|
||||
|
||||
6. Navigate to `lib` in the recently extracted folder and copy `adafruit_hid` to the `lib` folder on your Raspberry Pi Pico.
|
||||
|
||||
@@ -36,35 +37,67 @@ Install and have your USB Rubber Ducky working in less than 5 minutes.
|
||||
|
||||
8. Copy `asyncio` to the `lib` folder on your Pico.
|
||||
|
||||
9. Copy `boot.py` from your clone to the root of your Pico.
|
||||
9. Copy `adafruit_wsgi` to the `lib` folder on your Pico.
|
||||
|
||||
10. Copy `duckyinpython.py` as `code.py` in the root of the Raspberry Pi Pico, overwriting the previous file.
|
||||
Linux: `cp duckyinpython.py </path/to/pico/code.py`
|
||||
10. Copy `boot.py` from your clone to the root of your Pico.
|
||||
|
||||
11. Find a script [here](https://github.com/hak5/usbrubberducky-payloads) or [create your own one using Ducky Script](https://docs.hak5.org/hak5-usb-rubber-ducky/duckyscript-tm-quick-reference) and save it as `payload.dd` in the Pico.
|
||||
11. Copy `duckyinpython.py`, `code.py`, `webapp.py`, `wsgiserver.py` to the root folder of the Pico.
|
||||
|
||||
12. Be careful, if your device isn't in [setup mode](#setup-mode), the device will reboot and after half a second, the script will run.
|
||||
12. Find a script [here](https://github.com/hak5/usbrubberducky-payloads) or [create your own one using Ducky Script](https://docs.hak5.org/hak5-usb-rubber-ducky/ducky-script-basics/hello-world) and save it as `payload.dd` in the Pico. Currently, pico-ducky only supports DuckScript 1.0, not 3.0.
|
||||
|
||||
13. Be careful, if your device isn't in [setup mode](#setup-mode), the device will reboot and after half a second, the script will run.
|
||||
|
||||
14. **Please note:** by default Pico W will not show as a USB drive
|
||||
|
||||
### Pico W Web Service
|
||||
The Pico W AP defaults to ip address `192.168.4.1`. You should be able to find the webservice at `http://192.168.4.1:80`
|
||||
|
||||
The following endpoints are available on the webservice:
|
||||
```
|
||||
/
|
||||
/new
|
||||
/ducky
|
||||
/edit/<filename>
|
||||
/write/<filename>
|
||||
/run/<filename>
|
||||
```
|
||||
|
||||
API endpoints
|
||||
```
|
||||
/api/run/<filenumber>
|
||||
```
|
||||
|
||||
### Setup mode
|
||||
|
||||
To edit the payload, enter setup mode by connecting the pin 1 (`GP0`) to pin 3 (`GND`), this will stop the pico-ducky from injecting the payload in your own machine.
|
||||
The easiest way to so is by using a jumper wire between those pins as seen bellow.
|
||||
The easiest way to do so is by using a jumper wire between those pins as seen bellow.
|
||||
|
||||

|
||||
|
||||
### USB enable/disable mode
|
||||
|
||||
If you need the pico-ducky to not show up as a USB mass storage device for stealth, follow these instructions.
|
||||
Enter setup mode.
|
||||
Copy your payload script to the pico-ducky.
|
||||
Disconnect the pico from your host PC.
|
||||
Connect a jumper wire between pin 18 (`GND`) and pin 20 (`GPIO15`).
|
||||
- Enter setup mode.
|
||||
- Copy your payload script to the pico-ducky.
|
||||
- Disconnect the pico from your host PC.
|
||||
- Connect a jumper wire between pin 18 (`GND`) and pin 20 (`GPIO15`).
|
||||
This will prevent the pico-ducky from showing up as a USB drive when plugged into the target computer.
|
||||
Remove the jumper and reconnect to your PC to reprogram.
|
||||
The default mode is USB mass storage enabled.
|
||||
- Remove the jumper and reconnect to your PC to reprogram.
|
||||
|
||||
Pico: The default mode is USB mass storage enabled.
|
||||
Pico W: The default mode is USB mass storage **disabled**
|
||||
|
||||

|
||||
|
||||
### Multiple payloads
|
||||
|
||||
Multiple payloads can be stored on the Pico and Pico W.
|
||||
To select a payload, ground one of these pins:
|
||||
- GP4 - payload.dd
|
||||
- GP5 - payload2.dd
|
||||
- GP10 - payload3.dd
|
||||
- GP11 - payload4.dd
|
||||
|
||||
### Changing Keyboard Layouts
|
||||
|
||||
Copied from [Neradoc/Circuitpython_Keyboard_Layouts](https://github.com/Neradoc/Circuitpython_Keyboard_Layouts/blob/main/PICODUCKY.md)
|
||||
|
||||
Reference in New Issue
Block a user