This repository is a living archive of embedded GoAhead / jhttpd web server binaries collected from router and IoT firmware images.
It exists to preserve historically significant embedded web stacks and make them easily accessible for security research, reverse engineering, and long-term study.
GoAhead and its forks powered countless low-cost routers, access points, cameras, and IoT devices from the late 1990s through the 2020s. They introduced the /goform pattern for handling web requests, which became a de facto standard in many OEM firmware packages. As devices age out and firmware images disappear, this codebase β and its vulnerabilities β are at risk of being lost to history.
- Historical Preservation β provide researchers with reference samples of GoAhead and related forks before they disappear from vendor sites.
- Security Research β offer a centralized resource to compare implementations, patch histories, and vulnerability trends.
- Education β show students and professionals how embedded web stacks evolved and how their security models worked (or failed).
- Collaboration β encourage contributions of additional binaries for comparative analysis.
Each contributed binary is stored with accompanying metadata.
This allows researchers to understand the firmware context and track lineage across vendors and versions.
| Sample ID | Vendor / Model | Firmware Ver. | Variant | Link |
|---|---|---|---|---|
| jhttpd.NR500.EA | NR500-EA | RG500UEAABxCOMSLICv3.4.2731.16.43 | jhttpd fork | link |
| jhttpd.dionlink.M7628N | Tuoshi/Dionlink LT15D & LT21B 4G Wi-Fi | v1.0.1802.10.08.P4 | jhttpd fork | link |
| kthy_topsw_goahead.topsw.GC111 | KTHY TopSW GC111-GL-LM321 | V3.0.20191211 | OEM GoAhead fork | link |
| webserver.KuWFi.AC900 | KuWFi AC900 | V1.0.13 | OEM GoAhead fork | link |
| goahead.vendorRedacted.2.2.9 | Redacted | V2.2.9 | OEM GoAhead fork | link |
- Sample ID β filename in the repository.
- Vendor / Model β hardware source device.
- Firmware Ver. β vendor firmware version string.
- Variant β GoAhead / jhttpd / OEM fork.
- Link β reference to the hosted binary in this repo.
This dataset enables:
- Static Analysis β compare forks to trace patching, hard-coded credentials, and code reuse.
- Dynamic/Fuzz Testing β build harnesses to explore attack surfaces of legacy binaries.
- Vulnerability Lineage β map how known flaws persisted or reappeared across vendors.
- Decommission Tracking β measure when GoAhead-based stacks vanished from production firmware.
- Teaching Material β provide real embedded targets for labs and courses in security or reverse engineering.
We welcome new binaries, metadata improvements, and analysis write-ups. To contribute:
- Upload the binary file.
- Add a row to the dataset table with the required metadata.
- Submit a pull request or open an issue to discuss.
All contributions help expand the coverage of the GoAhead ecosystem and support future research.
These binaries are provided for research and educational purposes only.
They are not meant to encourage unauthorized access or exploitation of live systems.
GoAhead and its forks use a URL prefix /goform to register βform handlersβ inside the binary. These handlers process login forms, configuration changes, and other CGI-like actions. Researchers can use several approaches to enumerate them:
Most web UI pages reference /goform/... as the form action or AJAX URL. Run:
On stripped-down BusyBox devices you usually donβt have find, which, or file, but you do have ps. You can use it to identify which process is the embedded web server.
Run:
psLook for entries that resemble:
PID USER VSZ STAT COMMAND
635 admin 1864 S goahead
or:
PID USER VSZ STAT COMMAND
635 admin 1864 S httpd
Typical embedded web server binaries include:
goaheadhttpdormini_httpdlighttpdjhttpd
The COMMAND column tells you the binary name.
Once you see the process name (e.g., goahead), check typical directories:
ls /bin/goahead
ls /sbin/goahead
ls /usr/bin/goahead
ls /usr/sbin/goaheadRepeat for httpd, mini_httpd, or whatever name appeared in ps.
If youβre unsure, you can also run:
grep -i goahead /etc/* 2>/dev/null
grep -i httpd /etc/* 2>/dev/nullStartup scripts sometimes reference the binary or its configuration.
Once you find the binary path, you can:
- Copy it to a writable directory or the web root.
- Download it to your PC for
strings/binwalk/ reverse engineering.
Summary:
- Use
psto identify the running web server name. - Use
lson common binary directories to locate it. - Use
grepon/etcor/etc_roto find startup scripts. - Copy it out for analysis or fuzzing.