Zigbee白名單/黑名單

方式一

在Zmac_cb.c文件中,找到函數MAC_CbackEvent,這個函數是MAC層把消息上傳給NWK層的,可以過濾AssoReq命令。這個地方是判斷MAC層生成的消息,並進一步傳遞給NWK,在傳遞給NWK前要用osal_msg_allocate分配消息空間,同時會進行一些預處理。其中有個對MAC_MCPS_DATA_IND事件的預處理,就是收到錯誤的數據包直接return,不上傳給NWK。
我們可以在這裏添加一個else if(event == MAC_MLME_ASSOCIATE_IND),然後判斷pData->associateInd.deviceAddress是否合法,不合法直接return。

方式二

第二種方法,在ZDApp.c中找到ZDO_JoinIndicationCB,這裏是直接接駁NWK層處理加入網絡請求的。可以處理JOIN和REJOIN兩種事件。參數type是加入網絡的方式,ShortAddress是NWK分配好的網絡地址,ExtendedAddress是加入網絡的設備的物理地址。在這個地方加入白名單驗證,不合法的,直接返回ZFailure。

通過協議分析儀觀察,第一種方法,協調器收到AssoReq後不響應AssoRsp,節點超時後重新尋找其它網絡。第二種方法,協調器返回的AssoRsp指令,分配的網絡地址是0xFFFF,這個地址是不合法的,節點收到後會重新尋找其它網絡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章