OOK 是什么:从遥控器波形到 2262/1527 解码
前言
按下遥控器按钮的那一刻,人听到的是“滴”一声,接收端看到的却是一串载波的开和关。信号强的时候是一段连续的高频振荡,信号弱的时候是一条几乎平坦的线。把这串开关记录下来,再按脉宽分组,就能读出一个地址、一个按键值,或者一段状态码。
这类信号里最常见的调制方式叫 OOK。它简单到可以用一个三极管和一个声表谐振器做出来,也普遍到门禁、车库门、卷帘门、无线门铃、温湿度传感器和部分汽车钥匙里都能见到。
OOK 是什么
OOK 是 On-Off Keying 的缩写,中文常译成开关键控。它属于 ASK 的一种极端形式:载波要么以固定幅度发射,要么完全关闭。用数学写法表示就是:
其中 $f_c$ 是载波频率,$A$ 是幅度,$m(t)$ 是要发送的二进制序列。$m(t)=1$ 时载波存在,$m(t)=0$ 时载波消失。接收端只需要检测“有没有载波”,不需要判断相位,也不需要复杂的星座图。
这带来几个直接结果。
第一,发射电路便宜。一个普通的 433 MHz 遥控器不需要复杂的调制器,只要控制振荡器起振和停振。
第二,接收电路也便宜。超外差或超再生接收模块把高频信号变成包络,再交给单片机判断高低电平。
第三,数据率不高。载波启停需要时间,OOK 通常只适合几十到几千比特每秒的短帧,不适合视频或大文件。
第四,它没有加密和认证。OOK 只负责把 0 和 1 送过去,谁收到都能录下来。很多遥控器把地址和数据直接放在帧里,安全性依赖编码芯片本身的固定码,而不是密码学。
遥控器里的 OOK 长什么样
URH 这类软件把射频信号解调后,会显示成一长串 0 和 1。很多人第一次看到会以为一个 1 就是一个比特,其实在 2262、1527 这类编码芯片里,1 和 0 还表示不同的脉宽组合。
以 2262/2260 为例,一个完整的帧通常由 25 段高电平脉冲组成,前 24 段承载 12 个三态位,最后一段是同步位。每个三态位用两段脉冲的相对宽度表示,常见的静态码字符是 0、F、1。把相邻两段的宽窄关系两两分组,再映射回字符,就得到类似 010F00001000 的静态码。
1527/2242 的结构不同。它通常包含 20 位地址和 4 位数据,地址可以写成 10 个四态字符,数据是 4 个二进制位。一个完整的静态码看起来像 H0FF1FHFHH 1000,前面是地址,后面是按键数据。不同厂家可能交换高低位顺序,所以同一个遥控器在不同工具里可能显示成镜像的字符串。
这也是为什么只看“0 和 1 的长度”很容易解错。真正要判断的是脉冲段的相对宽度、帧是否完整、同步位在哪里,以及地址和数据各占多少位。
OOK 能做什么
对做硬件安全和射频分析的人来说,OOK 本身不是攻击手段,它是一个观察入口。常见用途有几类。
第一类是解码。把 URH 或逻辑分析仪抓到的 0/1 波形还原成静态码,知道这个遥控器发了什么地址、什么按键。
第二类是对比。同一个遥控器在不同时间、不同距离、不同电量下抓到的波形可能有个别位翻转。把两次静态码放在一起按位比较,就能看出是噪声、按键变化,还是地址位被误判。
第三类是格式转换。1527 的地址经常需要在四位拨码表示和两位二进制表示之间转换,2262 的静态码也需要和波形表示互相核对。手工换算容易错位,工具可以把这一步固定下来。
第四类是协议判断。看到 25 段脉冲、三态字符和同步位,可以初步判断是 2262 家族;看到 20 位地址加 4 位数据,则更像 1527/2242。判断错了,后面的地址和数据都会错,所以工具要给出可核对的中间结果,而不是只丢一个结论。
第五类是安全评估。固定码 OOK 遥控器通常没有防重放机制,抓到完整帧后可以在授权范围内做重放测试。这个能力必须建立在设备所有者书面授权的基础上。它可以说明“这个门禁是否只认固定码”,但不能成为未授权开启别人设备的手段。
一个 macOS 风格的分析工具
我把这些步骤做成了一个本地运行的网页工具,叫 OOK Studio。它是单文件 HTML,不依赖后端,不上传输入,也不保存历史。界面按 macOS 的窗口、侧边栏和分段控件组织,适合在抓包之后快速整理数据。
图一:OOK Studio 的概览页。左侧是工作台导航,右侧是波形示意和输入输出说明。
工具目前有四块:
- 解码:粘贴 URH 的 0/1 波形,选择 2262/2260 或 1527/2242,输出静态地址码、数据码和脉冲段数量。
- 转换:在 1527 的 10 位四态地址和 20 位二进制地址之间转换。
- 对比:把两个静态码按位比较,相同显示短横,不同显示尖号,长度差异显示加号。
- 速查:把 2262 和 1527 的码位、地址表示和同步位放在一张表里,避免把两种协议混在一起。
工具入口:OOK Studio
使用时先把 URH 解调得到的 0/1 字符串粘进解码页,点“填入示例”可以先看一组完整数据。2262 示例会输出 010F00001000,1527 示例会输出地址 H0FF1FHFHH 和数据 1000。如果提示脉冲段不是 25 段,先回头检查抓包是否截断,或者 URH 是否把噪声也解成了高电平。
读结果时要守住的边界
OOK 不是加密协议。它没有身份认证,也没有完整性校验,很多设备连滚动码都没有。抓到一帧完整码,就可能重放出同样的动作。这个事实对防守方和测试方都重要。
对防守方来说,看到固定码遥控器,应该把它当成“只解决了便利性,没有解决身份”的设备。门禁、车库门、卷帘门这类场景,能换滚动码或双向认证就换;不能换的,至少要有视频、日志、人员授权和物理防护作为补充。
对测试方来说,抓包、解码、重放都必须在授权范围内进行。工具本身只做字符串处理,不发射信号,也不包含自动枚举。真正发射信号需要另外的硬件和明确的测试计划,风险和合规责任都不在浏览器里。
对写文章的人来说,也没必要把 OOK 说成“黑客神器”。它只是一个很朴素的调制方式,真正决定风险的是设备有没有认证、有没有滚动码、有没有把固定码当成秘密。把这三件事讲清楚,比展示一个能开门的视频更有用。
最后
OOK 的入门门槛低,正好适合用来理解“波形、脉宽、编码、协议”这四层关系。先把一段 0/1 读成 25 段脉冲,再把脉冲读成地址和数据,最后把地址和数据放回设备场景里看,很多看似神秘的射频操作就会变得可解释。
工具地址是 OOK Studio,源码和说明都在同一页。下一步如果要做更完整的分析,可以接入逻辑分析仪的采样文件,或者把 2262、1527 的时序参数做成可调的波形生成器;这两件事都需要先在真实设备上校准,不能只靠字符串猜。




