Flipper Zero 无线信号文件格式详解:SubGhz 文件系统全解析

Flipper Zero 无线信号文件格式详解:SubGhz 文件系统全解析

flipperzero-firmware Flipper Zero firmware source code flipperzero-firmware 项目地址: https://gitcode.com/gh_mirrors/fl/flipperzero-firmware

前言

Flipper Zero 作为一款多功能安全工具,其 SubGhz 子系统提供了强大的无线信号处理能力。本文将深入解析 Flipper Zero 固件中使用的无线信号文件格式,帮助开发者与高级用户更好地理解和利用这一功能。

一、.sub 文件基础结构

.sub 文件是 Flipper Zero 存储无线信号的核心格式,采用 Flipper 文件格式标准。这类文件可以存储两种类型的数据:

  1. 协议键值数据:包含特定协议的信号信息
  2. 原始信号数据:未经协议解码的原始信号

每个 .sub 文件都由三个关键部分组成:

  1. 文件头:包含文件类型、版本和频率信息
  2. 预设信息:定义无线电收发器的配置参数
  3. 协议数据:存储具体的协议信息或原始信号数据

二、文件头详解

文件头是每个 .sub 文件的必备部分,其结构如下:

| 字段名 | 类型 | 说明 | |--------------|--------|--------------------------------------| | Filetype | 字符串 | 必须为 "Flipper SubGhz Key File" | | Version | 无符号整数 | 当前版本为 1 | | Frequency | 无符号整数 | 信号频率,以赫兹(Hz)为单位 |

三、预设系统深度解析

预设系统是 Flipper Zero 无线功能的核心之一,它定义了无线电收发器的各项参数:

1. 预设字段说明

| 字段名 | 说明 | |----------------------|----------------------------------------------------------------------| | Preset | 预设名称,标准预设或自定义预设(FuriHalSubGhzPresetCustom) | | Custom_preset_module | 收发器模块标识,Flipper Zero 使用 CC1101 | | Custom_preset_data | 收发器配置数据,十六进制编码 |

2. 内置预设类型

Flipper Zero 固件提供了四种标准预设:

  1. OOK270Async:开关键控,270kHz 带宽
  2. OOK650Async:开关键控,650kHz 带宽
  3. 2FSKDev238Async:2FSK调制,2kHz 频偏
  4. 2FSKDev476Async:2FSK调制,47kHz 频偏

3. 收发器配置数据详解

自定义预设的核心是 CC1101 收发器的寄存器配置,其格式为十六进制字符串:

XX YY XX YY .. 00 00 ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ
  • XX:寄存器地址
  • YY:寄存器值
  • 00 00:寄存器块结束标记
  • ZZ:8字节功率放大器(PA)表

技术提示:配置数据直接影响信号收发质量,建议参考 CC1101 数据手册进行精确配置。

四、数据部分格式解析

.sub 文件的数据部分有两种主要格式:

1. 键值文件格式

包含特定协议的解码数据,以 Princeton 协议为例:

Protocol: Princeton
Bit: 24
Key: 00 00 00 00 00 95 D5 D4
TE: 400

关键字段说明:

| 字段 | 说明 | |------|--------------------------| | Bit | 有效载荷长度(位) | | Key | 协议有效载荷数据 | | TE | 量化间隔(微秒) |

2. 原始信号文件格式

存储未经解码的原始信号时序数据:

Protocol: RAW
RAW_Data: 29262 361 -68 2635 -66 24113 -66 11 ...

重要特性:

  • 数值单位为微秒
  • 必须非零且以正数开始
  • 数值符号交替变化
  • 每行最多512个值

技术提示:传输长RAW信号时需注意SD卡性能,低性能卡可能导致信号传输中断。

3. 二进制原始信号格式(BinRAW)

BinRAW 是 RAW 的优化版本,特点包括:

  • 只记录有效重复时序
  • 恢复字节传输速率
  • 去除广播噪声
  • 可模拟几乎所有静态协议

典型结构:

Protocol: BinRAW
Bit: 1572
TE: 597
Bit_RAW: 260
Data_RAW: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F 4A B5 55 4C B3 52 AC D5 2D 53 52 AD 4A D5 35 00

五、配置文件系统

1. Keeloq 制造商密钥文件

路径:/ext/subghz/assets/keeloq_mfcodes_user

格式示例:

AABBCCDDEEFFAABB:1:Test1
AABBCCDDEEFFAABB:1:Test2

密钥格式说明:

  • 前16字符:64位制造商密钥
  • 数字:加密方法(0-4)
  • 最后部分:密钥名称(不超过64字符)

2. 用户设置文件

路径:/ext/subghz/assets/setting_user

主要功能:

  • 添加自定义频率
  • 配置跳频频率
  • 定义自定义预设

关键配置项:

Add_standard_frequencies: true  # 是否加载标准频率
Default_frequency: 433920000    # 默认频率
Frequency: 300000000            # 添加接收频率
Hopper_frequency: 310000000     # 添加跳频频率

六、最佳实践建议

  1. 信号录制技巧

    • 录制时间应足够长以确保数据完整性
    • 复杂信号建议使用BinRAW格式
    • 简单协议信号可使用键值格式
  2. 性能优化

    • 避免过长的RAW数据序列
    • 使用高性能SD卡存储信号文件
    • 合理设置跳频频率数量
  3. 自定义配置

    • 修改配置前备份原始文件
    • 逐项测试自定义预设效果
    • 参考CC1101数据手册优化寄存器配置

结语

Flipper Zero 的 SubGhz 文件系统提供了高度灵活的无线信号处理能力。通过深入理解这些文件格式,用户可以充分发挥设备的无线功能,从简单的信号重放到复杂的协议分析。无论是安全研究人员还是无线电爱好者,掌握这些知识都将大大扩展Flipper Zero的应用场景。

flipperzero-firmware Flipper Zero firmware source code flipperzero-firmware 项目地址: https://gitcode.com/gh_mirrors/fl/flipperzero-firmware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姬忆慈Loveable

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值