Flipper Zero RFID 全量 UID 爆破实战:H10301 暴力破解文件与 RFID Fuzzer 配合指南
【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper
本文基于 H10301 Bruteforce 说明文档 与仓库中实际的 H10301_BF.zip 资源编写,讲解这套 Flipper Zero RFID 暴力破解资源包的内容构成、UID 地址空间原理、部署到 SD 卡的具体操作步骤,以及与 RFID Fuzzer 配合工作的完整工作流。读完后你将知道如何为 HID iClass H10301 读卡器生成并投放覆盖全部可能 UID的爆破列表文件,并能自行验证该文件的数据完整性。
一、这套资源是什么:H10301 全量 UID 爆破包
仓库 RFID/H10301 Bruteforce 目录下的说明文档只有一段核心内容,但信息量非常明确:
Used with the RFID Fuzzer, you can load these UIDs to tryeverypossible one. It's large and will take around 4 weeks to finish. (More for fun and testing than actual use.)
Simply extract the ZIP then copy the
H10301_BF.txtfile into therfidfuzzerfolder on your SD card.
要点归纳:
- 用途:配合 Flipper Zero 的 RFID Fuzzer 应用,加载其中的 UID 列表,遍历每一个可能的H10301 标签 UID;
- 规模:文件很大,作者估计完整跑完一轮需要大约 4 周(实际耗时随读卡器响应速度浮动);
- 定位:作者明确强调其性质是fun and testing(趣味性与测试性),例如验证门禁读卡器的防穷举策略(连续拒绝次数、超时锁卡、报警联动等),而非默认指向实际入侵用途;
- 来源致谢:该文件由 gh0st91 提供,原始制作仓库(含生成该 TXT 的 Python 脚本)在原文档中通过外链给出,仓库本身不附带脚本源码。
二、UID 地址空间:为什么是 16,777,216 行
"H10301" 指向 HID 的 iClass H10301 系列标签。从文件名与该目录的主题可以推断:爆破对象是其中 24 bit(3 字节)可变的 UID 部分。对这一点,仓库中实际的 ZIP 内容提供了直接证据:
对 H10301_BF.zip 解包检查(仅读取与流式统计,未修改任何文件)得到:
| 项目 | 实测值 |
|---|---|
| 压缩包内唯一文件 | H10301_BF.txt |
| 压缩后大小(ZIP 内) | 17,621,928 字节(约 16.8 MiB,磁盘上 17,622,088 字节) |
| 解压后大小 | 117,440,512 字节(112 MiB) |
| 行数(换行符计数) | 16,777,216 |
| 首行 | 000000 |
| 末行 | FFFFFF |
| 每行长度 | 固定 8 个十六进制字符 + 换行(8 字节/行 × 16,777,216 行 = 117,440,512 字节,与文件大小精确吻合) |
关键结论:
- 行数恰好等于 2^24 = 16,777,216,即 24 bit 地址空间的大小;
- 内容是从
000000到FFFFFF的连续、无重复、无缺失的 8 位十六进制 UID 序列,按数值递增排列; - 这正是文档中 "tryeverypossible one" 的字面实现——对 24 bit UID 空间做无漏、无重的全枚举。
因此该 TXT 就是一个"字典":RFID Fuzzer 每读取一行,就将其作为一个待模拟/待尝试的 UID 发射一次,全部遍历完即完成一轮穷举。
三、部署步骤:从 ZIP 到 SD 卡
原文档给出的操作只有两句话,这里补充为可完整复现的步骤:
- 将 H10301_BF.zip 从仓库下载到本地(例如克隆整个仓库后复制该文件,或直接从文件页下载);
- 解压 ZIP,得到 112 MiB 的
H10301_BF.txt; - 将 Flipper Zero 的 SD 卡(或经 OTG 挂载)接入电脑,在 SD 卡上确保存在
rfidfuzzer目录; - 把
H10301_BF.txt复制到 SD 卡的rfidfuzzer文件夹下; - 将 SD 卡装回 Flipper Zero,在 RFID Fuzzer 应用中选择该 UID 列表文件,开始逐行模拟。
需要注意的实操细节:
- SD 卡容量:112 MiB 的明文文件要求 SD 卡留有足够剩余空间(Flipper 官方 SD 卡常见为 8~32 GiB,容量本身不成问题,但 FAT32 单文件 4 GiB 上限也远大于本文件);
- 文件不可改名:fuzzer 按
rfidfuzzer目录内文件名识别列表,改名或放到其他目录将导致找不到文件; - 顺序性依赖:该列表按 UID 数值升序生成,若你只关心前 N 个 UID,可直接截取文件前 N 行生成更小的列表(截取操作请在本地副本上进行,仓库内文件请勿改动)。
四、与 RFID Fuzzer 的协作方式:Uids list 模式
仓库中收录的官方旧版源码包含一个同类应用 Flipfrid(EM4100 / HIDProx 协议 fuzzer),其 README 对 fuzzer 类应用的通用工作模式描述可以帮我们理解rfidfuzzer目录约定的由来:
There are 4 modes: ...Uids list: Iterate over an input text file (one uid per line) and emulate one after the other.
即这类 fuzzer 的核心模式就是Uids list(UID 列表遍历):
- 输入:一个纯文本文件,每行一个 UID,由应用逐行读取;
- 行为:对每一行 UID 通过 125 kHz/相应射频前端做一次卡片模拟(emulate),交给面前的读卡器判定;
- 判定:读卡器接受(开门、蜂鸣、记录成功事件)即命中,否则进入下一行。
H10301_BF.txt 的格式(每行 8 个十六进制字符,无表头、无注释)与该模式"one uid per line"的要求完全一致。从源码结构看,这类应用的遍历逻辑(如 flipfrid.c 与自定义 UID 加载场景 flipfrid_scene_load_custom_uids.c)都是按行读取文本文件并依次回放到射频层,因此任何按"每行一个 UID"生成的列表文件都可以复用这套机制——这也是自行编写缩小版爆破列表(例如只爆破某个楼宇实际使用的 UID 前缀段)的可行路径。
说明:仓库当前收录的 source-OLDER 为历史版本源码,其中并未直接包含
rfidfuzzer应用本体;上文对 fuzzer 行为的描述以 flipfrid 的 README 与 H10301 文档的目录约定为依据,属于"从源码结构看"的推断,实际 UI 以你设备上安装的 RFID Fuzzer 版本为准。
五、运行预期:4 周是怎么来的
原文档给出的估计是 "around 4 weeks to finish"。基于文件规模可以对这一下界做量级校验(仅作数量级推算,具体速率以实际设备为准):
- 一轮全量 = 16,777,216 次 UID 模拟;
- 若每次"模拟—读卡器判定"周期为 T 秒,则总时长 = 16,777,216 × T;
- 反解作者给出的 4 周(3,456,000 秒):T ≈ 0.206 秒。
也就是说,只要单次 UID 尝试的端到端周期稳定在约 0.2 秒(含发射、等待读卡器响应、翻页开销),整个空间约 4 周遍历完毕。这个数字对使用者有两个实际意义:
- 它是可预测的:因为列表是升序全枚举,跑到第 X 行即已覆盖
[000000, X]区间,中断后重新加载文件可从断点附近的 UID 继续(需手动截取文件); - 它是可以缩小的:如果目标标签的 UID 前缀已知(例如通过一次成功的读卡记录拿到前 1~2 字节),把 16,777,216 行缩减到 65,536 行甚至更少,全量时间从"周"降到"小时/分钟"级——这也是作者将其定位为 testing 工具的原因。
六、仓库内相关资源与延伸阅读
- RFID/ReadMe.md:该仓库 RFID 板块的入口说明,主题同为 RFID 探索(含 Paxton 标签拷贝的参考资料),H10301 目录与其并列;
- Applications/Official/source-OLDER/grnch/flipfrid/README.md 及源码:EM4100/HIDProx fuzzer 的协议细节(EM4100 为 1 字节 customer id + 4 字节 card id;HIDProx 为 2 字节 customer id + 3 字节 card id)与四种工作模式说明;
- CONTRIBUTING.md、CODE_OF_CONDUCT.md:贡献与社区规范(与本文技术主题无直接关系,列出仅供检索)。
七、重要限制与合规提示
- 适用前提:本资源面向 HID iClass H10301 标签的 24 bit UID 空间;对其他协议(EM4100、HIDProx 125 kHz 卡、HID 13.56 MHz Prox II 的 32/64 bit 变体)UID 长度不同,该列表不能直接复用,需要按相应协议空间重新生成;
- 作者定位:原文档明确写有 "More for fun and testing than actual use",即设计目标是功能测试与防御评估(如测试读卡器的锁定策略);
- 法律边界:对不属于你的门禁系统执行 UID 穷举在多数司法辖区构成未授权访问行为,本文仅说明该开源资源的原理与用法,实操请限于自有设备与授权测试环境。
附:文件内容自检脚本
以下 Python 片段可用于在任何环境(本机或 SD 卡读取后)验证H10301_BF.txt的完整性:确认行数为 2^24、首行000000、末行FFFFFF、每行 8 个十六进制字符:
EXPECTED = 16 ** 6 # 2^24 with open("H10301_BF.txt", "r", encoding="ascii") as f: first = f.readline().strip() assert first == "000000", first count, prev = 0, -1 for line in f: line = line.strip() assert len(line) == 8, line val = int(line, 16) assert 0 <= val <= 0xFFFFFF, line assert val == prev + 1, f"sequence broken at {line}" prev = val count += 1 assert count == EXPECTED - 1, (count, EXPECTED) # 首行已单独读取 print("OK: complete, gap-free enumeration 000000..FFFFFF")输出OK即可确认你手中的文件与仓库版本一致、无截断无损坏,可以安全投入 RFID Fuzzer 使用。
【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考