綠米協議的一些發現與AES
按照網上的教程,在網內廣播
IP:224.0.0.50
端口:4321
命令:{"cmd":"who"}
卻什麼都收不到,直接發送給網關IP也無效,
直接用
{"cmd":"get_id_list"}發送到網關的IP,9898端口,也毫無反應
用嗅探軟件一查看發現,網關回複的端口是本機的發送端口,而網上大部分UDP測試工具隻能自定義監聽端口,卻無法指定發送端口。。而且發現網關廣播的地址是224.0.0.251而不是224.0.0.50,本機發送給224.0.0.50網關不回複任何消息
沒辦法,自己寫了一個UDP測試工具,一切都正常,本來挺順利的
後來研究到write子設備的時候,發現總是報錯,後來問一個同樣對綠米協議感興趣的朋友,才知道是密碼錯了
可憐心大的我以為密碼就是在網關中設置的密碼,後來仔細一看才發現,密碼的加密方式是AES-CBC,網關中的隻是密鑰而非密碼
後來又在論壇和GitHub搜索了一圈,發現都是針對HomeKit的JS代碼,
可惜我看不懂啊,沒辦法,還得自己寫
今天終於成功了,所以把代碼與大家分享一下,希望會幫到你們
簡單說一下協議中加密相關字段的作用
{"cmd":"heartbeat","model":"gateway","sid":"1022780","short_id":0,"token":"1234567890abcdef","data":"{\"ip\":\"172.22.4.130\"}" }
其中,token後麵跟的1234567890abcdef實際為要進行加密的密碼
而網關中的密碼0987654321qwerty其實是對密碼進行加密的密鑰
網關AES-CBC-128加密向量IV是0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58, 0x56, 0x2e
以下內容被隱藏,回複本帖後可見
因為伸手黨,所以隱藏一下吧,勿怪
最後更新:2017-06-12 22:07:39