大家好,我是LinuxZn。
什么是SmartLink?
項目需要用到smartconfig,之前我也沒接觸過,查資料了解的過程發現了一個好東西——SmartLink,分享給大家。
SmartLink是一個在Linux下實現的smartconfig。
倉庫鏈接:
https://github.com/jolin90/smartconfig
SmartLink的介紹及使用
1、相關知識補充
在介紹SmartLink的使用之前,我們先補充點相關知識。
(1)什么是smartconfig?
以wifi智能插座來做說明。我們剛買回來的智能插座,第一步要做的就是給設備進行配網。
配網方式有很多,smartconfig就是其中一種:
手機發送UDP廣播報文,待配網設備掃描所有的可用無線信道,找到發送smartConfig的報文,并鎖定在這一信道上開始接受數據。
(2)網卡工作模式
廣播模式:物理地址(MAC)是0Xffffff的幀為廣播幀,工作在廣播模式的網卡接收廣播幀。
多播模式:如果將網卡設置為多播模式,它可以接收所有的多播傳送幀,而不論他是不是組內成員。
直接模式:只接收目的地址是自己MAC地址的幀。
混雜模式:工作在混雜模式下的網卡接收所有流經網卡的幀。
查看、設置、取消混雜模式命令如:
ifconfigwlan0#查看wlan0是否為混雜模式 ifconfigwlan0promisc#設置wlan0為混雜模式 ifconfigwlan0-promisc#取消wlan0混雜模式
(3)通信方式
通信方式分類:
單播:單臺主機與單臺主機之間的通信;
廣播:單臺主機與網絡中所有主機的通信;
組播:單臺主機與選定的一組主機的通信;
IP 網絡的組播一般通過組播 IP 地址來實現,組播 IP 地址就是 D 類 IP 地址,即 224.0.0.0 至 239.255.255.255 之間的IP地址。
2、SmartLink使用
下載得到:
我們使用arm板子來做實驗。首先,需要交叉編譯,執行命令:
makeCC=arm-linux-gnueabihf-gcc
把編譯生成的smartlink可執行程序傳到板子里。運行時需要跟上接口的名稱。如:
./smartlinkwlan0
然后執行如下命令重新編譯:
makeclean make
生成的mcast_app可執行程序在pc上運行,模擬手機APP發送。運行時需要傳入WiFi名稱及密碼。如:
./mcast_appTenda_552F180987654321
測試時需要先運行mcast_app,再運行smartlink。smartlink收到WiFi名稱及密碼時會打印出來。
運行結果如:
這里,使用mcast_app來模擬手機APP。smartlink也提供了一個簡易的安卓手機APP,也可以使用APP進行測試:
4、SmartLink組播包協議分析
上面演示了SmartLink的使用,下面簡單介紹一些SmartLink的組播包協議。
APP發送特定協議的組播包數據給設備,設備收到后進行解析獲取路由器SSID及密碼。其協議如:
每個數據包6個字節,
第1~3字節:組播包地址,為固定值0x01 0x00 0x5e。
第4字節:數據包序號。
第5字節:指定數據。
第6個字節:指定數據。
每次傳輸若干字節。舉例說明:
SSID為"TP-LINK_hys" ,PSW為"12345678",發送組播地址如下:
0x010x000x5e0x000x480x35 0x010x000x5e0x010x680x2b 0x010x000x5e0x020x5c0x31 0x010x000x5e0x030x0b0x08 0x010x000x5e0x04'T''1' 0x010x000x5e0x05'P''2' 0x010x000x5e0x06'-''3' 0x010x000x5e0x07'L''4' 0x010x000x5e0x08'I''5' 0x010x000x5e0x09'N''6' 0x010x000x5e0x0a'K''7' 0x010x000x5e0x0b'_''8' 0x010x000x5e0x0c'h'0x00 0x010x000x5e0x0d'y'0x00 0x010x000x5e0x0e's'0x00 0x010x000x5e0x400x1c0x03
其中:
(1)第1~3包數據,為特征碼包,后三個字節由組播IP映射為為組播MAC。取組播IP的后23位作為MAC,映射圖如:
圖片來源:jasonj33的博客
這里,手機APP設置的組播IP固定如:
#defineIPADDR_KEY0"224.0.72.53"/*key0000035*/ #defineIPADDR_KEY1"224.1.104.43"/*key100012b*/ #defineIPADDR_KEY2"224.2.92.49"/*key2000231*/
組播IP映射為組播MAC,得到:
取后23位即為0.72.53對應16進制為00:48:35 取后23位即為1.104.43對應16進制為01:68:2b 取后23位即為2.92.49對應16進制為02:5c:31
(2)第4包數據放的是SSID及PSW的長度。
(3)第5~15包數據放的則是SSID及PSW。
(4)第16包數據為校驗碼,采用連續異或校驗的方式:
Crc=Crc^0x01^(byte)0x5e^0x40
以上就是本次的分享。
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11326瀏覽量
209961 -
WIFI
+關注
關注
81文章
5301瀏覽量
204208 -
配網
+關注
關注
0文章
155瀏覽量
9077 -
智能插座
+關注
關注
5文章
194瀏覽量
27759 -
SmartLINK
+關注
關注
0文章
5瀏覽量
2316
原文標題:分享一種實用的配網方案!
文章出處:【微信號:Linux大陸,微信公眾號:Linux大陸】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論