1.一种基于消息过滤算法的MQTT协议智能家居的识别方法,其特征在于,该方法具体包括以下步骤:S1:在无线局域网的情况下,根据Wireshark在Linux系统中用airodump-ng抓取智能家居与外界通信时802.11的PCAP包,并筛选出MQTT协议的数据包;其中MQTT协议为Message Queuing Telemetry Transport消息队列遥测传输;
S2:针对MQTT这一层进行解读,由于识别智能家居的MQTT协议,只涉及PUBLISH消息,可变报头的Topic Name关键字,定义了有效载荷数据发送的信息频道,订阅者根据Topic Name来识别出他们想要接收的消息;
S3:对MQTT协议的Topic Name关键字进行特殊字符查找,并进行模式匹配,具体包括:
设目标串长度为n,模式串长度为m,模式串特殊符号前有s位,如果目标串也含有特殊字符,则采用改进型的BF算法进行模式匹配,从特殊字符开始当作分界线,往前匹配s位同时往后匹配模式串其余位;首先需要对目标串遍历,找出特殊字符位置,时间复杂度为O(n);接着匹配模式串其余位,若不匹配,则跳到下一个特殊字符处,重复上述的步骤,这样匹配只需n的常数倍,即时间复杂度为O(n);若遍历后没有特殊字符,则运用原始的BF算法进行匹配,最坏的情况下所需的时间复杂度仍然是O(m*n);其中BF算法为Brute Force暴风算法;
S4:用Topic Name关键字相匹配,识别出智能家居安防设备厂商。
2.根据权利要求1所述的一种基于消息过滤算法的MQTT协议智能家居的识别方法,其特征在于,所述步骤S3中,采用改进型的BF算法进行模式匹配,具体包括以下步骤:S31:假设目标串S:abc$cel/Gespdev/G86Pxmz,模式串T:dev/G86P;在识别系统的BF模式匹配算法模块中,首先遍历目标串S,找出特殊字符$与/;匹配过程中的i表示匹配的次数,j表示目标串的位置;第一次匹配:此时特殊字符处不相等,匹配失败;
S32:第二次匹配:特殊字符匹配成功,往前匹配时失败;
S33:第三次匹配:当特殊字符匹配成功后,一分为二,同时向前向后开始匹配,目标串与模式串相同,匹配成功。