博联 Broadlink 的万能遥控,远程指令可以 replay,需要加个时间验证嘛? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
请用平和的语言准确描述你所遇到的问题
厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
JCZ2MkKb5S8ZX9pq
V2EX    全球工单系统

博联 Broadlink 的万能遥控,远程指令可以 replay,需要加个时间验证嘛?

  •  
  •   JCZ2MkKb5S8ZX9pq 2020-01-11 21:34:13 +08:00 2452 次点击
    这是一个创建于 2166 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 在搞博联的万能遥控器,抓包刚好发现一个问题。
    • 博联大部分都用了自己的证书 fiddler 一下子还抓不到,刚好遥控指令可以抓到,就看了眼。
    • 发送的遥控指令,request 大概是这样的
    { "directive": { "header": { "namespace": "DNA.TransmissionControl", "name": "fkdjksfjdk", "interfaceVersion": "2", "messageId": "00000000000000000000?????" }, "endpoint": { "devicePairedInfo": { "did": "00000000000000000000????", "pid": "000000000000000000000000????", "mac": "fffffffffffffff", "cookie": "fldajflksjkldfjsaldf????????" }, "endpointId": "00000000000000000000???fffffffff", "cookie": {} }, "payload": { "data": "????AAA????FFFFFFFF", "notpadding": 0 } } } 
    • 其中 data 应该是遥控码加了个编码或者自己指定的 Base64,cookie 就是个 base64,解出来这样。
    { "device": { "id": 321, "key": "3kj324lk32j4lk2j4l23j4l23kj4", "aeskey": "3kj324lk32j4lk2j4l23j4l23kj4", # same as key "did": "00000000000000000000kjljlkjlkjlkj", # device id "pid": "000000000000000000000ljljljljljlj", # maybe product or sth. else "mac": "ff:ff:ff:ff:ff:ff" # mac of RM Pro } } 
    • 因为我想要的是 data,也就是遥控指令的部分,那部分还没想好怎么解,我就去吃饭了。

    问题点

    • 吃饭时候忽然想到,好像没看到时间戳,会不会没 时间验证
    • 回来 fiddler 刚好没关过,就试着 replay 了一条,结果这边遥控器有回应。。。
    • 虽然说有好几个验证的 key,被拦截的可能性也不大,但要不要考虑加个时间验证啊?
    • 印象中其它平台大都是 apikey/ secret/ salt/ time, 有的还会加请求字串或者请求长度。
    • 改造的话好像客户端升级 + 服务器验证就行了。
    • 我也不太懂,大家觉得有问题吗?

    • 另外 webform 含一个 license,但应该也无关。
    • 因为从前一次测试,到吃饭回来,期间隔了两小时有的吧。我感觉是没验证(也不排除它打包在 key 里,然后时间宽容度很高?)
    • 现在已经差不多 4 小时了,还是可以 replay 请求。
    9 条回复    2020-01-12 01:47:01 +08:00
    JCZ2MkKb5S8ZX9pq
        1
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-01-11 22:00:27 +08:00
    另外我在想,那个 key 很短,不像 sid 校验。license 不确定。
    但会不会 data 部分也没有验证,换句话说,修改 data 部分,就能向我家里发任意指令了?那也满扯的。

    因为还不知道它 data 的编码规则,所以我也不方便测试,感觉可能是个坑点。
    先直接从路由器屏蔽了。
    sneezry
        2
    sneezry  
       2020-01-11 22:02:51 +08:00
    指令可以直接重放,我之前试过,同一个指令用了两年都可以正常控制
    JCZ2MkKb5S8ZX9pq
        3
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-01-11 22:05:35 +08:00
    @sneezry 真的这样啊,汗。。。
    倒是可以变相当 restapi 用
    JCZ2MkKb5S8ZX9pq
        4
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-01-11 22:10:39 +08:00
    @sneezry 试了下,多次请求,cookie 和 license 是不变的,也就是说很可能直接修改 data,就能发送任意指令到家里的万能遥控了。。。

    它这个 data 你知道是用什么编码的嘛?长得像 base64,但解出来乱码,好像 base64 可以自定义码表的是嘛?请问你知道它 data 部分是怎么编的嘛?
    sneezry
        5
    sneezry  
      &nbp;2020-01-11 22:24:56 +08:00
    @JCZ2MkKb5S8ZX9pq data 不是可见字符,就是二进制数据,博联自己设计的协议,没有太多公开资料
    binux
        6
    binux  
       2020-01-11 23:18:50 +08:00 via Android
    houfukude
        7
    houfukude  
       2020-01-12 01:05:40 +08:00 via Android
    如果你指望去博联家的服务器下指令这个我没研究过

    我直接本地学习了然后进行本地重放
    可以参考一下这个项目
    https://github.com/mjg59/python-broadlink/
    JCZ2MkKb5S8ZX9pq
        8
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-01-12 01:45:11 +08:00
    @binux 不太一样,HA 是本地通过 ip/mac 直接连的。抓包的这个是从博联服务器走的。
    JCZ2MkKb5S8ZX9pq
        9
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-01-12 01:47:01 +08:00
    @houfukude 嗯,HA 本地我已经都配置好了。我吐槽的这个是博联 App 里的。
    我在抓的部分是射频码和其它一些东西。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     903 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:13 PVG 06:13 LAX 14:13 JFK 17:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86