Bluetooth-Ducky icon indicating copy to clipboard operation
Bluetooth-Ducky copied to clipboard

Bluetooth Ducky is a stealthy HID injection tool built on the ESP32 platform. It emulates a Bluetooth keyboard to silently inject keystrokes into a paired device.

πŸ” Bluetooth Ducky ESP32 - HID Injection Tool

Platform License Status

Bluetooth Ducky is a stealthy HID injection tool built on the ESP32 platform. It emulates a Bluetooth keyboard to silently inject keystrokes into a paired device. Perfect for red team operations, security research, and automation β€” all done wirelessly.

⚠️ Disclaimer: This project is for educational and authorized testing purposes only. Unauthorized use may violate laws. Use responsibly.


✨ Features

  • βœ… Bluetooth HID (keyboard) emulation via ESP32
  • βœ… Auto-pairing support for previously connected devices
  • βœ… Ducky Script-style payloads (easily customizable)
  • βœ… Trigger via boot or over Serial
  • βœ… Supports Windows, macOS, Linux, and Android
  • βœ… Lightweight, portable, and easy to use

πŸ“¦ Requirements


πŸ”§ Installation

  1. Install the ESP32 Board in Arduino IDE

    • Go to File > Preferences
    • Add the following URL to Additional Board Manager URLs:
      https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
      
    • Go to Tools > Board > Boards Manager, search esp32 and install V.2.0.7
  2. Install BLE Keyboard Library

    • Download the library ZIP: ESP32-BLE-Keyboard
    • In Arduino IDE, go to Sketch > Include Library > Add .ZIP Library...
    • Select the downloaded ZIP file.
  3. Select the Board and Port

    • Go to Tools > Board > ESP32 Dev Module
    • Select the correct COM port under Tools > Port
  4. Open and Edit the Code

    • Open Ducky.ino in Arduino IDE
    • Customize the payload as needed
  5. Upload to ESP32

    • Click βœ… Verify then ⬆️ Upload
    • Once uploaded, disconnect and power it externally

πŸš€ How to Use

  1. Power the ESP32 device
    It will start broadcasting as a Bluetooth keyboard.

  2. Wait for the Victim to Pair
    On first use, the victim must accept the pairing.
    After this, the ESP32 will auto-connect silently in the future.

  3. Payload Execution
    Once connected, the predefined script will automatically run and execute on the victim’s machine.


πŸ“₯ Downloads

ESP32 Serial Monitor GUI?

➑️ Download it from the Releases section.

The monitor app allows you to:

  • Send serial commands to your ESP32 device
  • View real-time logs and responses
  • Trigger payloads manually
  • Customize interaction with your Bluetooth Ducky tool

Available for Windows (.exe) β€” more platforms coming soon.

πŸ’» Available Serial Commands

Use these commands via the Serial Monitor or GUI Monitor App:

Command Action
notepad Open Notepad
youtube <search> Search & open YouTube
google <search> Search & open Google
whatsapp <no> <msg> Send WhatsApp message
wp-ss <no> Send screenshot via WhatsApp
cmd Open Command Prompt
shutdown Shutdown PC in 5 seconds
run Open Run dialog (Win + R)
url <command> Execute command in Run box
lock Lock the PC
close Close current app
ENTER Press Enter key
screenshot Take a screenshot
CTRL+<key> Press CTRL with a key (e.g., CTRL+A)
WIN, LEFT, RIGHT, UP, DOWN Arrow or Win keys
WiFi Dump saved Wi-Fi passwords
Fake Show fake system update
Spam Display spam alert box
help Show all commands
About Show creator info

πŸ‘€ Creator Info

Created by:
Linuxndroid & Krishna Rajput UP61

πŸ”— Stay connected for updates, demos, and new tools!


πŸ›‘οΈ Legal Notice

This tool is intended only for authorized use in testing, education, or red teaming.
Misuse without consent is strictly prohibited and may violate laws.


πŸ“„ License

This project is licensed under the MIT License.


❀️ Credits

  • ESP32 BLE Keyboard Library by T-vK
  • Inspired by USB Rubber Ducky and other open-source red team tools


Watch Video For More Information.

YouTube Video

Made with ❀️ By Linuxndroid

Available Our Hacking Course

Follow Me on :

Instagram

Youtube

Browser

πŸ§ͺ Example Payloads

delay(1000);                        // Wait 1 second
typeSlow("https://www.instagram.com/linuxndroid");   // Type message
bleKeyboard.write(KEY_RETURN);      // Press Enter