Quick Links


Some community contributed payloads are hosted on this github wikiDuckToolkit.com and the Hak5 forums


The Hak5 forums are home to community support, payload development and general USB Rubber Ducky discussion.



Will the USB Rubber Ducky work straight away?

The USB Rubber Ducky is  flashed at the factory with the stock firmware which emulates a keyboard and processes inject.bin files for keystroke injection attacks. Out of the box it will process the example “Hello World” inject.bin payload located on the root of the included micro-SD card.

Nothing happened when I plugged in my USB Rubber Ducky

The Ducky’s LEDs are programmed to provide feedback to the user:

  • A flashing GREEN LED means the computer and USB Rubber Ducky are talking to each other.
  • A flashing RED LED means the USB Rubber Ducky can’t read the micro-SD card.

If you did not notice any LEDs:

  • Sometimes, the host OS is a bit slow and misses the USB Rubber Ducky’s commands while it is enumerating the device. Try pushing the Ducky’s GPIO Button it calls a REPLAY function.
  • The USB Rubber Ducky’s button acts as a simple reply button in its default setting. However, this button is also used to put the Ducky into DFU-MODE. Check that the Ducky’s Button is not stuck.

My USB Rubber Ducky shows a solid red LED, what now?

The red LED on your USB Rubber Ducky is an indication that the inject.bin file cannot be read from the micro-SD card. Common causes may be:

  • inject.bin file encoded incorrectly
  • inject.bin file named incorrectly
  • inject.bin file not on the root of the micro-SD card
  • Damaged or corrupt micro-SD card
  • micro-SD card is not seated properly

Troubleshooting Tips:

Test that the USB Rubber Ducky is processing the inject.bin from the SD card:

  • A known good test inject.bin file may be downloaded for troubleshooting from http://darren.kitchen/ducktest/inject.bin
  • Ensure that the micro-SD card is formatted correctly using the FAT file system. If trouble persists, I recommend trying a different micro-SD card.

Test that the micro push-button replays the payload on the target test machine:

  • Using the stock firmware, ensure that a known working inject.bin file is loaded on the root of the USB Rubber Ducky’s micro-SD card and deploy on a target test computer.
  • After successful execution of the payload, test that the payload replays by pressing the micro push-button.

My USB Rubber Ducky is flashing RED, what now?

Remove the micro-SD card. It can be stiff at first but will loosen up over time. Some people have used tweezers.

Try reinserting the micro-SD card. Alternatively, insert the card into the included micro-SD card reader and your host computer (Windows/Unix/OSX) to ensure that it can read the card.

If the host OS can read the card, re-insert it back into the USB Rubber Ducky and try again.

If the host OS can’t read the card, you may try re-formatting the card (FAT), or simply try another micro-SD card.

What file systems are supported?

Atmel AVR’s only support the FAT file system. Therefore, the USB Rubber Ducky is limited to reading FAT formatted sdcards.

Depending on your OS this may be either FAT,FAT16,FAT32,VFAT. (For micro-SD cards over 2GB it must be set to FAT32/VFAT)

Community Support

Hak5 Gear is more than just hardware or software — it’s home to a helpful community of creative penetration testers and IT professionals. Welcome!

The forums are a great place to share feedback and ideas. You’ll also find community support and discussion as well as modules, payloads, tutorials and software releases. Be sure to use the search feature to find answers to common questions.

Looking for something a little more informal? The IRC channel is home to a passionate group of Hak5 enthusiasts. Join us on irc.hak5.org.

Please be aware that views expressed by community members are not those of Hak5 LLC.



One of the most valuable resources of the USB Rubber Ducky community project is sharing payloads. Featured payloads for various environments and applications can be found at the USB Rubber Ducky Forums.

Payloads are also hosted on the USB Rubber Ducky Wiki.


Duckyscript is the simple scripting language designed to make building a payload a breeze. With just a few simple commands you can turn any text file written in Notepad, Vi or TextEdit into an inject.bin ready to load on your USB Rubber Ducky and execute on your target PC.

Ducky Script

Java Duckyscript Encoder

Duckyscript text file must be encoded into an inject.bin file and copied to the root of the Micro SD card in order for the USB Rubber Ducky to execute the payload.

The original cross-platform Java duckencoder.jar provides a means to encode duckyscript on Windows, Mac or Linux. Download the Duck Encoder.

Online Duckyscript Encoder

The Duck Toolkit features an encoder supporting international keyboard layouts for convenient duckyscript compiling witout the need for a local version of the java duckencoder.

DuckEncoder GUI

This cross-platform Java based duck encoder provides a graphical interface to script writing. Supporting multiple layouts and with an open source license this contribution comes from USB Rubber Ducky community member m1s73r. Find Support and Download links here.

USB Rubber Ducky Toolkit

The USB Rubber Ducky Toolkit website allows you to select and generate payloads for the USB Rubber Ducky with ease.

Community Edition Encoder and Firmware

Ducky-Decode is a community edition and alternative to the stock USB Rubber Ducky Firmware and Encoder with the following features:

  • HID on Windows, Linux, Mac OS X, Android, iOS.
  • Mass Storage to emulate a generic USB Drive
  • Multiple Payloads triggered via Keyboard LEDs
  • Composite Device: Mass Storage and Keyboard

The Ducky-Decide Encoder supports multiple HID languages including: US (United States), GB (United Kingdom), DE (German), DK (Danish), FR (French), IT (Italian), BE (Belgian), NO (Norwegian), PT (Portuguese), SV (Swedish), RU (Russian), ES (Spanish)

Simple-Ducky Payload Generator

The Simple-Ducky Payload Generator allows you to quickly create reliable payloads. It supports all Debian Distros including Kali-Linux, Ubuntu, Mint, etc. The Installer will ensure all dependencies are met and with simple-ducky you can quickly create executables, inject.bin files, launch meterpreter or netcat listeners, generate custom password lists and much more.

Get the latest version of the Simple-Ducky-Payload-Generator at Google Code and watch Tutorial Videos on installation and usage.

VID and PID Swapper

All USB devices include a VID (Vendor ID) and PID (Product ID). The USB Rubber Ducky has the ability to swap its VID/PID to avoid antivirus software. This Swapper Program allows you to automatically change the vidpid.bin file on the USB Rubber Ducky.

Flashing and Upgrading

Various firmwares exist for the USB Rubber Ducky to enable additional functionality, support additional languages or operating systems. Flashing the USB Rubber Ducky is a fairly simple process on Windows and Linux. This guide provides simple instructions.

Look here for Unix/Linux/OSX instructions.


The source is written in C and requires the AVR Studio 5 IDE from atmel.com/avrstudio. Find the USB Rubber Ducky and Encoder firmware Source Code on Github.