
Flipper Zero Unleashed 固件125 kHz RAW RFID 数据读取完整指南【免费下载链接】unleashed-firmwareFlipper Zero Unleashed Firmware项目地址: https://gitcode.com/GitHub_Trending/un/unleashed-firmwareFlipper Zero Unleashed 固件为 125 kHz 低频 RFID 卡提供了一项类似录音机的 RAW 原始数据读取功能它不依赖任何预设协议解码而是把卡片回应的每一个电平跳变时长原样记录下来适合捕获无法被内置协议库识别的未知卡片。本文以 documentation/LFRFIDRaw.md 为核心结合 Unleashed 仓库中的源码实现完整讲解开启 Debug 模式、RAW 数据读取操作流程、.raw文件在 microSD 卡上的存储格式与文件结构、底层采集原理以及使用raw_analyze命令离线分析原始数据的实战方法。一、为什么需要 RAW RFID 数据读取常规的125 kHz RFID读取流程是按协议解码Flipper Zero 采集信号后直接用内置协议库EM4100、HID、Indala 等匹配并还原出卡号。这种方式对已知协议高效但对协议未知、私有化封装或非标准调制的卡片则无能为力。RAW RFID 读取则完全不同——它以原始脉冲序列的粒度记录数据保存的是卡片回应的原始波形信息而不是解码结果。正如官方文档 documentation/LFRFIDRaw.md 所述这个过程类似于录音机录制声音卡片信号被完整录下来后续既可以在设备上重放模拟Emulate也可以交给开发者分析以识别新协议。Unleashed 固件的这个功能同时覆盖两种常见调制方式ASK幅移键控通过载波幅度变化传递比特是多数低频 RFID 卡如 EM4100采用的方式PSK相移键控通过载波相位变化传递比特常见于 HID Prox 等卡片。每次读取都会自动生成对应两种调制方式的两份原始数据文件确保无论是哪种调制方式的卡片都能被完整记录。二、准备工作开启 Debug 模式RAW 读取功能属于调试类能力默认处于隐藏状态必须先通过系统设置开启进入Main Menu→Settings→System主菜单 → 设置 → 系统将Debug选项设置为ON。开启后applications/main/lfrfid 中与 RAW 相关的场景读取、模拟、命名、成功提示等才会在 125 kHz RFID 应用中呈现。此外该功能强依赖 microSD 卡进入 RAW 读取场景时应用会先检查存储状态若未插入 SD 卡会直接显示 No SD Card! 提示并阻止进入见 lfrfid_scene_raw_info.c因为原始数据文件必须写入 microSD 卡才能保存。三、操作步骤读取 RAW 数据Debug 模式开启后按以下步骤完成一次 RAW 读取进入Main Menu→125 kHz RFID低频 RFID应用选择Extra Actions附加操作在子菜单中选择Read RAW RFID data读取 RAW RFID 数据——对应的菜单项定义在 lfrfid_scene_extra_actions.c为原始数据文件命名命名校验逻辑位于 lfrfid_scene_raw_name.c同一文件名会同时用于 ASK 与 PSK 两份文件阅读读取说明后按OK。说明界面会明确提示将卡片贴近 Flipper、按 OK、等待数据读取完成将卡片贴近 Flipper Zero背面RFID 天线位置对应源码中 targets/f7/furi_hal/furi_hal_rfid.c 的天线引脚配置读取结束后按OK完成。读取过程中的实际行为可从源码确认场景先以ASK 模式读取固定持续5 秒RAW_READ_TIME_MS宏见 lfrfid_scene_raw_read.c界面会提示 Dont move for 5 sec.ASK 读取结束后自动切换为PSK 模式再读取 5 秒界面提示同步切换为 Reading PSK见 lfrfid_scene_raw_read.c读取期间设备 LED 会以青色闪烁ASK 阶段和黄色闪烁PSK 阶段若 SD 卡写入失败或数据溢出会触发错误提示与红色 LED 告警lfrfid_scene_raw_read.c全部完成后进入成功提示场景lfrfid_scene_raw_success.c。因此一次完整的 RAW 读取需要约 10 秒两个 5 秒阶段期间请保持卡片紧贴设备背面不要移动以获得干净稳定的原始波形。四、读取结果microSD 卡上的两份 RAW 文件读取完成后microSD 卡的lfrfid文件夹下会生成两个文件扩展名定义见 lfrfid_i.h/ext/lfrfid/文件名.ask.raw # ASK 调制原始数据 /ext/lfrfid/文件名.psk.raw # PSK 调制原始数据其中EXT_PATH(lfrfid)对应设备外部存储microSD 卡根目录下的lfrfid目录两份文件共享用户在第 3 步输入的文件名。lfrfid目录同时也是常规低频 RFID 密钥文件.rfid格式说明见 documentation/file_formats/LfRfidFileFormat.md的存放目录。拿到这两份文件后就可以将文件连同卡片照片一起提交到仓库的 GitHub Issues交由开发者分析。对于需要他人分析协议的情况RAW 文件保留的完整波形信息远比单纯一个卡号更有价值——这正是文档中建议分享数据文件和卡片照片的原因。五、RAW 文件的二进制结构与底层原理.raw文件不是简单的文本文件而是包含文件头与压缩脉冲数据的二进制格式。其读写实现位于 lib/lfrfid/lfrfid_raw_file.c对外接口定义在 lib/lfrfid/lfrfid_raw_file.h。5.1 文件头Header文件起始处是一个固定大小的结构体LFRFIDRawFileHeader见 lfrfid_raw_file.c包含 5 个字段字段类型含义magicuint32魔数0x4C464952ASCII LFIR用于识别合法 RAW 文件versionuint32格式版本当前为1LFRFID_RAW_FILE_VERSIONfrequencyfloat载波频率Hz如 125 kHz 读写时由furi_hal_rfid_tim_read_start设置duty_cyclefloat载波占空比max_buffer_sizeuint32单块数据最大缓冲字节数读取文件时lfrfid_raw_file_read_header固件会校验magic与version不匹配即判定为无效文件。5.2 脉冲对数据与 Varint 压缩文件头之后是一系列时长 脉宽脉冲对数据。原始信号中的每一个电平跳变都被记录为一个二元组duration时长当前电平状态的持续时间由定时器捕获单元计数pulse脉冲与上一个跳变之间的脉宽间隔。这两类数值通过 lib/lfrfid/tools/varint_pair.c 中的Varint 可变长整数编码打包压缩后写入文件以此显著减小原始数据的体积。写入时每对数据打包为最多 10 字节VARINT_PAIR_SIZE当一组跳变间隔凑齐后即写出varint_pair_pack。文件块的写入格式为先写一个size_t记录本块字节数再写块数据见 lfrfid_raw_file.c。5.3 采集流水线一次 RAW 读取在固件内部是一条完整的 DMA 采集流水线核心实现在 lib/lfrfid/lfrfid_raw_worker.c 的lfrfid_raw_read_worker_thread打开文件并写入文件头调用furi_hal_rfid_tim_read_start(freq, duty_cycle)启动载波——在 targets/f7/furi_hal/furi_hal_rfid.c 中通过 TIM 定时器 PWM 输出产生 125 kHz 激励信号延时 1500 ms 稳定检测器调用furi_hal_rfid_tim_read_capture_start启动输入捕获定时器的捕获通道在每个电平跳变时记录计数值并通过 DMA 中断回调furi_hal_rfid.c把level/duration对回调给采集线程采集线程把脉冲对经varint_pair_pack打包后放入流缓冲buffer_stream再落盘写入文件lfrfid_raw_worker.c5 秒计时结束应用层定时器后由事件标志通知线程停止。这套设计把高频硬件中断处理与相对较慢的 SD 卡写入解耦中断只负责把脉冲对塞进缓冲写入由独立线程消费从而避免信号丢失。如果缓冲消费不及时产生溢出overrun固件会通过回调上报LFRFIDWorkerReadRawOverrun应用层则显示读取错误提示。5.4 模拟Emulate回放RAW 文件同样支持回放模拟lfrfid_raw_worker_start_emulate启动的模拟线程读取文件头后逐对读出 pulse/duration转换为定时器捕获/比较寄存器值数值除以 8 并减 1 以适配定时器分频见 lfrfid_raw_worker.c通过 DMA 驱动天线按原始波形重放从而在不修改任何协议逻辑的情况下克隆播放未知卡片的信号。文件读完后会自动回卷pass_end标志实现循环模拟。六、进阶用 raw_analyze 离线分析 RAW 数据除图形界面外Unleashed 固件还通过 CLI 提供了 RAW 数据分析命令对协议开发尤其有用。在 Flipper 的 CLI 中输入rfid raw_analyze filename命令用法说明见 lfrfid_cli.c实现位于 lfrfid_cli.c 的lfrfid_cli_raw_analyze打开指定.raw文件并校验文件头lfrfid_raw_file_open_readlfrfid_raw_file_read_header循环调用lfrfid_raw_file_read_pair逐对读取时长与脉宽同时把脉冲序列喂给协议解码器protocol_dict_decoders_start尝试自动识别匹配的协议在 CLI 输出原始数据并给出解码结果辅助开发者判断卡片协议或调试新协议。如果你在开发自定义协议可以先用 RAW 模式录制一段卡片信号再用raw_analyze观察波形与解码匹配情况实现录制 → 分析 → 编码的闭环。七、常见问题与注意事项未找到 RAW RFID 菜单请确认 Debug 模式已开启Settings → System → Debug ON该功能默认隐藏。提示 No SD Card!RAW 文件必须写入 microSD 卡请插入并格式化 SD 卡后重试。读取时保持卡片稳定5 秒 ASK 5 秒 PSK 共约 10 秒期间移动卡片会造成波形抖动影响后续分析与模拟效果。读取报错RAW Reading error多由 SD 卡写入问题或缓冲溢出overrun引起可尝试更换高速 SD 卡或减少同时运行的后台任务。文件打不开/Invalid header确认文件是固件生成的.raw文件且未被破坏文件头含魔数与版本校验手动编辑过的文件会校验失败。关于用途边界RAW 数据可用于分析、学习与合法设备的调试备份请在遵守当地法律法规、并获得设备所有者授权的前提下使用相关功能。八、延伸阅读documentation/LFRFIDRaw.md —— 官方 RAW RFID 读取说明本文主题来源documentation/file_formats/LfRfidFileFormat.md ——.rfid密钥文件格式与支持的协议类型列表lib/lfrfid/lfrfid_raw_file.h —— RAW 文件读写 API 定义lib/lfrfid/lfrfid_raw_worker.c —— 读取/模拟工作线程核心实现applications/main/lfrfid —— 125 kHz RFID 应用场景源码targets/f7/furi_hal/furi_hal_rfid.c —— 125 kHz 载波生成与输入捕获的硬件抽象层实现。【免费下载链接】unleashed-firmwareFlipper Zero Unleashed Firmware项目地址: https://gitcode.com/GitHub_Trending/un/unleashed-firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考