# basefind2

> Python script that estimates the load address of a flat 32-bit little-endian firmware image without brute-forcing every candidate base, building on mncoppola's basefind.py and rbasefind. It searches the gaps between sorted pointer values for a run of consecutive gaps between string offsets, takes each match as a candidate base, and scores it by the share of sampled strings whose rebased address also appears as a pointer. The README's example finds the correct base of one image in about 26 seconds.

- Type: Tool
- Targets: Firmware
- Category: Firmware tools
- Relationship: Foundation tool
- Sources reviewed: 2026-10-27
- Added to the catalog: 2026-11-03
- Original resource: <https://github.com/soyersoyer/basefind2>
- Primary source: <https://github.com/soyersoyer/basefind2/blob/370d0ddf561bf5626c40740f0cc2088578bc35b2/README.md>
- Catalog page: <https://awesomerea.org/resources/basefind2/>
- Record JSON: <https://awesomerea.org/resources/basefind2/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/basefind2/index.md)

## Requirements & limits

- The whole tool is basefind2.py; the reviewed main commit of 2022-05-02 is the last of six commits made between 2022-04-07 and 2022-05-02, and there are no releases, tags or packages. It needs only Python 3 and its standard library.
- Input is a flat image supplied by the user; no firmware or samples are included. Pointers are read as little-endian 32-bit words at 4-byte alignment, with no big-endian or 64-bit option. Strings are runs of at least 10 printable ASCII characters, tabs or line breaks (-sl), a match needs 10 consecutive gaps by default (-dl), and scoring samples every 20th string (-s). The whole file is read into memory.
- Output lists each candidate base with its sampled match percentage, and the analyst must choose and confirm one. The README's only example raises -dl to 40 and reports the correct base of one image at 81.64% after about 26 seconds. There are no tests or CI, and the README gives no comparison with rbasefind or basefind.py on shared images.
- MIT License (2022, soyer). Analyzed firmware keeps its own terms.

## Primary sources

1. <https://github.com/soyersoyer/basefind2/blob/370d0ddf561bf5626c40740f0cc2088578bc35b2/README.md>
2. <https://github.com/soyersoyer/basefind2/blob/370d0ddf561bf5626c40740f0cc2088578bc35b2/basefind2.py>
3. <https://github.com/soyersoyer/basefind2/blob/370d0ddf561bf5626c40740f0cc2088578bc35b2/LICENSE>
4. <https://github.com/sgayou/rbasefind/blob/a661118d19f0e2b282c48f2e8019d493868d4dd2/README.md>

## More in Firmware and hardware

- [JTAGulator](https://awesomerea.org/resources/jtagulator/index.md) · Tool
- [BIOSUtilities](https://awesomerea.org/resources/biosutilities/index.md) · Tool
- [allyourbase](https://awesomerea.org/resources/allyourbase/index.md) · Tool
- [ghidra_kernelcache](https://awesomerea.org/resources/ghidra-kernelcache/index.md) · Tool
- [esp32_image_parser](https://awesomerea.org/resources/esp32-image-parser/index.md) · Tool
- [Tigard](https://awesomerea.org/resources/tigard/index.md) · Tool

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
