ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Proxmark3 独立模式实战:HF_14ASNIFF ISO14443A 被动嗅探与 SPIFFS 闪存记录

Proxmark3 独立模式实战:HF_14ASNIFF ISO14443A 被动嗅探与 SPIFFS 闪存记录 Proxmark3 独立模式实战HF_14ASNIFF ISO14443A 被动嗅探与 SPIFFS 闪存记录【免费下载链接】proxmark3Iceman Fork - Proxmark3项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3HF_14ASNIFF 是 Proxmark3 的一个 Standalone独立模式设备无需连接主机即可在 13.56 MHz 频段被动嗅探 ISO14443A 读写器与标签之间的双向通信并把带时间戳的 trace 数据持久化到 RDV4 硬件的 SPIFFS 闪存通用硬件则缓存在 RAM 供事后导出。读完本文你将掌握该模式的完整工作流程天线部署、LED/按键交互、状态机、底层SniffIso14443a嗅探实现与 DMA/调制解调细节、trace 文件的导出与trace list分析方法以及编译烧录的完整命令链。一、模式定位为什么需要脱离主机的 14A 嗅探器文档 hf_14asniff.md 对模式用途的概括是将 Proxmark3 天线置于合法读写器与卡片之间即可捕获完整通信——包括认证握手、数据读写帧和整体协议行为。其典型应用场景有三类协议逆向工程理解目标读写器如何与卡片交互认证行为捕获记录认证过程供离线分析系统文档化采集真实流量归档专有协议的时序与帧格式。与常规hf 14a sniff命令不同Standalone 模式的价值在于设备断开 USB 后仍可长时间工作RDV4 有电池供电把结果直接写进片上闪存事后插回主机取回即可。源码注释hf_14asniff.c 头部还点明了它与近亲模式hf_bog的差异hf_bog只记录 ULC/NTAG/ULEV1 的认证帧而hf_14asniff记录全部 ISO14443A 帧。二、硬件要求RDV4 闪存模式 vs 通用硬件 RAM 模式官方文档标注Hardware: RDV4 (flash and battery recommended)但源码揭示了更完整的硬件分层RDV4WITH_FLASH编译帧先缓存在 RAMBigBuf trace buffer停止嗅探后写入 SPIFFS 分区中的hf_14asniff.trace文件掉电不丢通用硬件没有外部闪存trace 只能留在 BigBuf 中等 USB/蓝牙连接后由主机 dump 出来hf_14asniff.c 中#ifndef WITH_FLASH分支只打印[!] Trace length (bytes) N供后续导出。构建系统里该模式的描述也印证了这一点Makefile.hal 中登记为14a sniff to flashmem (rdv4) or ram并列入STANDALONE_MODES总表。注意 Standalone 的通用规则同一固件镜像一次只能编译一个独立模式除非使用 Dankarmulti 多模式加载器参见 Standalone readme。三、操作流程从部署到停止保存按文档给出的操作序列What/Why/How 部分完整继承部署天线将 Proxmark3 天线夹在读写器与卡片之间被动旁路不注入能量捕获双向帧设备同时捕获 reader→tag 与 tag→reader 两类帧并带时间戳缓冲与落盘帧先缓冲在 RAM按键触发时 flush 到闪存取回分析重新连接客户端把 trace 文件从闪存 dump 到 PC 并分析。按键与退出控制动作效果短按停止嗅探、把 trace 保存到闪存、退出 standalone 模式USB 命令任意客户端命令经 USB 数据到达会打破 standalone 模式源码中 USB 退出依赖data_available()检查这是所有 standalone 模式的约定见 readme.md 的骨架示例主循环中if (data_available()) break;。hf_14asniff的嗅探主循环同样每 12000 次循环检查一次data_available()收到 USB 数据即跳出。LED 指示含义LED含义LED A (1)嗅探进行中主循环常态点亮处理数据瞬间熄灭LED B (2)检测到 tag 侧命令/响应reader 发送结束时熄灭LED C (3)检测到 reader 侧命令tag 发送结束时熄灭LED D (4)闪存卸载/同步中正常情况 100 ms对照源码LED 行为与 SniffIso14443a 一一对应主循环开头LED_A_ON()、读数据时LED_A_OFF()reader→tag 帧解出时LED_C_ON()、tag 解帧完成后LED_C_OFF()tag→reader 帧解出时LED_B_ON()、reader 帧完成后LED_B_OFF()。状态机文档给出的 mermaid 状态图完整保留了模式的宏观行为四、源码剖析RunMod 的保存链路hf_14asniff.c 的实现很短其RunMod()就是整个模式的main调用链如下StandAloneMode()置位 standalone 状态禁止常规命令分发#ifdef WITH_FLASH下调用rdv40_spiffs_lazy_mount()定义于 spiffs.h挂载 RDV4 闪存上的 SPIFFS 文件系统SniffIso14443a(0)参数0表示不启用触发条件bit0首个 tag 应答触发、bit1首个 7-bit 请求触发见下节阻塞直到按键/USB 退出停止后读取BigBuf_get_traceLen()无闪存RAM 模式仅打印 trace 长度有闪存exists_in_spiffs(hf_14asniff.trace)判定文件是否存在——不存在则rdv40_spiffs_write()新建写入已存在则rdv40_spiffs_append()追加使用RDV40_SPIFFS_SAFETY_SAFE安全等级即写完校验/提交LED_D_ON()→rdv40_spiffs_lazy_unmount()→LED_D_OFF()对应状态机中的 unmount 阶段DownloadTraceInstructions()通过Dbprintf把取回 trace 的三条命令直接打到串口/USB方便现场操作人员照抄。ModInfo()则输出模式标识串HF 14A SNIFF, a ISO14443a sniffer with storing in flashmem——客户端执行hw status时靠它识别设备上烧的是哪个 standalone 模式。源码头部注释还列出了几条重要行为约定文档未展开、但实测必须知道进入 standalone 模式时 RAM trace buffer 会被清空闪存中旧数据保留除非显式删除trace buffer 写满会自动终止嗅探并保存到闪存时间戳与常规嗅探模式一样超过 5 分 16 秒32-bit 时间计数溢出周期后会回绕但 buffer 是顺序追加的帧序仍正确。五、嗅探底层SniffIso14443a 的双向解码管线所有帧捕获工作都在 iso14443a.c 的 SniffIso14443aRAM 函数从hf 14a sniff客户端命令、本模式、hf_unisniff、secc等多处复用声明见 iso14443a.h中完成关键点FPGA 配置iso14443a_setup(FPGA_HF_ISO14443A_SNIFFER)加载 ISO14443A 嗅探器比特流FPGA 以 SSCDMA 方式把原始基带采样流灌进双缓冲 DMA ringFpgaSetupSscRxDmaRepeat双向解码ISO14443A 中 reader→tag 用MillerSubcarrier编码tag→reader 用Manchester 编码因此主循环用两个解码器分别处理——MillerDecoding()解 reader 命令此时 tag 侧静默ManchesterDecoding()解 tag 响应此时 reader 侧静默并用ReaderIsActive/TagIsActive状态互斥避免假触发触发参数parambit0 首个 tag 应答时开始记录bit1 首个 7-bit reader 请求时开始记录hf_14asniff传0即上电即记录triggered !(param 0x03)bit2 是secc模式用的 HID Config Card jam 钩子本模式不启用落盘单元每解出一个完整帧调用LogTrace(...)写入 BigBuf trace buffer时间戳换算为载波周期* 16再减去DELAY_READER_AIR2ARM_AS_SNIFFER/DELAY_TAG_AIR2ARM_AS_SNIFFER补偿量LogTrace返回 false 即 buffer 写满主循环break——这就是buffer 满自动保存退出的实现健壮性处理MCU 追不上 DMA 写指针时会跳过落后段overrun_skips、DMA 双缓冲耗尽时重挂并丢弃在途帧dma_stalls退出时若发生过丢帧会打印[!] sniffer dropped frames及两类计数退出条件BUTTON_PRESS()短按或周期性data_available()USB 命令随后FpgaDisableTracing()、switch_off()。时间戳单位与trace命令族一致ISO14443A 的 Start/End 列单位是载波周期1/13.56 MHz详见 trace_notes.md。六、取回并分析 trace 数据嗅探结束后重新连接客户端。文档给出的取数命令为mem spiffs dump -s hf_14asniff.trace -d hf_14asniff.trace trace load -f hf_14asniff.trace hf 14a list固件自身在退出时打印的三条提示DownloadTraceInstructions注意其文件名参数固定为 hf_14asniff.c 中的HF_14ASNIFF_LOGFILE hf_14asniff.trace1. mem spiffs dump -s hf_14asniff.trace -d hf_14asniff.trace 2. trace load -f hf_14asniff.trace 3. trace list -t 14a -1两条提示的差别仅在第 3 步hf 14a list与trace list -t 14a -1是等价的列表输出后者额外显示 MIFARE Classic 解码场景可用trace list -t mf -1。-1表示从 buffer 中直接列出而不再向设备请求数据。删除闪存中残留的 trace 用mem spiffs remove -f hf_14asniff.tracetrace 文件二进制格式hf_14asniff.trace就是 Proxmark3 标准动态 tracelog 格式trace_notes.md/* Traceformat: 32 bits timestamp (little endian) 16 bits duration (little endian) 15 bits data length (little endian) (0x7FFF) 1 bit isResponse (0reader to tag, 1tag to reader) data length Bytes data x Bytes parity, where x ceil(data length/8) */由于模式采用 write/append 策略多次嗅探会话的帧会顺序追加在同一文件里分析时按时间戳区分会话即可。若需深入单帧语义可用trace list -t 14a -x导出文本后按 trace_notes.md 的方法转成 pcapng 交给 Wireshark 做 ISO14443A 深度解析。七、编译与烧录完整继承文档的编译流程在仓库根目录执行make clean make STANDALONEHF_14ASNIFF -j ./pm3-flash-fullimageSTANDALONEHF_14ASNIFF会经由 Makefile.hal 注入WITH_STANDALONE_HF_14ASNIFF宏Makefile.inc 据此把hf_14asniff.c编入镜像pm3-flash-fullimage烧写的是含 bootrom 的完整镜像。烧录后hw status应显示ModInfo的标识串。八、与其他嗅探/独立模式的关系14B SnifferISO14443B 版本的被动嗅探到闪存15693 SnifferISO15693 嗅探器Universal Sniffer多协议14A/14B/15/iCLASS嗅探器运行时选择协议其 14A 分支同样调用SniffIso14443a(0)BogitoRun Auth Sniffer14A 嗅探器但只捕获 ULC/ULEV1/NTAG 认证帧适合针对性记录Trace Notestracelog 格式、trace命令选项与 Wireshark 转换的完整说明Standalone 模式总索引HF_14ASNIFF 在 HF 独立模式表中的登记与开发指南。小结HF_14ASNIFF 是把 Proxmark3 变成独立录音笔的典型范例RunMod用约 100 行代码把通用的SniffIso14443a嗅探引擎与 SPIFFS 落盘逻辑缝合起来——按键停止、write/append 保存、LED D 指示 unmount、退出前打印取数命令。理解它的实现DMA 采样 → Miller/Manchester 双向解码 →LogTrace环形 buffer → 闪存持久化后即可把它作为模板派生出其他协议的 standalone 嗅探模式并配合trace list/pcapng 流程完成从现场采集到离线分析的全链路工作。【免费下载链接】proxmark3Iceman Fork - Proxmark3项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表