{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/soyersoyer/basefind2/blob/370d0ddf561bf5626c40740f0cc2088578bc35b2/basefind2.py",
    "https://github.com/soyersoyer/basefind2/blob/370d0ddf561bf5626c40740f0cc2088578bc35b2/LICENSE",
    "https://github.com/sgayou/rbasefind/blob/a661118d19f0e2b282c48f2e8019d493868d4dd2/README.md"
  ],
  "category": "firmware",
  "description_en": "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.",
  "description_zh": "一个 Python 脚本，无需暴力枚举每个候选基址即可估算平面 32 位小端固件镜像的加载地址，在 mncoppola 的 basefind.py 和 rbasefind 的基础上改进而来。它在排序后指针值的相邻差值中，查找与一段相邻字符串偏移差值完全相同的连续序列，把每处匹配视为候选基址，再按抽样字符串在重定位后的地址同样作为指针出现的比例为其打分。README 中的示例约用 26 秒找出了一个镜像的正确基址。",
  "entry_url": "https://awesomerea.org/resources/basefind2/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/basefind2/",
  "evidence_url": "https://github.com/soyersoyer/basefind2/blob/370d0ddf561bf5626c40740f0cc2088578bc35b2/README.md",
  "group": "tools",
  "id": "basefind2",
  "json_url": "https://awesomerea.org/resources/basefind2/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/basefind2/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/basefind2/index.md",
  "name": "basefind2",
  "name_zh": "basefind2 快速固件基址扫描器",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "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."
  ],
  "requirements_zh": [
    "整个工具就是 basefind2.py；所审阅的 main 分支提交日期为 2022-05-02，是 2022-04-07 至 2022-05-02 间六个提交中的最后一个，没有发布版本、标签或软件包。只需 Python 3 及其标准库。",
    "输入是使用者提供的平面镜像；仓库不含任何固件或样例。指针按 4 字节对齐的小端 32 位字读取，没有大端或 64 位选项。字符串指由至少 10 个可打印 ASCII 字符、制表符或换行符组成的连续片段（-sl），默认需有 10 个连续差值相同才算匹配（-dl），打分时每 20 个字符串抽取一个（-s）。整个文件会被读入内存。",
    "输出列出每个候选基址及其抽样匹配百分比，需要分析人员选择并确认。README 唯一的示例把 -dl 提高到 40，约 26 秒后以 81.64% 报告出一个镜像的正确基址。项目没有测试或 CI，README 也未在相同镜像上与 rbasefind 或 basefind.py 比较。",
    "采用 MIT 许可证（2022 年，soyer）。被分析的固件适用其自身条款。"
  ],
  "targets": [
    "firmware"
  ],
  "url": "https://github.com/soyersoyer/basefind2",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
