Installer for a ready-to-use Ubuntu desktop VM aimed at firmware analysis, reverse engineering, serial/UART work, and hardware flashing/debug.
It configures the VM (hostname, theme, udev rules, hardware groups) and installs a curated toolset with categorized desktop shortcuts under ~/Desktop/Tools/.
Use Ubuntu 22.04.5 LTS (Jammy Jellyfish) — Desktop image (AMD64).
Download from the official release page:
https://releases.ubuntu.com/jammy/
Recommended file:
Create a VM (VirtualBox, VMware, etc.), install Ubuntu from that ISO, then continue below inside the guest.
Prefer the Desktop image so GNOME themes, wallpaper, and Apps-menu launchers work. Disable Secure Boot in the VM firmware if you plan to use unsigned USB/JTAG drivers.
- Fresh or existing Ubuntu 22.04.5 LTS desktop install
- Internet access (packages and some tools are downloaded during install)
sudoprivileges- Enough disk space for heavy tools (Ghidra, QEMU, EMBA, FACT, etc.) — several GB free recommended
- Clone or copy this repository onto the Ubuntu VM.
- Open a terminal in the repo directory.
- Run:
chmod +x install.sh preinstall.sh install-launchers.sh tools/*.sh
sudo ./install.shAn interactive checklist appears (SPACE to toggle, ENTER to confirm). Preinstall and all active tools are selected by default.
- When finished, log out and log back in (or reboot) so group membership (
dialout,plugdev,wireshark) takes effect.
sudo ./install.sh --allsudo ./preinstall.sh
# or
sudo ./install.sh preinstallsudo ./install.sh 05-binwalk.sh 07-ghidra.sh
# or by basename as listed in tools/
sudo ./install.sh 15-wireshark.shsudo ./install-launchers.shpreinstall.sh prepares the VM before/alongside tools:
| Setting | Detail |
|---|---|
| Hostname | wiresploit-vm |
| Theme | Dark (Yaru-dark) + WireSploit wallpaper (if bg/bg.png is present) |
| Groups | Adds your user to dialout, plugdev, wireshark |
| Udev | Installs hardware rules for common UART/JTAG/ESP/SDR adapters |
| Kernel modules | Autoload helpers for FTDI, CH340, CP210x, PL2303, CDC ACM |
| Secure Boot | Checks status and guides disable if needed for USB/JTAG modules |
Tools live in tools/ as numbered install scripts. After install, launchers appear under Desktop → Tools → <Category> and in the Apps menu.
| Tool | Script | Description |
|---|---|---|
| net-tools | 01-net-tools.sh |
Classic networking utilities (ifconfig, netstat) |
| OpenSSH server | 02-ssh.sh |
SSH daemon for remote access to the VM |
| Tool | Script | Description |
|---|---|---|
| ImHex | 03-imhex.sh |
Hex editor for reverse engineers |
| Cursor | 04-cursor.sh |
Cursor IDE |
| Tool | Script | Description |
|---|---|---|
| Binwalk | 05-binwalk.sh |
Firmware carving / analysis |
| unblob | 06-unblob.sh |
Extraction suite for nested firmware formats |
| 7-Zip | 08-7zip.sh |
Official 7-Zip archive tool |
| file | 09-file.sh |
File type identification (libmagic) |
| strings | 10-strings.sh |
Extract printable strings from binaries |
| EMBA | 14-emba.sh |
Firmware security analyzer (heavy / slow) |
| FACT | 16-fact.sh |
Firmware Analysis and Comparison Tool (web UI) |
| Tool | Script | Description |
|---|---|---|
| Ghidra | 07-ghidra.sh |
NSA Software Reverse Engineering framework |
| binutils | 11-binutils.sh |
objdump, readelf, nm, and related tools |
| checksec | 12-checksec.sh |
Binary hardening / security feature checks |
| Tool | Script | Description |
|---|---|---|
| QEMU | 13-qemu.sh |
ARM/MIPS system and user-mode emulation |
| Tool | Script | Description |
|---|---|---|
| Wireshark | 15-wireshark.sh |
Network protocol analyzer |
| Tool | Script | Description |
|---|---|---|
| minicom | 17-minicom.sh |
Serial terminal |
| picocom | 18-picocom.sh |
Lightweight serial terminal |
| screen | 19-screen.sh |
Terminal multiplexer / serial access |
| Tool | Script | Description |
|---|---|---|
| flashrom | 20-flashrom.sh |
Read/write chip firmware via programmers |
| avrdude | 21-avrdude.sh |
AVR microcontroller programmer |
| esptool | 22-esptool.sh |
ESP8266 / ESP32 flash tool (esptool.py) |
| OpenOCD | 23-openocd.sh |
On-chip debugging (JTAG/SWD) |
| stm32flash | 24-stm32flash.sh |
STM32 UART bootloader flasher |
| Command | Behavior |
|---|---|
sudo ./install.sh |
Interactive checklist (TTY) |
sudo ./install.sh --all |
Install preinstall + all active tools (no menu) |
sudo ./install.sh --no-menu |
Same as --all |
sudo ./install.sh --skip-preinstall |
Menu without forcing preinstall on |
sudo ./install.sh preinstall |
Preinstall only |
sudo ./install.sh <script> |
Run one or more tool scripts |
- Log out / reboot so USB serial and capture groups apply.
- Open tools from Desktop → Tools or the Apps menu folders.
- For serial adapters, devices are typically
/dev/ttyUSB0or/dev/ttyACM0. - If a USB/JTAG device fails to load a driver, confirm Secure Boot is disabled in the VM UEFI settings.
ESCS_VM/
├── install.sh # Main interactive installer
├── preinstall.sh # VM hostname, theme, udev, groups
├── install-launchers.sh # Refresh categorized desktop launchers
├── lib/
│ ├── common.sh # Shared helpers + categories
│ └── tool_launchers.sh # Per-tool launcher definitions
├── tools/ # One install script per tool
└── vm/udev/ # Hardware udev rules
- Run install scripts with
sudofrom a normal desktop user session (not a pure root login), so wallpaper, groups, and desktop shortcuts target the correct account. - Some tools (especially EMBA and FACT) take a long time and significant disk space; you can uncheck them in the menu if you do not need them yet.
- Scripts expect an Ubuntu/Debian-style
aptenvironment; 22.04.5 LTS is the supported target.