pico-ducky
Install
Requirements
CircuitPython for the Raspberry Pi Pico
adafruit-circuitpython-bundle-7.x-mpy-YYYYMMDD.zip
Setup
-
Plug the Pico into your computer. It will show up as a removable media device named
RPI-RP2
. -
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 asCIRCUITPY
. -
Navigate to
lib
in the recently extracted folder and copyadafruit_hid
to thelib
folder in your Raspberry Pi Pico. -
Clone this repository (
git clone https://github.com/coder12341/pico-ducky.git
) and copy the filecode.py
to the root folder of your Raspberry Pi Pico. -
Create your payload and save it as
payload.dd
in the root folder of your Raspberry Pi Pico. -
Be careful, if your device isn't in setup mode, the device will reboot and after a very short period of time, the script will run.
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 LED on your Raspberry Pi Pico will start blinking to indicate that it has successfully entered setup mode.
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 boot.py to the root of the pico-ducky.
Copy your payload script to the pico-ducky.
Disconnect the pico from your host PC. Connect a jumper wire between pin 18 and pin 20. 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.
Changing Keyboard Layouts
Copied from Neradoc/Circuitpython_Keyboard_Layouts
How to use one of these layouts with the pico-ducky repository.
Go to the latest release page, look if your language is in the list.
If your language/layout is in the bundle
Download the py
zip, named circuitpython-keyboard-layouts-py-XXXXXXXX.zip
NOTE: You can use the mpy version targetting the version of Circuitpython that is on the device, but on Raspberry Pi Pico you don't need it - they only reduce file size and memory use on load, which the pico has plenty of.
If your language/layout is not in the bundle
Try the online generator, it should get you a zip file with the bundles for yout language
https://www.neradoc.me/layouts/
Now you have a zip file
Find your language/layout in the lib directory
For a language LANG
, copy the following files from the zip's lib
folder to the lib
directory of the board.
DO NOT modify the adafruit_hid directory. Your files go directly in lib
.
DO NOT change the names or extensions of the files. Just pick the right ones.
Replace LANG
with the letters for your language of choice.
keyboard_layout.py
keyboard_layout_win_LANG.py
keycode_win_LANG.py
Don't forget to get the adafruit_hid library.
This is what it should look like if your language is French for example.
Modify the pico-ducky code to use your language file:
At the start of the file comment out these lines:
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS as KeyboardLayout
from adafruit_hid.keycode import Keycode
Uncomment these lines:
Replace LANG
with the letters for your language of choice. The name must match the file (without the py or mpy extension).
from keyboard_layout_win_LANG import KeyboardLayout
from keycode_win_LANG import Keycode