{"id":29707440,"url":"https://github.com/geo-tp/esp32-bus-pirate","last_synced_at":"2025-07-23T17:10:49.747Z","repository":{"id":303151068,"uuid":"1014515436","full_name":"geo-tp/ESP32-Bus-Pirate","owner":"geo-tp","description":"A Hardware Hacking Tool with Web-Based CLI That Speaks Every Protocol ","archived":false,"fork":false,"pushed_at":"2025-07-20T23:23:45.000Z","size":27160,"stargazers_count":161,"open_issues_count":0,"forks_count":18,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-21T01:12:26.196Z","etag":null,"topics":["debugging","esp32","hardware-hacking","protocol"],"latest_commit_sha":null,"homepage":"https://github.com/geo-tp/ESP32-Bus-Pirate/wiki","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geo-tp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-05T21:59:46.000Z","updated_at":"2025-07-20T23:26:44.000Z","dependencies_parsed_at":"2025-07-06T01:29:33.662Z","dependency_job_id":"f7cf80ff-67da-47db-9062-e63f6a69d7ab","html_url":"https://github.com/geo-tp/ESP32-Bus-Pirate","commit_stats":null,"previous_names":["geo-tp/esp32-bus-pirate"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/geo-tp/ESP32-Bus-Pirate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geo-tp","download_url":"https://codeload.github.com/geo-tp/ESP32-Bus-Pirate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266717708,"owners_count":23973384,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debugging","esp32","hardware-hacking","protocol"],"created_at":"2025-07-23T17:10:26.632Z","updated_at":"2025-07-23T17:10:49.734Z","avatar_url":"https://github.com/geo-tp.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32 Bus Pirate\n\n**ESP32 Bus Pirate** is an open-source firmware that turns your device into a multi-protocol hacker's tool, inspired by the [legendary Bus Pirate](https://buspirate.com/).\n\nIt supports sniffing, sending, scripting, and interacting with various digital protocols (I2C, UART, 1-Wire, SPI, etc.) via a serial terminal or web-based CLI.\n\n![Demo showing the different mode of the ESP32 Bus Pirate](images/demo.gif)\n\n## Features\n\n- Interactive command-line interface (CLI) via **USB Serial or WiFi Web**.\n- **Modes for:**\n  - HiZ (default)\n  - I2C\n  - SPI\n  - UART / Half-Duplex UART\n  - 1-WIRE\n  - 2WIRE / 3WIRE (planned)\n  - DIO (Digital I/O)\n  - Infrared (device-b-gone, send and receive)\n  - USB (HID, mouse, keyboard, gamepad, storage)\n  - Bluetooth (BLE HID, scan, spoofing, sniffing)\n  - Wi-Fi (scan, AP, connect, sniff, spoofing)\n  - JTAG\n  - LED control\n  - I2S\n\n- **Protocol sniffers** for I2C, Wi-Fi, Bluetooth, 1Wire.\n- Baudrate **auto-detection** and various tools for UART.\n- Scripting using **Bus Pirate-style bytecode** instructions.\n- Direct I/O management, PWM, pin state.\n- Massive infrared protocol support.\n- Massive adressable LEDs protocol support.\n- Web interface with **live terminal**, or a classic **serial CLI**.\n\n## Supported Devices\n\n- **M5 Cardputer**\n\n![An M5 Stack Cardputer device](images/cardputer.jpg)\n\n- **M5 Stick C Plus 2**\n\n![An M5 Stick C Plus 2 device](images/m5stick.jpg)\n\n- **M5 Stamp S3**\n\n![An M5stampS3 micro controller](images/stamps3.jpg)\n\n\n## Wiki\n\n📚 Visit the **[Wiki](https://github.com/geo-tp/ESP32-Bus-Pirate/wiki)** for detailed documentation on every mode and command.\n\nIncludes:\n- [Terminal mode](https://github.com/geo-tp/ESP32-Bus-Pirate/wiki/00-Terminal) - About serial and web terminal.\n- [Mode overviews](https://github.com/geo-tp/ESP32-Bus-Pirate/wiki) - Browse supported modes.\n- [Instruction syntax](https://github.com/geo-tp/ESP32-Bus-Pirate/wiki/99-Instructions) - Master the instructions.\n- [Serial setup](https://github.com/geo-tp/ESP32-Bus-Pirate/wiki/99-Serial) - Serial access via USB.\n- [Python scripting examples](https://github.com/geo-tp/ESP32-Bus-Pirate/wiki/99-Python) - Automate tasks using Python.\n\n\n\nThe wiki is the best place to learn how everything works.\n\n## Getting Started\n\n1. 🔧 Flash the firmware  \n   - Download the latest release from the [Releases](https://github.com/geo-tp/ESP32-Bus-Pirate/releases) page, and flash it using your favorite tool (`esptool.py`, `PlatformIO`, etc.).\n   - You can also burn it on [M5Burner](https://docs.m5stack.com/en/download), in the M5stick or Cardputer category.\n\n2. 🔌 Connect via Serial or Web\n   - Serial: any terminal app (see [Connect via Serial](https://github.com/geo-tp/ESP32-Bus-Pirate/wiki/99-Serial))\n   - Web: configure Wi-Fi and access the CLI via browser\n\n3. 🧪 Use commands like:\n   ```bash\n   mode\n   help\n   scan\n   sniff\n   ...\n    ```\n   See detailed explanations about [Terminal Commands](https://github.com/geo-tp/ESP32-Bus-Pirate/wiki) and how each one works.\n   \n## ESP32 Bus Pirate on M5 Devices\n![ESP32 Bus Pirate running on M5 Stack devices](images/buspirate_s.jpg)\n\n## Web \u0026 Serial Interfaces\n\nThe ESP32 Bus Pirate firmware provides two command-line interface (CLI) modes:\n\n| Interface         | Advantages                                                                 | Ideal for...                          |\n|------------------|-----------------------------------------------------------------------------|----------------------------------------|\n| **Web Interface** | - Accessible from any browser\u003cbr\u003e- Works over Wi-Fi\u003cbr\u003e- No cables needed | Quick tests, demos, headless setups   |\n| **Serial Interface** | - Faster performance\u003cbr\u003e- Instant responsiveness\u003cbr\u003e- Handles large data smoothly | Intensive sessions, frequent interactions |\n\n\nBoth interfaces share the same command structure and can be used interchangeably.\n\n![An iPhone screenshot showing Bus Pirate web cli](images/mobile_s.jpg)\n\n## Using the ESP32 Bus Pirate to speak UART over WiFi\n![Using the ESP32 Bus pirate with UART](images/demo2.gif)\n\n\n## Warning\n\u003e ⚠️ **Voltage Warning**: Devices should only operate at **3.3V** or **5V**.  \n\u003e Do **not** connect peripherals using other voltage levels — doing so may **damage your ESP32**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeo-tp%2Fesp32-bus-pirate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeo-tp%2Fesp32-bus-pirate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeo-tp%2Fesp32-bus-pirate/lists"}