Babel-USB: USB drive with every file
Summary
This project turns an ESP32-S3 development board into a USB drive that appears to contain every possible file, inspired by the Library of Babel. It's a fun hack that generates arbitrary file contents based on path names using MTP protocol.
View Cached Full Text
Cached at: 06/12/26, 02:53 AM
p2r3/babel-usb
Source: https://github.com/p2r3/babel-usb
About
This project turns an ESP32-S3 development board into an infinite filesystem inspired by the digital Library of Babel.
Usage
- Buy an ESP32-S3 development board - ideally one shaped as a USB stick for maximum bewilderment. This is the one I got, though you don’t necessarily need this exact variant. That said, make sure you’re getting an ESP32-S3. That’s the only one I’ve tested. Others may not have hardware USB support. S2 might work, but I make no promises.
- Get Visual Studio Code and set up PlatformIO. Refer to Google or YouTube if you don’t know how.
- Clone this repository with submodules. Again, if you don’t know what that means, look it up.
- Open the cloned folder in VScode, wait for it to set up the project.
- While holding the “BOOT” button, plug the microcontroller into your PC.
- Click the “→” icon in VScode to compile and flash the project. Once that’s done, disconnect and reconnect the microcontroller.
- Explore! You might have to copy files off of the MTP share before reading them, as most programs don’t support reading directly from MTP.
Finding specific files
- Install Bun.
- Navigate to the cloned folder and use the command
bun run file-to-path.js <path>, where<path>is a path to the file you wish to find. Note that files larger than a couple hundred bytes will take a very long time to generate. - Copy the path it returns and paste it into your file browser after
disk/. - Find the
file, copy it off of the drive, and verify that it is in fact the same file.
Credits
The hardware-facing bits of this project are loosely cobbled on top of RigoLigoRLC’s work on esp32s3-tusb-mtp and their fork of espressif-tinyusb-component.
Similar Articles
ESP32 Bit Pirate Hardware Hacking Kit with Web Tools That Speaks Every Protocol
ESP32 Bit Pirate is an open-source hardware debugging ecosystem for ESP32-S3 boards, providing firmware, browser-based tools, and documentation for multi-protocol hardware hacking and development.
ESP32 Bit Pirate, a Hardware Hacking Tool with WebCLI That Speaks Every Protocol
ESP32 Bit Pirate is an open-source firmware that turns an ESP32 into a multi-protocol hacking tool, supporting sniffing and interaction with various digital and radio protocols via serial or web-based CLI.
My USB Drive Has a Hidden Encrypted Vault
An open-source hardware project called Phantomdrive creates a USB drive that appears as a small disk while hiding an encrypted AES-256 partition, protecting data from coercion.
usbliter8: An A12/A13 SecureROM exploit
usbliter8 is a tethered bootrom exploit for Apple A12 and A13 SoCs, using an RP2350-based microcontroller board to exploit a USB controller bug and gain low-level device access.
Comu Fits a 144MHz CH32V203 RISC-V Board Inside a USB-A Port
Comu is a compact 13×9.4mm development board built on the WCH CH32V203 RISC-V MCU that fits entirely inside a USB-A port, offering capacitive touch, LEDs, GPIO, and USB HID/serial/mass-storage capabilities. It is open-source and supports development via ch32fun, Rust, Arduino, and WCH tools.