Setup for ESP32-S2 & S3 boards to make a BLE-enabled USB Rubber Ducky.
- Minimal Setup.
- Simply controlled by Serial Bluetooth Terminal App.
- Execute payloads by just sending numbers.
- Windows 10
- Android
- Use those ESP32-S2 & S3 boards which has at least
8MB
flash memory.
- Open Official CircuitPython download link from here.
- Search
ESP32-S2
orESP32-S3
according to the board you have. - Select your board and click on it.
- At the end of the page, there is button named
DOWNLOAD BOOTLOADER ZIP
. - Click on it to download.
- Open that ZIP file.
- There is a file named
combined.bin
. - Open Adafruit ESP Web Flasher from here.
- Connect
ESP32-S2
orESP32-S3
with a USB cable. - Connect to the PC/Laptop.
- Press and hold the
BOOT
button. - Press and release the
RST
button. - Release the
BOOT
button. - Set the Baud Rate to
460800 Baud
. - Click on
Connect
button. - Select your Device COM Port in the Pop-Up Window.
- Click on
Connect
button in the Pop-Up Window.
- Click on
Erase
button. - Wait for sometimes to successfully erased.
- Click on first one
Choose a file...
. - Select the
combined.bin
file. - Click on
Program
button. - Wait for sometimes and after successfully flashed, press and release the
RST
button. - Plug-out and then plug-in the USB cable.
- When it connects, then
ESP32-S2
orESP32-S3
board as a removable storage deviceS3DKC1BOOT
.
- Done! Now,
ESP32-S2
orESP32-S3
Board is ready to flash CircuitPython.uf2
file.
- Open Official CircuitPython download link from here.
- Search
ESP32-S2
orESP32-S3
according to the board you have. - Select your board and click on it.
- Download latest CircuitPython
.uf2
file. - Copy the
.uf2
file into theS3DKC1BOOT
.- When it is copied, then it disconnects automatically and reconnect as
CIRCUITPY
. - Means CircuitPython is successfully flashed in the
ESP32-S2
orESP32-S3
board.
- When it is copied, then it disconnects automatically and reconnect as
- Open
CIRCUITPY
.- There are two important things in it :
lib
folder andcode.py
file.
- There are two important things in it :
- Download latest Adafruit CircuitPython Bundle from here.
- Extarct the ZIP file.
- Go to the
lib
folder in the extracted ZIP file. - Copy
adafruit_ble
andadafruit_hid
folders in thelib
folder ofCIRCUITPY
. - Done! Now,
ESP32-S2
orESP32-S3
board is ready to use as a BLEDuck.
- CIRCUITPY/
- lib/
adafruit_ble
adafruit_hid
code.py
payload_X.txt
- where
X
is a number like1
,2
,3
,4
etc.
- lib/
- Download or Clone the Repository.
- Open the folder.
- Make sure that your ESP32-S3 board is connected to your PC/Laptop.
- Copy
code.py
in theCIRCUITPY
.- It ask for replacement of
code.py
file, then replace it. - It will overwrite in the
code.py
file. - After 2-3 minutes, an BLE device named
BLEDuck
is discovered.
- It ask for replacement of
- Turn on your mobile bluetooth.
- Open
Serial Bluetooth Terminal
app. - Click on
☰
. - Click on
Devices
. - Click on
Bluetooth LE
. - Click on
Scan
.- It ask for permission, then click on
Allow
. - There is a device named
BLEDuck
show in it.
- It ask for permission, then click on
- Click on it.
- After that, when it show
Connected
it means ready to execute payloads using BLE. - Just type the number and click on Send button.
- The payload of that number executes immediately.
- Open Notepad or any other text editor.
- Write your payload in it.
- When saving the file, select
CIRCUITPY
. - Name the payload as
payload_1
,payload_2
etc.- It is saved by default as
.txt
files.
- It is saved by default as
Mnemonics | Description | Example |
---|---|---|
WAIT | It add time in the code. Time is in milliseconds. 1000 ms = 1 second. |
WAIT 1000 |
TYPE | It add text want to type in the code. | TYPE Hello World! |
LOOP | It runs commands for a certain number of times. Synatx is LOOP number-of-times commands |
LOOP 3 TYPE Hello World! EXIT LOOP 4 TAB EXIT LOOP 1 CTRL S EXIT LOOP 1 CTRL SHIFT N EXIT |
INF | It run commans infinitely. Syntax is INF commands |
INF TYPE Hello World! EXIT INF TAB EXIT |
-
- It is used to put the cursor in the next line.
- It is only used with TYPE.
- Example :
TYPE Hello World!-
- If TYPE contain any command and then
-
then it run automatically withoutENTER
key.
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
LEFT
UP
RIGHT
DOWN
TAB
HOME
END
PGUP
PGDN
CAPS
NUM
SCROLL
GUI
ESC
PRTSCR
PAUSE
INSERT
DEL
BKSP
ENTER
CTRL
SHIFT
ALT
`
!
@
#
$
%
^
&
*
(
)
-
=
[
]
\
;
'
,
.
/
SPACE
~
_
+
{
}
|
:
"
<
>
?
0
1
2
3
4
5
6
7
8
9
WAIT 1000
GUI R
WAIT 1000
TYPE notepad
WAIT 1000
ENTER
WAIT 1000
TYPE Hello World!
WAIT 1000
GUI R
WAIT 1000
TYPE cmd
WAIT 1000
CTRL SHIFT ENTER
WAIT 1300
ALT Y
WAIT 1000
CTRL SHIFT N
WAIT 1200
TYPE hello
WAIT 1100
ENTER
WAIT 1000
GUI R
WAIT 1000
TYPE notepad
WAIT 1000
ENTER
WAIT 1000
LOOP 6
TYPE Hello World!-
EXIT