---
obj: device
repo: https://github.com/dbisu/pico-ducky
rev: 2024-03-03
---

# Raspberry Pi Pico Rubberducky
You can turn your [Raspberry Pi Pico](Raspberry%20Pi%20Pico%20W.md) into a [Rubberducky USB](Rubberducky%20USB.md).

## Quick Start Guide
Install and have your USB Rubber Ducky working in less than 5 minutes.
1. Download the latest release from the [Releases](https://github.com/dbisu/pico-ducky/releases) page.
2. Plug the device into a USB port while holding the boot button. It will show up as a removable media device named `RPI-RP2`.
3. Install CircuitPython on the Pico or Pico W
	If using a Pico board:
	Copy the `adafruit-circuitpython-raspberry_pi_pico-en_US-8.0.0.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`.
	
	If using a Pico W board:
	Copy the `adafruit-circuitpython-raspberry_pi_pico_w-en_US-8.0.0.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`.
1. Copy the `lib` folder to the root of the `CIRCUITPY`
5. Copy `*.py` to the root of the `CIRCUITPY`
6. Follow the instructions in `README.md` to enter setup mode
7. Copy your payload as `payload.dd` to the root of the `CIRCUITPY`
8. Unplug the device from the USB port and remove the setup jumper.

Enjoy your Pico-Ducky.

## 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 do so is by using a jumper wire between those pins as seen bellow.

![Pico](./raspberry_pi_pico_rubberducky.avif)

## 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`). 
	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.

**Pico**: The default mode is USB mass storage enabled.  
**Pico W**: The default mode is USB mass storage **disabled**

## 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>`
