broadlink協議分析

2021-08-16 14:04:04 字數 2741 閱讀 2699

原文:broadlink smart home devices complete protocol hack

在smart home diy **上,有人研究如何將智慧型裝置加入自己的diy smart home hub上。第乙個新增就是broadlink裝置。作者最終實現的是用自己的**來控制博聯裝置。文章對broadlink的協議部分進行了介紹,並給出了控制裝置的node.js原始碼。

step1 配置和配對

長按reset按鈕,直到藍燈快閃。

這時出現了名為broadlinkprov的wifi熱點。這就是配置訪問點。

step2 逆向broadlink協議

broadlink使用的是quic udp協議進行互動。quic有兩個工作選項,public和not public。不同點在於訊息的第乙個位元組的第二個位元。

所有的訊息可以廣播傳送或傳送到指定ip位址。broadlink使用80端**互(應該是裝置埠是80)。

broadlink 訊息結構

當public bit被設定為0,也就是low public flag,訊息結構如下:

public flag : 0x00

public number: 0x00

payload

當public bit被設定為1,也就是high public flag,訊息結構如下:

public flag:0x5a( version:no, reset:yes, cid:0x2,packet #1, multipath:yes)

connection id:24113000182295205 (0xa5aa555aa5aa5500)

tag:0x00

tag id:0x00

padding:為0x00

payload(從第18個位元組開始)

broadlink訊息的頭部將緊跟quic的頭部,並有如下結構:

對於low public flag實際上是沒有broadlink頭部的。

對於high public flag,頭部資訊。

對於public訊息,整個broadlink頭部長度是56位元組。

bytes 32-33(0x20-0x23)總是整個訊息的checksum。對資料進行所有操作(包括加密)後進行計算。 通過使用0xbeaf的magic完成校驗和計算。

然後在位元組36-37(0x24)為裝置id。ipsum domus使用0x7d00,broadlink值如下:

0: 'sp1'; 

0x2711: 'sp2'; 

0x2719 or 0x7919 or 0x271a or 0x791a: 'honeywell sp2'; 

0x2720: 'spmini'; 

0x753e: 'sp3'; 

0x2728: 'spmini2'; 

0x2733 or 0x273e: 'spmini oem';        

0x2736: 'spminiplus'; 

0x2712: 'rm2'; 

0x2737: 'rm mini'; 

0x273d: 'rm pro phicomm'; 

0x2783: 'rm2 home plus'; 

0x277c: 'rm2 home plus gdt'; 

0x272a: 'rm2 pro plus'; 

0x2787: 'rm2 pro plus2'; 

0x278b: 'rm2 pro plus bl'; 

0x278f: 'rm mini shate'; 

0x2714: 'a1'; 

0x4eb5: 'mp1'; 

>= 0x7530 and <= 0x7918: 'spmini2 oem';

在位元組38(0x26)是command,對應的request ids如下:

hello       : [0x6]

discover    : [0x1a]

join        : [0x14]

auth        : [0x65]

command     : [0x6a]

而且相應的response ids:

hello       : [0x7]

discover    : [0x1b]

join        : [0x15]

auth        : [0x3e90]

command     : [0x3ee]

還有一些額外的資訊域:

位元組40(0x28)共兩個位元組。這個值用來將請求與相應相關聯。

位元組42(0x2a)為裝置的mac位址,以小端格式存放。

位元組48(0x30)為device id

位元組52(0x34)為checksum。這個checksum的計算與整個訊息是一樣的,只不過它是針對payload的計算。

然後,如果要求加密,則加密整個payload,並把它加在頭部後面(在public high的情況下是從第57個位元組開始)。

資料加密是aes-128 cbc演算法,無padding。iv如下:

initial key: [0x09, 0x76, 0x28, 0x34, 0x3f, 0xe9, 0x9e, 0x23, 0x76, 0x5c, 0x15, 0x13, 0xac, 0xcf, 0x8b, 0x02]

initial vector: [0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58]

網路協議分析 VRRP協議分析

2 rip 2的報文格式 3 rip 2的驗證報文 三 例項化 rip報文由頭部 header 和多個路由表項 route entries 部分組成。乙個rip表項中最多可以有25個路由表項。rip是基於udp協議的,所以rip報文的資料報不能超過512個位元組。1 command 長度8bit,報...

網路協議分析 生成樹協議(STP)分析

lan資料鏈路層 例項化二層通訊協議,基本應用是防止交換機冗餘鏈路產生的環路.用於確保乙太網中無環路的邏輯拓撲結構.從而避免了廣播風暴,大量占用交換機的資源。網橋協議資料單元 bridge protocol data unit 是一種生成樹協議問候資料報,它可以配置的間隔發出,用來在網路的網橋間進行...

應用層協議分析 HTTPS協議分析

例項化secure socket layer ssl 俗稱安全套接層,是由netscape communitcation於1990年開發,用於保障word wide web www 通訊的安全。主要任務是提供私密性,資訊完整性和身份認證。1994年改版為sslv2,1995年改版為sslv3。tra...