本发明属于设备识别领域,特别涉及一种加密无线网络下的iot设备识别方法。
背景技术:
随着物联网(internetofthing,iot)的飞速发展,物联网设备数量急剧增加,并在我们的工作、生活中起着不可或缺的作用。在物联网生态中,无线wifi在物联网中扮演着非常重要的角色,其作为iot设备的粘合剂,无线wifi连接众多iot设备,保证iot设备间的相互通信并成为了数据传输的通道。无线wifi网络适用于各式各样的场合,设备可以通过加入无线wifi网络与互联网相连接,实现信息交换和通信。
通常情况下,wifi遵循802.11协议,在网关设备上设置了加密后,上层数据会被加密,并且在无线传输过程中也会保持加密状态,因此即便能够嗅探加密wifi所传输的数据,也无法获取其中的明文数据。根据802.11帧协议,我们在嗅探到wifi传输数据帧后,只能获取通信双方的mac地址,然而仅仅根据mac地址是很难确定通信节点是什么型号的设备。
为了识别无线wifi网络下连接的设备,cn201510835694.5公开了一种在wifi场景下识别终端用户身份的方法和系统,其在手机用户通过wifi热点接入网络,该方法利用移动网络获得的用户身份信息,构造cookie并下发给终端用户,待同一个终端用户下一次通过wifi接入时,wifi身份识别系统获取cookie,并根据cookie识别终端用户身份信息,无需用户登陆与安装app,就可以精准识别本网手机用户身份的问题。
但是现有技术公开的识别方法仍存在以下不足:
1)如果目标无线网络采用了强加密,那么密钥破译过程将变得很难,而如果无法获取密钥则无法进行进一步的流量分析。
2)如果无法获取无线网络密钥,另一种方式是将流量分析设备接入到目标网络的上层网关节点进行分析,但是在实际应用过程中存在局限性。
技术实现要素:
为了解决现有技术中存在的问题,本发明提供了一种加密无线网络下的iot设备识别方法。
本发明具体技术方案如下:
本发明提供一种加密无线网络下的iot设备识别方法,该识别方法包括如下步骤:
获取已知型号的iot设备对应的wifi流量数据包,作为训练集,获取待测设备型号对应的wifi流量数据包,作为测试集;
将训练集和测试集对应的wifi流量数据包进行数据清洗;
利用经过数据清洗后的训练集对卷积神经网络进行训练,获得物联网设备流量识别模型;
利用物联网设备流量识别模型对经过清洗后的测试集进行预测。
进一步的改进,所述获取已知型号的iot设备对应的wifi流量数据包为基于airodump捕获对应的wifi流量数据包。
进一步的改进,数据清洗具体为:
读取训练集和测试集对应的wifi流量数据包,分别保存在pcap包内;
按照mac地址对pcap包进行分组,形成以不同mac作为索引的数组;
将每一个mac地址对应的pcap包内数据按照数据帧长度x进行切割,不够长度的用0补齐,多余的直接舍弃,形成由数据长度组成的序列。
举例来说,给定x为4,如果一个pcap包中存在mac地址为:11-22-33-44-55-66的数据帧共有2个,数据帧长度分别为256,348;另一个mac地址为:aa-bb-cc-dd-ee-ff的数据帧共有5个,数据帧长度为128,20,20,30,64;则形成的数组应为[‘11-22-33-44-55-66’:[256,348],‘aa-bb-cc-dd-ee-ff’:[128,20,20,30]]。
进一步的改进,所述卷积神经网络包括输入层、第一卷积层、第二卷积层、第三卷积层、第四卷积层、全连接层和输出层。
进一步的改进,所述方法还包括对数据长度组成的序列进行修正,形成修正后的序列与已知型号的iot设备组成的新的训练集的步骤。
进一步的改进,所述修正具体包括:
获取用于修正序列的已知型号的iot设备对应的wifi流量数据包,并获取每一wifi流量数据包的大小和wifi流量数据包的传输速率;
将由数据长度组成的序列分别与wifi流量数据包的大小和wifi流量数据包的传输速率组成第一训练样本和第二训练样本;
分别用第一训练样本和第二训练训练样本对小波神经网络进行训练,获得第一修正模型和第二修正模型;
将训练集内经过清洗后的由数据长度组成的序列输入到第一修正模型和第二修正模型内,将输出结果进行结合,形成修正后的序列与设备已知型号形成新的训练集。
进一步的改进,所述的结合具体为:
进一步的改进,所述小波神经网络的非线性映射关系为:
xi为输入层的第i个输入样本,yl为输出层的第l个输出值;n为输入层节点个数;m为隐含层节点个数;
进一步的改进,利用新的训练集对卷积神经网络进行训练,获得物联网设备流量识别模型。
本发明另一方面提供一种加密无线网络下的iot设备识别系统,该识别系统包括:
用于捕获已知型号的iot设备对应的wifi流量数据包,作为训练集,获取待测设备型号对应的wifi流量数据包,作为测试集的捕获模块;
用于对训练集和测试集对应的wifi流量数据包进行数据清洗的数据清洗模块;
利用经过数据清洗后的训练集对卷积神经网络进行训练,获得物联网设备流量识别模型的模型构建模块;
利用物联网设备流量识别模型对经过清洗后的测试集进行预测的预测模块
本发明的有益效果:
本发明提供一种加密无线网络下的iot设备识别方法,该方法充分利用了数据传输过程中间接泄漏的信息如:mac地址和数据传输长度来进行设备识别;最终达到在不了解加密网络密钥并且不接入目标网络的情况下对网络中的iot设备进行识别。
附图说明
图1为实施例1一种加密无线网络下的iot设备识别方法的流程图;
图2为步骤s2的流程图;
图3为实施例2一种加密无线网络下的iot设备识别方法的流程图;
图4为步骤s3的流程图;
图5为实施例3一种加密无线网络下的iot设备识别系统的结构框图。
附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所描述的步骤。
具体实施方式
由于本发明的方法描述是在计算机系统中实现的,该计算机系统可以设置在服务器或客户端的处理器中。例如本文所述的方法可以实现为能以控制逻辑来执行的软件,其由服务器中的cpu来执行。本文所述的功能可以实现为存储在非暂时性有形计算机可读介质中的程序指令集合。当以这种方式实现时,该计算机程序包括一组指令,当该组指令由计算机运行时其促使计算机执行能实施上述功能的方法。可编程逻辑可以暂时或永久地安装在非暂时性有形计算机可读介质中,例如只读存储器芯片、计算机存储器、磁盘或其他存储介质。除了以软件来实现之外,本文所述的逻辑可以利用分立部件、集成电路、与可编程逻辑设备(诸如,现场可编程门阵列(fpga)或微处理器)结合使用的可编程逻辑,或者包括它们任意组合的任何其他设备来体现。所有此类实施均落入本发明的范围之内。
实施例1
本发明实施例1提供一种加密无线网络下的iot设备识别方法,如图1所示,该识别方法包括如下步骤:
s1:获取已知型号的iot设备对应的wifi流量数据包,作为训练集,获取待测设备型号对应的wifi流量数据包,作为测试集;
步骤s1中,所指的iot设备包括智能摄像头、智能电灯、温度传感器、湿度传感器、智能锁等;这些iot设备通常都是单用途设备,仅包括少数状态和动作,例如其只包括与云端同步发送心跳包的状态和上传视频数据包的状态。
步骤s1中,首先将已知型号的iot设备部署在已知的物理空间中,然后基于airodumpng捕获对应的wifi流量数据包。
s2:将训练集和测试集对应的wifi流量数据包进行数据清洗;
步骤s2中,捕获固定一段时间的wifi流量数据包后进行数据清洗。其中,发射无线热点的ap称为station,与station通信的iot设备称为node。在一段时间后可捕获到大量的node与station通信的wifi流量数据包。经过数据清洗,可以获得的数据为以node发送的数据长度组成的序列,如下所示{node.package1.length,node.package2.length,node.package3.length,...}
如图2所示,步骤s2数据清洗具体包括:
s21:读取训练集和测试集对应的wifi流量数据包,分别保存在pcap包内;
s22:按照mac地址对pcap包进行分组,形成以不同mac作为索引的数组;
s23:将每一个mac地址对应的pcap包内数据按照数据帧长度x进行切割,不够长度的用0补齐,多余的直接舍弃,形成由数据长度组成的序列。
s3:利用经过数据清洗后的训练集对卷积神经网络进行训练,获得物联网设备流量识别模型;
步骤s3中,所述卷积神经网络包括:
[输入层]:
1.将输入向量reshape为[-1,512,1]的向量;
2.将向量转化为浮点类型;
3.进行数据预处理
threshold//阈值=tf.variable//变量(256.0)
tf.concat([tf.floor_div(layer,threshold)/1500*threshold,tf.floormod(layer,threshold)/threshold],-1)
[第一卷积层]:
进行一维卷积,过滤器个数为16,卷积核的大小为3,激活函数使用relu;
进行最大池化,池化窗口为2,池化张度为2,padding采用same。
[第二卷积层]:
进行一维卷积,过滤器个数为32,卷积核的大小为3,激活函数使用relu;
进行最大池化,池化窗口为2,池化张度为2,padding采用same;
随机dropout。
[第三卷积层]:
进行一维卷积,过滤器个数为64,卷积核的大小为3,激活函数使用relu;
进行最大池化,池化窗口为2,池化张度为2,padding采用same;
随机dropout。
[第四卷积层]:
进行一维卷积,过滤器个数为128,卷积核的大小为3,激活函数使用relu;
进行最大池化,池化窗口为2,池化张度为2,padding采用same
随机dropout。
[全连接层]:
输出维度为256,激活函数使用relu;
随机dropout。
[输出层]:
逻辑回归,使用sigmoid函数计算出该组数据和模型匹配的概率。
s4:利用物联网设备流量识别模型对经过清洗后的测试集进行预测。
本发明提供一种加密无线网络下的iot设备识别方法,该方法充分利用了数据传输过程中间接泄漏的信息如:mac地址和数据传输长度来进行设备识别;最终达到在不了解加密网络密钥并且不接入目标网络的情况下对网络中的iot设备进行识别。
实施例2
本发明实施例2提供一种加密无线网络下的iot设备识别方法,如图3所示,该识别方法包括如下步骤:
s1:获取已知型号的iot设备对应的wifi流量数据包,作为训练集,获取待测设备型号对应的wifi流量数据包,作为测试集;
s2:将训练集和测试集对应的wifi流量数据包进行数据清洗;
s3:对数据清洗后形成的由数据长度组成的序列进行修正,形成修正后的序列与已知型号的iot设备组成的新的训练集;
如图4所示,步骤s3中,所述修正具体包括:
s31:获取用于修正序列的已知型号的iot设备对应的wifi流量数据包,并获取每一wifi流量数据包的大小和wifi流量数据包的传输速率;
步骤s31中,首先也是将已知型号的iot设备部署在已知的物理空间中,然后基于airodumpng捕获对应的wifi流量数据包。wifi流量数据包的大小和wifi流量数据包的传输速率也是通过捕获工奖捕获而得。
s32:将由数据长度组成的序列分别与wifi流量数据包的大小和wifi流量数据包的传输速率组成第一训练样本和第二训练样本;
s33:分别用第一训练样本和第二训练训练样本对小波神经网络进行训练,获得第一修正模型和第二修正模型;
步骤s33中,所述小波神经网络包括输入层、隐层和输出层,其中隐层的节点数为9。
步骤s33中,所述小波神经网络的非线性映射关系为:
xi为输入层的第i个输入样本,yl为输出层的第l个输出值;
n为输入层节点个数;m为隐含层节点个数;
s34:将训练集内经过清洗后的由数据长度组成的序列输入到第一修正模型和第二修正模型内,将输出结果进行结合,形成修正后的序列与已知型号的iot设备组成的新的训练集。
步骤s34中,所述的结合具体为:
s4:利用新的训练集对卷积神经网络进行训练,获得物联网设备流量识别模型;
s5:利用物联网设备识别模型对经过清洗后的测试集进行预测。
通过以上方法的限定,可以显著提高设备识别的准确率。
实施例3
本发明实施例3提供一种加密无线网络下的iot设备识别系统,如图5所示,该识别系统包括:
用于捕获已知型号的iot设备对应的wifi流量数据包,作为训练集,获取待测设备型号对应的wifi流量数据包,作为测试集的捕获模块;
用于对训练集和测试集对应的wifi流量数据包进行数据清洗的数据清洗模块;
利用经过数据清洗后的训练集对卷积神经网络进行训练,获得联网设备流量识别模型的模型构建模块;
利用物联网设备流量识别模型对经过清洗后的测试集进行预测的预测模块。
本发明提供一种加密无线网络下的iot设备识别系统,该系统充分利用了数据传输过程中间接泄漏的信息如:mac地址和数据传输长度来进行设备识别;最终达到在不了解加密网络密钥并且不接入目标网络的情况下对网络中的iot设备进行识别。