MMH3 哈希核心
从 URL、文件、Base64 或字节计算 MurmurHash3,输出 int32/uint32 或 6 大搜索引擎语法。
查看架构 →
阅读路线(推荐顺序)
按下面的顺序读,15 分钟从入门到产出:
| 文档 | 内容 | 适合人群 |
|---|---|---|
| 架构设计 核心 | 系统分层、数据流、模块依赖 | 贡献者 / 架构师 |
| 集成方式 | 4 种集成路径对比与选择 | 所有用户 |
| CLI 命令手册 | 11 个子命令完整参考 | 终端用户 |
| HTTP API 参考 | 9 个 RESTful 端点 | 后端 / 自动化 |
| MCP 集成 AI | 5 个 MCP 工具与 AI 代理对接 | AI 应用开发者 |
| 指纹数据库 | 700+ 指纹管理与查询 | 安全研究员 |
| Go SDK | 嵌入式 Go 库 API | Go 开发者 |
| 构建与发布 | Lite/Full 变体、多平台、CI/CD | 维护者 |
| FAQ | 常见问题与排错 | 所有人 |
下面这张图概括了 IconHash Skills 的完整能力版图——从输入源到搜索引擎输出的端到端流程:
一条命令,端到端
identify 是日常 90% 场景下你唯一需要的命令——它会自动发现图标 → 计算哈希 → 匹配指纹 → 输出 6 大搜索引擎语法。
# 一条命令完成:发现图标 → 计算哈希 → 匹配指纹 → 输出搜索语法
iconhash identify https://www.example.com输出示例:
🔍 发现 2 个图标
→ https://www.example.com/favicon.ico
→ https://www.example.com/apple-touch-icon.png
🔢 MMH3 哈希: -1161367058
🎯 指纹匹配: nginx (web server)
🔎 搜索语法:
Fofa: icon_hash="-1161367058"
Shodan: http.favicon.hash:-1161367058
...identify 会解析目标 HTML,抓取 <link rel="icon">、<link rel="apple-touch-icon"> 等标签声明的图标;同一页面发现多个图标时会逐个计算,避免漏掉隐藏资产。apple-touch-icon 这类尺寸更大的图标往往是服务自定义的,比 favicon.ico 更能区分服务版本。MurmurHash3 算出 int32。负数是正常的——MMH3 输出的是有符号 32 位整数,搜索引擎按这个原始数字索引。700+ 指纹库里查,命中则给出服务名、分类、标签、版本。未命中也会返回哈希,你仍可拿去搜索引擎搜。6 大引擎的语法字段名各不相同(Fofa 用 icon_hash、Shodan 用 http.favicon.hash),这里帮你一次格式化好,复制即搜。不确定从哪开始?参考下面的决策树:
三句话选型
identify 单条、batch 批量,开箱即用,不用写程序。import,跨语言走 RESTful HTTP 端点。下面这张图把集成方式、核心引擎、指纹库三者的对应关系一次性铺开——任选一种集成方式,都能驱动同一套引擎、访问同一份指纹库:
从"发现一个可疑站点"到"拿到 6 大引擎可搜索的资产清单",端到端调用链如下:
cyberspacesec/iconhash-skills Go 1.25
源码、Issues、CI/CD 全在这里。Star 一下可以第一时间收到新指纹库和新引擎的发布通知。
GitHub Releases Lite + Full
Linux / macOS / Windows / FreeBSD × amd64 / arm64 / RISC-V,每个版本都有 Lite(单二进制)和 Full(含完整指纹库)两个变体。Docker 镜像同步推送。
为什么用 favicon 哈希做测绘?
网站的 favicon 是一串几乎不变的字节,而它经过 MurmurHash3 后得到一个稳定的 int32。攻击者只需在搜索引擎输入这个数字,就能瞬间定位全网所有部署同一服务的资产——哪怕它们藏在 CDN、内网或非标准端口后面。一个图标,暴露整个攻击面。