⚠️ Legal Disclaimer
This project is intended for educational and cybersecurity awareness purposes only. I am not responsible for any misuse of this tool. Knowledge is power, but it comes with responsibility.
git clone https://github.com/yourusername/your-repo.git
- Hold down the BOOTSEL button on the Raspberry Pi Pico W.
- While holding the button, plug it into your computer via USB.
- The board should appear as an external drive on your file explorer.
Copy the format.uf2
file to the Raspberry Pi's memory. This file will format the chip to avoid future issues. Wait for the device to reboot automatically.
Copy the circuit_python.uf2
file to the board's memory and wait for it to reboot again.
Inside the repository, go to the /lib
folder and copy the adafruit_hid
folder into the /lib
directory of the Raspberry Pi Pico W.
Copy the code.py
file to the root directory of the device (not inside any folder).
You can now use your Raspberry Pi Pico W as a keyboard. To run a script:
- Take an example from the
/scripts
folder in the repository. - Rename it to
payload.dd
. - Move that file to the root directory of the device.
⚠️ As soon as thepayload.dd
file is placed in the root, it will execute automatically when the board is connected to a computer.
By default, the Raspberry Pi will send keystrokes using a US English keyboard layout. This may cause errors if the target computer uses a different layout.
The easiest solution if you have physical access to the computer.
- Uncomment lines 14 and 15.
- Replace
LANG
with the target keyboard layout. - Comment out lines 9 and 10.
- Make sure the corresponding language files are present in
adafruit_hid
.
⚠️ This method hasn't worked for me after many attempts. If you manage to get it working, please contribute to the repository.
This is the method I use. Here's an example using a Spanish keyboard layout.
- Many characters will not be typed correctly. For example, typing
"
may result in[
, and vice versa. - The solution is to create a test payload as a reference dictionary:
STRING **!** " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ { | } ~
- Run that payload and see what is printed on the target machine. Use it to build your final payloads accordingly.
For instance, to type https://google.com
, you would write:
STRING https**>&&google+com