{"id":31476067,"url":"https://github.com/geo-tp/esp32-bus-pirate-scripts","last_synced_at":"2026-02-28T13:07:30.332Z","repository":{"id":313671788,"uuid":"1051949680","full_name":"geo-tp/ESP32-Bus-Pirate-Scripts","owner":"geo-tp","description":"A collection of scripts to interact with the ESP32 Bus Pirate, log data, dump to file and automate hardware tasks.","archived":false,"fork":false,"pushed_at":"2025-09-16T18:36:25.000Z","size":39,"stargazers_count":22,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-02T00:54:21.067Z","etag":null,"topics":["dump","eeprom","esp32","flash","hacking","hardware","hardware-hacking","logging","scripting"],"latest_commit_sha":null,"homepage":"https://github.com/geo-tp/ESP32-Bus-Pirate","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"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":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-07T04:21:59.000Z","updated_at":"2025-10-01T23:41:52.000Z","dependencies_parsed_at":"2025-09-07T19:31:55.403Z","dependency_job_id":null,"html_url":"https://github.com/geo-tp/ESP32-Bus-Pirate-Scripts","commit_stats":null,"previous_names":["geo-tp/esp32-bus-pirate-scripts"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/geo-tp/ESP32-Bus-Pirate-Scripts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate-Scripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate-Scripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate-Scripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate-Scripts/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-Scripts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geo-tp%2FESP32-Bus-Pirate-Scripts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29935009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T13:00:17.143Z","status":"ssl_error","status_checked_at":"2026-02-28T12:59:13.669Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["dump","eeprom","esp32","flash","hacking","hardware","hardware-hacking","logging","scripting"],"created_at":"2025-10-02T00:51:49.382Z","updated_at":"2026-02-28T13:07:30.318Z","avatar_url":"https://github.com/geo-tp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32 Bus Pirate Scripts\n\n![Bus Pirate Scripts](bus_pirate_scripts.png)\n\nA collection of **easy-to-use** Python scripts to control the [**ESP32 Bus Pirate**](https://github.com/geo-tp/ESP32-Bus-Pirate) via USB serial interface. Now also supports WiFi connection.\n\n## Scripts\n\n| Script | Description |\n|--------|-------------|\n| `wifi_scan_log.py` | Periodically scan networks and logs them timestamped to a file |\n| `wifi_sniff_log.py` | Periodically sniff WiFi and logs timestamped raw packets to a file |\n| `wifi_deauth_all.py` | Sends deauth frames to all discovered SSIDs |\n| `bluetooth_sniff_log.py` | Periodically sniff packets and logs them timestamped to a file |\n| `uart_read_log.py` | Logs all UART data receiveid into a file |\n| `i2c_dump_eeprom_hex.py` | Dump the content of an I2C EEPROM in hex format to a file |\n| `i2c_dump_eeprom_bin.py` | Dump the content of an I2C EEPROM in raw bin format to a file |\n| `i2c_identify_all.py` | Detects all I2C devices and attempts to identify them |\n| `i2c_glitch_all.py` | Detects all I2C devices and attempts to glitch them |\n| `spi_dump_flash_hex.py` | Dump the content of an SPI Flash in hex format to a file |\n| `spi_dump_flash_bin.py` | Dump the content of an SPI Flash in raw bin format to a file |\n| `spi_dump_eeprom_hex.py` | Dump the content of an SPI EEPROM in hex format to a file |\n| `spi_dump_eeprom_bin.py` | Dump the content of an SPI EEPROM in raw bin format to a file |\n| `led_custom_animation.py` | Custom LED animation using led commands |\n| `infrared_devicebgone_loop.py` | Sends 'Device-B-Gone' IR commands in loop |\n| `dio_wait_and_pulse.py`  | Wait for a defined pin to go LOW to send a pulse |\n| `gps_util.py` | Parse NMEA packets from a UBlox M10 GPS module hooked up to a Bus Pirate |\n\n**Each script:**\n- Auto-detects the ESP32 Bus Pirate\n- Switches to the correct mode automatically\n- Logs output to console and/or file\n- Save the output file in the current directory\n\n## Requirements\n\n- Python 3.7 or higher\n- `pyserial` Python library\n\nInstall dependencies:\n```bash\npip install -r requirements.txt\n```\n\n---\n\n##  Getting Started\n\n1. Download the scripts folder\n2. Plug in your Bus Pirate device via USB serial\n3. Run any script using Python:\n```bash\npython3 wifi_scan_log.py\n```\n\n**Note:** If needed, you can manually configure the pin via serial for any mode before launching the script.\n\n## Create Your Script\n\nThe `BusPirate` class abstracts serial communication and provides methods like:\n\n### Serial Connection:\n\n```python\nfrom bus_pirate.bus_pirate import BusPirate\n\nbp = BusPirate.auto_connect()  # Auto-detect the ESP32 Bus Pirate\nbp.start()                     # Init connection + clear \nbp.change_mode(\"dio\")          # Switch to I2C, UART, WiFi, etc.\nbp.send(\"set 1 LOW\")           # Send a command (string)\nbp.wait()                      # Wait for response (default 300ms)\nlines = bp.receive()           # Read lines from the device\nlines = bp.receive_all(2)      # Read lines from the device until a given silent time\nbp.stop()                      # Close connection\n```\n\n### WiFi Connection:\n\n```python\nfrom bus_pirate.bus_pirate_wifi import BusPirateWifi\n\nbp = BusPirateWifi(\"192.168.4.1\")\nbp.start()\nbp.change_mode(\"uart\")\nbp.send(\"read\")\nresponse = bp.receive()\nbp.stop()\n```\n\nAdditional `Helper` class to parse and manipulate response from the ESP32 Bus Pirate.\n\n\n## Project Structure\n\n```\nscripts/\n│\n├── bus_pirate/        # Bus Pirate class\n│   ├── bus_pirate.py\n│   ├── bus_pirate_wifi.py\n│   └── helper.py\n│\n├── wifi_script_definition.py\n│\n├── bluetooth_script_definiton.py\n│\n├── ...\n\n```\n\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeo-tp%2Fesp32-bus-pirate-scripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeo-tp%2Fesp32-bus-pirate-scripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeo-tp%2Fesp32-bus-pirate-scripts/lists"}