
Flipper Zero 实战CAME 12 位车库门遥控码全量生成与 Sub-GHz 穷举破解指南【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper本文以 Sub-GHz/Garages/CAME_brute_force/README.md 为骨架结合仓库内两套 Python 生成脚本与全套预生成.sub文件系统讲解如何用 Flipper Zero 对采用CAME 12 位固定码433.92 MHz / 868.35 MHz的车库门遥控器进行穷举。读完本文你将掌握12 位码空间4096 种组合的数学原理、CAMEbruteforcer脚本的波形编码实现、预生成分片文件的时间预算以及一套可在现场两分钟内定位正确遥控码的先粗后细二分逼近流程并学会借助 Sub-GHz 播放列表实现全自动连续发射。背景为什么 CAME 12 位码只需要穷举而不是破解CAME 是一家常见的欧洲车库门 / 卷帘门遥控器厂商。其大量老款产品使用固定码Fixed Code机制遥控器按下按键时发送的是由拨码开关DIP Switch设定的一个固定二进制地址接收器不做滚动码校验。当地址长度只有12 bit时理论上的地址空间为2^12 4096 种组合这正是本文整套方案的核心前提完整遍历全部 4096 个地址在时间上是完全可行的。对比现代滚动码rolling code遥控器动辄上亿的码空间12 位固定码几乎可以按顺序全部按一遍来找到正确的那个。需要明确的前提与限制该方案只适用于CAME 12 位固定码遥控器不适用于滚动码如 CAME 的TOP/TWIN等滚动码产品也不适用于地址位长不同的遥控器穷举攻击属于安全研究 / 测试自己设备的范畴请仅在获得授权的情况下使用。仓库内的核心资产一览整个方案由三部分组成全部位于仓库Sub-GHz/Garages/CAME_brute_force/目录资产路径说明433 MHz 生成脚本12Bit/433.92Mhz/CAMEbruteforcer433.py生成 433.92 MHz 全套.sub文件868 MHz 生成脚本12Bit/868.35Mhz/CAMEbruteforcer868.py生成 868.35 MHz 全套.sub文件全套预生成文件12Bit/433.92Mhz/与12Bit/868.35Mhz/下的100/、500/、1000/、2000/、4096/子目录已按不同粒度切分好的.sub文件开箱即用一键全量文件CAME_bruteforce_all.sub全部 4096 个码汇总在单个文件内播放列表subplaylist/CAME_12Bit_BF/433/ 与868/供 Sub-GHz Playlist 应用自动顺序播放的分组播放列表其中CAME_bruteforce_all.sub内含全部 4096 个键值组合完整跑完仅需不到 5 分钟原 README 实测约 287 秒后经优化缩短至约 4 分钟。若你只是想最终能把门打开直接用这一个文件即可若还想进一步定位到精确的遥控码则按后文的分片逼近流程操作。脚本原理把 12 位码翻译成 Flipper 能播放的 RAW 波形先看 433 MHz 版本的生成脚本 CAMEbruteforcer433.py868 MHz 版本逻辑完全相同仅频率不同逐段拆解它的工作原理。可调参数区# Script settings: split [100, 500, 1000, 2000, 4096] signal 250 repetition 3 n_bits 12split按多少码切一个文件。脚本会为 100、500、1000、2000、4096 五种粒度各生成一整组文件signal 250基础脉宽微秒CAME 协议的短脉冲单位repetition 3每条码重复发射 3 次接收器对单帧容忍度低重复发送提高命中率n_bits 12码长对应 12 位固定码。协议波形参数# Protocol settings: https://phreakerclub.com/447 combos range(0, pow(2, n_bits)) # 0 ~ 4095共 4096 个候选码 H 2*signal # 高电平500us代表码元宽 Pilot -36*signal # 引导脉冲 -9000us低电平 9ms transposition_table { 0: f-{signal} {H} , # bit 0: -250us / 500us 1: f-{H} {signal} , # bit 1: -500us / 250us } pilot_period f{Pilot} {signal} # 引导段: -9000us / 250us对应到协议层面每一帧先发一个约 9 ms 的引导低电平Pilot -36 × 250us -9000us每个码元用两种宽度相反的脉冲对表示逻辑0是短低 长高250us / 500us逻辑1是长低 短高500us / 250us——这是典型的Pulse-Width / Manchester 类 OOK 编码整帧引导 12 位码元整体重复repetition 3次再进入下一条码。码空间生成与文件切分for item in split: for key_dec in combos: key_bin f{key_dec:0{n_bits}b} # 十进制 → 12 位二进制字符串 key_str pilot_period for bit in key_bin: key_str transposition_table[bit] # 逐 bit 展开为 RAW 脉冲序列 key_str key_str * repetition if (key_dec % item) 0: filename fCAME_{item}_{int(key_dec / item):003}.sub os.makedirs(f{item}, exist_okTrue) # 目录自动创建 fulldir f{item}/{filename} with open(fulldir, w) as f: f.write(file_header) # 新文件写入头部 with open(fulldir, a) as f: f.write(RAW_Data: key_str \n) # 追加一条码关键点combos range(0, 2**12)即 04095十进制序号直接就是候选码的数值例如CAME_1000_001.sub对应 10001999 号每遇到key_dec % item 0就开启一个新文件后续码追加写入从而按指定条数切分目录由脚本自动创建os.makedirs(..., exist_okTrue)这是 README Changelog 中Folder created automatically的代码实现文件命名规则CAME_{item}_{index:003}.sub中:003表示索引用 3 位零填充保证排序正确。Flipper 认可的 RAW 文件头生成文件头部即 CAME_1000_000.sub 开头部分为Filetype: Flipper SubGhz RAW File Version: 1 Frequency: 433920000 Preset: FuriHalSubGhzPresetOok650Async Protocol: RAWFrequency: 433920000433.92 MHz868 MHz 脚本中为868350000即 868.35 MHzPreset: FuriHalSubGhzPresetOok650AsyncOOK 650kHz 带宽的异步发送预设是普通 Flipper 硬件发送 433MHz OOK 信号的标准选择Protocol: RAW以原始脉冲序列逐条播放而不是按某个内置协议库解码——这正是任意自定义波形都可发射的关键。文件体每一行是一条完整的码帧例如RAW_Data: -9000 250 -250 500 ...负数为低电平、正数为高电平、单位微秒对应上文引导 12 码元 × 3 重复的展开结果。安装与生成把脚本跑起来README 中标注在 Python 3.10.0 上测试通过。仓库内已经预置了两份脚本直接运行即可脚本会在当前目录自动创建 100/500/1000/2000/4096 五个子目录并写入全部文件# 433.92 MHz 版本 $ cd Sub-GHz/Garages/CAME_brute_force/12Bit/433.92Mhz $ python CAMEbruteforcer433.py # 868.35 MHz 版本 $ cd Sub-GHz/Garages/CAME_brute_force/12Bit/868.35Mhz $ python CAMEbruteforcer868.py生成结果以 433.92 MHz 为例与仓库预置目录一致12Bit/433.92Mhz/ ├── 100/ # 41 个文件每文件 100 条码4096 40×100 96 ├── 500/ # 9 个文件每文件 500 条码 ├── 1000/ # 5 个文件每文件 1000 条码 ├── 2000/ # 3 个文件每文件 2000 条码 └── 4096/ # 1 个文件全部 4096 条码若不想自己生成直接把仓库中对应的.sub文件含CAME_bruteforce_all.sub拷贝到 Flipper SD 卡subghz目录即可使用。若希望进一步细化粒度比如 50、10 条一文件可修改脚本顶部的split [...]列表后重新运行。现场实战分片逼近定位精确遥控码这是 README 的精华部分。由于所有 4096 个码顺序排列在编号连续的.sub文件中可以采用先粗后细、逐级二分的方式把最终命中码从 4096 个候选快速缩小到个位数。完整流程如下以 433 MHz 为例先用 1000 条/文件扫一遍。每个CAME_1000_*.sub约耗时 1 分钟。假设门在CAME_1000_001.sub即 1000~1999 号时打开说明正确码落在这个区间改用 500 条/文件的同区间。即运行500/目录中覆盖该区间的两个文件CAME_500_002.sub1000~1499与CAME_500_003.sub1500~1999。假设在CAME_500_003.sub打开区间缩小为 1500~1999改用 100 条/文件继续细化。此时需要运行 5 个文件覆盖 1500~19991500-1599、1600-1699、1700-1799、1800-1899、1900-1999每个文件约 5 秒一次即可定位到 100 码区间可选进一步精确定位。如果你确实需要知道唯一正确的遥控码用脚本生成更细的分片如 50、10 条一文件重复同样的二分流程直到落在单条码上。提示CAME_1000_001.sub这类文件名中第一个数字是每文件条数第二个是索引覆盖范围 索引 × 条数到(索引1) × 条数 - 1。时间预算分片粒度与耗时对照表README 给出了三种常用粒度的完整耗时参考如下测试环境为原作者的 Flipper 与固件2000 条 / 文件文件覆盖范围预计耗时00 ~ 1999约 2 分钟12000 ~ 3999约 2 分钟24000 ~ 4096约 5 秒1000 条 / 文件文件覆盖范围预计耗时00 ~ 999约 1 分钟11000 ~ 1999约 1 分钟22000 ~ 2999约 1 分钟33000 ~ 3999约 1 分钟44000 ~ 4096约 5 秒500 条 / 文件文件覆盖范围预计耗时00 ~ 499约 27 秒1500 ~ 999约 27 秒21000 ~ 1499约 27 秒31500 ~ 1999约 27 秒42000 ~ 2499约 27 秒52500 ~ 2999约 27 秒63000 ~ 3499约 27 秒73500 ~ 3999约 27 秒84000 ~ 4096约 5 秒可以算出CAME_bruteforce_all.sub4096 条总耗时约 45 分钟287 秒量级这正是 README 标题中一个文件 5 分钟开全部门说法的由来。此外README 的 Changelog 记录了2022-08-12 的优化脚本整体运行时间由原来更长缩短至约 4 分钟同时实现了目录自动创建——对应脚本中的os.makedirs(..., exist_okTrue)。进阶用 Sub-GHz 播放列表实现全自动连播手动在 Flipper 上一个文件一个文件地点发送既繁琐又容易漏按。仓库在 subplaylist/CAME_12Bit_BF/ 提供了配套的Sub-GHz Playlist播放列表让你把多组.sub文件串成一条自动播放链。播放列表文件内容形如以 subplaylist/CAME_12Bit_BF/433/CAME_433_500.txt 为例sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_000.sub sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_001.sub sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_002.sub sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_003.sub sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_004.sub sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_005.sub sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_006.sub sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_007.sub sub: /ext/subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/CAME_500_008.sub目录下同时提供了433/与868/两个频段、每种粒度100/500/1000/2000/4096各一份播放列表列表中的sub:行路径是SD 卡上的绝对路径/ext/subghz/...使用前请保证.sub文件也放置在 SD 卡对应目录例如subghz/Garages/CAME_brute_force/12Bit/433.92Mhz/500/该应用由 darmiel 开发可顺序播放 循环重复播放列表需放置在 SD 卡的subplaylist目录中注意官方文档里写的是playlist本仓库 README 特别说明已更新为subplaylist。使用播放列表后整个 4096 码空间可以被无人值守地顺序扫过配合观察门是否弹开即可完成穷举无需盯屏手动切换文件。局限与合规提醒仅适用于 12 位固定码码空间为 4096本文所有时间预算都建立在此前提上若目标为滚动码设备本方案不适用频率与硬件433.92 MHz 方案适用于大多数区域市场868.35 MHz 对应欧洲部分频段请确认你所在地区与设备使用频率合法授权边界仅可对本人拥有或已获授权的设备进行测试请遵守当地无线电与安全相关法律法规。小结围绕 Sub-GHz/Garages/CAME_brute_force/ 目录本文完整覆盖了从原理到落地的整条链路12 位码空间只有 4096 种组合的数学前提 →CAMEbruteforcer433/868.py如何把每位码展开成-9000 250 -250 500...形式的 RAW 波形并按split粒度切分 → 预生成文件的时间预算1000 条约 1 分钟、500 条约 27 秒、4096 条约 287 秒→ 现场1000→500→100→更细的二分逼近打法 → 以及借助subplaylist/CAME_12Bit_BF/实现全自动连续播放。需要动手时参考 README.md、生成脚本 与 播放列表目录 三处即可快速上手。【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考