手把手教你做一個天貓精靈(五、嘗試抓取智慧家居數據)

之前的章節講了利用fubuki-iot做了一個智慧終端,但是苦於沒有良好的開源生態所以只停留在DIY階段。本章介紹一種獲取智慧家居數據的方式,有條件的可以嘗試一下。

硬體準備

  • 路由器(需要帶鏡像功能)
  • RJ45(水晶頭)數據線

搭建環境

首先在連接路由器WiFi的環境下登陸路由器控制端,一般是192.168開頭的網頁,選擇高級配置,打開鏡像開關。

路由器終端

源埠默認,這樣可以鏡像所有接入設備的流量。輸出埠選擇LAN1,這樣通過RJ45數據線將路由器的LAN1埠於電腦相連,就可以實現本地電腦網卡接收路由器的鏡像數據了。

抓包

既然要抓包,必不可少的工具就是Wireshark,點這裡下載。按照步驟安裝好以後選擇抓取乙太網的數據包,這時候應該可以看到抓取的結果了。

如果是TLS/SSL協議加密過的數據也可以通過以下步驟解密:

  • 新建兩個文件debug.log和key.txt
  • 設置環境變數SSLKEYLOGFILE的值為debug.log的路徑
  • 配置Wireshark的TLS協議:點擊「編輯」-「首選項」,選擇「Protocols」-「TLS」,按下圖填寫對應的debug.log和key.txt的路徑

tls編輯

重啟電腦,再打開Wireshark抓包就可以抓TLS/SSL加密之後的數據了。

解密後數據

Wireshark也能抓取MQTT協議的包,只要在過濾器中輸入mqtt即可:

mqtt

然而並沒有發現MQTT的數據包,然後登陸路由器終端,找到智慧家居的IP,比如這個海爾洗衣機的IP是192.168.2.102:

海爾洗衣機

然後在Wireshark過濾器中搜索對應的IP:

結果這個洗衣機是通過UDP協議傳輸的,而這個UDP協議的上層協議很有可能是廠家自己封裝的協議。。

思考

目前物聯網智慧家居的生態還不是很開放。有能力的大廠家甚至都自己實現了智慧語音功能,再加上市場競爭激烈,即使小廠家也不願意將傳輸的數據分享給外部。所以當下環境真正實現萬物聯網還是很遙遠的,賽博朋克的世界甚至更是遙不可及。我認為當前能夠願意聯網的家居可能僅限於電燈、開關之類的小電器。因為它們本身沒有科技創新點,而加入聯網特性能成為它們的買點。因此以後可能會出一期有關藍牙接入的文章。

本章介紹了本地抓取智慧家居數據包的一種方案,如果抓取到數據後也可以通過sniff等方法將流量複製給我們的MQTT伺服器,從而實現我們對家居的智慧控制。下一章將介紹一種軟體接入MQTT的例子——將QQ接入物聯網功能。