著录项信息
专利名称 | 一种针对无线局域网特定目标用户的MAC地址捕获方法 |
申请号 | CN201310135442.2 | 申请日期 | 2013-04-18 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-08-21 | 公开/公告号 | CN103259878A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/12 | IPC分类号 | H;0;4;L;2;9;/;1;2;;;H;0;4;W;8;/;2;6;;;H;0;4;W;2;4;/;0;0查看分类表>
|
申请人 | 山东省计算中心 | 申请人地址 | 山东省济南市历下区科院路19号山东省计算中心
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 山东省计算中心(国家超级计算济南中心),山东省计算中心(国家超级计算济南中心) | 当前权利人 | 山东省计算中心(国家超级计算济南中心),山东省计算中心(国家超级计算济南中心) |
发明人 | 杨明;舒明雷;郭强;周书旺;付勇;魏诺;刘瑞霞 |
代理机构 | 济南泉城专利商标事务所 | 代理人 | 李桂存 |
摘要
本发明的针对无线局域网特定目标用户的MAC地址捕获方法,包括:a).数据获取;b).基于哈希表构建状态集和更新RSSI序列,状态集记作:;c).更新WLAN的拓扑结构;d).以周期,更新并查找RSSI统计均值最大的第一类STA状态集;e).以周期,更新并查找RSSI统计均值最大的第二类STA状态集;f).判定特定目标用户的MAC地址。本发明的MAC地址捕获方法,支持当前的各种WLAN标准(IEEE802.11a/b/g/n),可用无痕迹、非介入的方式,快速捕获特定目标用户所使用的各种WLAN终端设备的MAC地址,具有多用户适用性、网络连通适用性、无线数据量适用性、取证快速性与无痕性的优点。
1.一种针对无线局域网特定目标用户的MAC地址捕获方法,AP为WLAN中的访问接入点,STA为用户终端设备,RSSI为接收信号强度指标,其特征在于,依次包括以下步骤:
a).数据获取,选取与特定目标STA相距较近、与其他用户相距较远的位置,基于信道扫描策略、时间阈值策略和数据量阈值策略,获取WLAN内通过空中链路传输的各类无线帧;
b).基于哈希表构建状态集和更新RSSI序列,设集合S为一个STA或AP的状态信息的集合,称为“状态集”,S记作:
S={mac,rssi,type,ssid,channel,clients,flag}
其中,S.mac为长度为6字节的序列,存储STA/AP的MAC地址;由于MAC地址的惟一性,可将S.mac作为对该状态集S的惟一标识;S.rssi为最大长度为LenRssiBuffer的序列,存储已捕获的源MAC地址为S.mac的各无线帧的RSSI值,各元素为-90至20之间的整数值,度量单位为dBm;S.type表示实体的类型,S.type=1表示其为AP,S.type=2表示其为STA,S.type=0表示其类型尚未确定;S.ssid:仅当S.type=1时有效,存储该AP的SSID;S.channel:仅当S.type=1时有效,存储该AP当前使用的无线信道号;S.clients:
仅当S.type=1时有效,用于索引该AP的各STA子节点,是最大长度为MaxClients的序列,各元素分别为各子节点所对应的STA状态集的存储地址;S.flag为布尔型数值,指示S内的各状态信息是否完备,当S.type=1时,用于指示是否已获取该AP的S.ssid和S.channel数据项;当S.type=2时,用于指示是否已将该STA状态集的存储地址插入其父节点的S.clients序列;
针对步骤a)所获取的每个无线帧,基于哈希表内“MAC地址→状态集S存储地址”的直接映射,快速查找或构建该帧的源MAC地址srcMacF所对应的状态集S,并将该帧的RSSI值rssiF更新至序列S.rssi;
c).更新WLAN的拓扑结构:根据标志S.flag,确定是否处理状态集内与拓扑相关的数据项S.type,S.ssid,S.channel和S.clients,根据帧类型和子帧类型,判定状态集类型以及STA/AP之间的关联关系,构建并更新基于“AP链表+S.clients序列”的WLAN拓扑结构;
AP链表是一个线性链表,可对哈希表内的AP状态集进行索引,AP链表内各节点的结构为:
{AP状态集在哈希表内的存储地址,下一个AP链表节点的索引}
d).以时间T1为周期,对WLAN拓扑结构进行遍历,利用WLAN拓扑结构内的AP状态集和第一类STA状态集,更新现有拓扑树列表内的节点数据,并查找、标记RSSI统计均值最大的STA;第一类STA状态集是S.type=2且S.flag=1的状态集;拓扑树列表是采用树状分层列表的形式,对WLAN拓扑结构内的各AP状态集和第一类STA状态集的输出显示结果;S.R是对序列S.rssi内所有元素的统计均值;
e).以时间T2为周期,对哈希表内的第二类STA状态集进行遍历,利用第二类STA状态集,更新现有未关联列表内的节点数据,并查找、标记RSSI统计均值S.R最大的STA;第二类STA状态集是S.type≠1且S.flag=0的状态集;未关联列表是采用单层列表的形式,对各第二类STA状态集的输出显示结果;
f).判定特定目标用户的MAC地址,当步骤d)所述拓扑树列表内和步骤e)所述未关联列表内所标记的 最大的STA节点都保持稳定时,比较两个步骤中STA的RSSI统计均值,两者之中具有较大 的STA节点所对应的MAC地址,即为特定目标用户的MAC地址。
2.根据权利要求1所述的针对无线局域网特定目标用户的MAC地址捕获方法,设置标志isAllChannel,若isAllChannel=1,表示从首个可用信道开始依次对所有信道进行扫描,若isAllChannel=0,表示对特定信道进行扫描;其特征在于,步骤a)所述数据获取包括以下步骤:
a-1).判断信道扫描策略,判断isAllChannel的值,若isAllChannel=1,将待扫描信道设置为全部可用信道中的首个信道;若isAllChannel=0,则将待扫描信道设置为输入值nChannel所对应的信道;
a-2).将工作模式设置为射频监听模式;该模式下可对当前扫描信道内各STA/AP传输的所有无线帧进行捕获;
a-3).捕获无线帧并进行校验,捕获一个无线帧并进行CRC校验,如果经CRC校验不正确,则将该帧丢弃并重新捕获一个无线帧;如果CRC校验正确,则将该帧暂存至缓冲区,执行步骤a-4);
a-4).捕获时间阈值的判断,判断捕获无线帧的时间是否达到捕获时间阈值t0,如果达到t0,则执行步骤a-6);若未达到t0,则执行步骤a-5);
a-5).捕获数据量阈值的判断,判断捕获无线帧的数据量是否达到捕获数据量阈值A0,如果达到A0,则执行步骤a-6);若未达到A0,则执行步骤a-3);
a-6).提交数据,对暂存在缓冲区内的无线帧数据进行批量提交,执行步骤a-7);
a-7).判断isAllChannel,判断isAllChannel的值,如果isAllChannel=1,则监听下一个可用信道;若isAllChannel=0,则重新对当前信道进行监听;执行步骤a-3)。
3.根据权利要求1或2所述的针对无线局域网特定目标用户的MAC地址捕获方法,其特征在于,步骤b)所述基于哈希表构建状态集和更新RSSI序列包括以下步骤:
b-1).读取无线帧并判断其类型;从步骤a)所提交的批量数据中读取一个无线帧,并判断其是否为控制帧中的CTS或ACK子帧,如果为CTS或ACK子帧,则重新执行步骤b-1);
如果既不是CTS子帧也不是ACK子帧,则获取该帧的源MAC地址srcMacF和强度信号rssiF;
这里CTS为Clear To Send的缩写,为清除待发子帧,ACK为Acknowledge的缩写,为确认子帧,这两种子帧内均不含源端的MAC地址;
b-2).以srcMacF的后两字节计算源MAC对应的哈希地址Hash(srcMacF),并判断该哈希地址处的记录是否为空,如果为空则执行步骤b-3);如果不为空,则执行步骤b-4);
b-3).在哈希地址Hash(srcMacF)处新建状态集Ssrc,并对状态集Ssrc进行初始化,将Ssrc作为srcMacF对应的状态集,执行步骤b-7);
由srcMacF映射到哈希地址的哈希函数可表示为:
8
Hash(srcMacF)=srcMacF(5)·2+srcMacF(6)
对于MAC地址后两字节相同而造成哈希表冲突的所有状态集,都存储在同一线性链表中;
b-4).判断是否存在哈希表冲突,将哈希地址Hash(srcMacF)处的状态集记作S,判断S.mac=srcMacF是否成立,如果成立,则将S记作Ssrc,作为srcMacF对应的状态集,执行步骤b-7);如果不成立,则执行步骤b-5);
b-5).遍历冲突链表,以Hash(srcMacF)处的状态集为链表头结点,遍历读取链表节点内的状态集S,查找是否存在S.mac=srcMacF的状态集,如有满足条件的状态集存在,则将S记作Ssrc,作为srcMacF对应的状态集,执行步骤b-7);如果遍历完冲突链表,均没有满足条件的状态集存在,则执行步骤b-6);
b-6).新建状态集,新建状态集Ssrc并将其添加至现有冲突链表的末端,并对状态集Ssrc进行初始化,将Ssrc作为srcMacF对应的状态集,执行步骤b-7);
b-7).判断存储信号强度的序列是否已满,以nFrames表示状态集Ssrc中Ssrc.rssi序列当前实际存储数据的长度,LenRssiBuffer为其最大长度,LenRssiBuffer为偶数;判断nFrames<LenRssiBuffer是否成立,如果成立,则将该帧的rssiF值插入序列Ssrc.rssi的末端,即存入Ssrc.rssi(nFrames+1)之中;如果不成立,表明nFrames已达序列最大长度LenRssiBuffer,则执行步骤b-8);
b-8).释放序列的部分空间并存储rssiF,以Ssrc.rssi'表示原序列,Ssrc.rssi表示更新后的序列;将Ssrc.rssi'前半段数据的均值作为Ssrc.rssi(1)的值,将Ssrc.rssi'的后半段数据平移至Ssrc.rssi(2)□Ssrc.rssi(LenRssiBuffer/2+1),并将该帧的rssiF插入Ssrc.rssi(LenRssiBuffer/2+2)之中。
4.根据权利要求3所述的针对无线局域网特定目标用户的MAC地址捕获方法,其特征在于,设所捕获无线帧的目的MAC地址为dstMacF,Sdst为dstMacF所对应的状态集;源MAC地址为srcMacF,Ssrc为srcMacF所对应的状态集;步骤c)所述更新WLAN的拓扑结构包括以下步骤:
c-1).判断无线帧的类型,对于步骤b-1)所读取的无线帧,若为管理帧则执行步骤c-2),若为控制帧则执行步骤c-3),若为数据帧则执行步骤c-4);
c-2).判断管理帧的子类型,若为探测请求则执行步骤c-2-1),若为信标则执行步骤c-2-2),若为探测响应则执行步骤c-2-3),若为关联响应或重新关联响应则执行步骤c-2-4),若为关联请求或重新关联请求则执行步骤c-2-5);
c-2-1).判断Ssrc.type=0是否成立,如果成立,则令Ssrc.type=2,返回步骤b-1);
如果不成立,返回步骤b-1);
c-2-2).判断Ssrc.flag=1是否成立,如果成立,返回步骤b-1);如果不成立,则执行步骤c-2-2-1);
c-2-2-1).判断Ssrc.type=0是否成立,如果成立,设置Ssrc.type=1,并将Ssrc的存储地址插入AP链表的末端,执行步骤c-2-2-2);如果不成立,则执行步骤c-2-2-2);
c-2-2-2).根据帧体内容获取Ssrc.ssid和Ssrc.channel的值,并设置Ssrc.flag=1,返回步骤b-1);
c-2-3).判断Ssrc.flag=1是否成立,如果成立,执行步骤c-2-3-3);如果不成立,则执行步骤c-2-3-1);
c-2-3-1).判断Ssrc.type=0是否成立,如果不成立,则执行步骤c-2-3-2);如果成立,则先设置Ssrc.type=1,并将Ssrc的存储地址插入AP链表的末端,再执行步骤c-2-3-2);
c-2-3-2).根据帧体内容获取Ssrc.ssid和Ssrc.channel的值,并设置Ssrc.flag=1,执行步骤c-2-3-3);
c-2-3-3).基于哈希表查找目的MAC地址dstMacF所对应的状态集Sdst,并判断状态集Sdst中的Sdst.type=0是否成立,如果成立,则设置Sdst.type=2,返回步骤b-1);如果不成立,返回步骤b-1);
c-2-4).判断Ssrc.type=0是否成立,如果不成立,则执行步骤c-2-4-1);如果成立,则设置Ssrc.type=1,并将Ssrc的存储地址插入AP链表的末端,再执行步骤c-2-4-1);
c-2-4-1).基于哈希表查找目的MAC地址dstMacF所对应的状态集Sdst,并判断状态集Sdst中的Sdst.type=0是否成立,如果成立,则设置Sdst.type=2,返回步骤b-1);如果不成立,返回步骤b-1);
c-2-5).判断Ssrc.type=0是否成立,如果不成立,则执行步骤c-2-5-1);如果成立,则先设置Ssrc.type=2,再执行步骤c-2-5-1);
c-2-5-1).基于哈希表查找目的MAC地址dstMacF所对应的状态集Sdst,并判断Sdst.flag=1是否成立,如果成立,则返回步骤b-1);如果不成立,则执行步骤c-2-5-2);
c-2-5-2).判断Sdst.type=0是否成立,如果不成立,则执行步骤c-2-5-3);如果成立,则设置Sdst.type=1,并将Sdst的存储地址插入AP链表的末端,再执行步骤c-2-5-3);
c-2-5-3).判断Sdst.ssid的内容是否为空,如果不为空,直接返回步骤b-1);如果为空,则根据帧体内容,获取Sdst.ssid的值,再返回步骤b-1);
c-3).判断控制帧的子类型,若为节能轮询,则基于哈希表查找目的MAC地址dstMacF所对应的状态集Sdst,执行步骤c-3-1);若为其它子类型,则返回步骤b-1);
c-3-1).判断Ssrc.flag=1是否成立,如果成立,则执行步骤c-3-4);如果不成立,则执行步骤c-3-2);
c-3-2).判断Ssrc.type=0是否成立,如果不成立,则执行步骤c-3-3);如果成立,先设置Ssrc.type=2,再执行步骤c-3-3);
c-3-3).将Ssrc的存储地址插入其父节点Sdst内clients序列的末端,且序列Sdst.clients的长度nClients增加1;并设置Ssrc.flag=1,执行步骤c-3-4);
c-3-4).判断Sdst.type=0是否成立,如果不成立,返回步骤b-1);如果成立,则设置Sdst.type=1,并将Sdst的存储地址插入AP链表的末端,返回步骤b-1);
c-4).基于哈希表,查找目的MAC地址dstMacF对应的状态集Sdst;判断数据帧的传输方向,若为上行帧则执行步骤c-4-1);若其为下行帧则执行步骤c-4-2);
c-4-1).判断Ssrc.flag=1是否成立,如果成立,则执行步骤c-4-1-3);如果不成立,则执行步骤c-4-1-1);
c-4-1-1).判断Ssrc.type=0是否成立,如果不成立,则执行步骤c-4-1-2);如果成立,则先设置Ssrc.type=2,再执行步骤c-4-1-2);
c-4-1-2).将Ssrc的存储地址插入其父节点Sdst内clients序列的末端,且序列Sdst.clients的长度nClients增加1;设置Ssrc.flag=1,执行步骤c-4-1-3);
c-4-1-3).判断Sdst.type=0是否成立,如果不成立,则返回步骤b-1);如果成立,则设置Sdst.type=1,并将Sdst的存储地址插入AP链表的末端,返回步骤b-1);
c-4-2).判断Ssrc.type=0是否成立,如果不成立,则执行步骤c-4-2-1);如果成立,则设置Ssrc.type=1,并将Ssrc的存储地址插入AP链表的末端,执行步骤c-4-2-1);
c-4-2-1).判断Sdst.flag=1是否成立,如果成立,则返回步骤b-1);如果不成立,则执行步骤c-4-2-2);
c-4-2-2).判断Sdst.type=0是否成立,如果不成立,则执行步骤c-4-2-3);如果成立,则先设置Sdst.type=2,再执行步骤c-4-2-3);
c-4-2-3).将Sdst的存储地址插入其父节点Ssrc内clients序列的末端,且序列Ssrc.clients的长度nClients增加1;设置Sdst.flag=1,返回步骤b-1)。
5.根据权利要求1或2所述的针对无线局域网特定目标用户的MAC地址捕获方法,其特征在于,设iAP为AP链表内节点的标号,SAP(iAP)为AP链表内第iAP个节点所索引的AP状态集,jSTA为SAP(iAP).clients序列内元素的标号,SSTA(jSTA)为SAP(iAP).clients序列内第jSTA个元素所索引的STA状态集, 为信号强度RSSI的最大统计均值;拓扑树列表内,各AP状态集位于父节点列表层,各第一类STA状态集位于对应AP下的子节点列表层,AP节点显示的数据项为MAC地址、信道号、SSID、RSSI统计均值和捕获无线帧的总数,STA节点显示的数据项为MAC地址、RSSI统计均值和捕获无线帧的总数;步骤d)所述利用WLAN拓扑结构内的状态集对拓扑树列表进行周期性更新的处理,包括以下步骤:
d-1).获取现有拓扑树列表内的AP节点总数nNodesAP;
d-2).初始值设定,将AP链表的读取位置设置为链表头结点,设置AP节点标号iAP的初始值为“0”,RSSI的最大统计均值 的初始值为-90,执行步骤d-3);
d-3).判断遍历是否完成,判断AP链表是否遍历完成,如果完成,则执行步骤d-16);如果没有遍历完成,则执行步骤d-4);
d-4).在AP链表的当前处理位置读取一个节点,并设置iAP=iAP+1;获取AP状态集SAP(iAP)的MAC地址、信道号、SSID和捕获无线帧的总数,并基于奇异点滤除和均值处理方法计算其RSSI的统计均值,执行步骤d-5);
d-5).比较标号iAP与AP节点总数nNodesAP,判断iAP≤nNodesAP是否成立,如果成立,执行步骤d-6);如果不成立,则执行步骤d-7);
d-6).比较AP状态集SAP(iAP)与拓扑树列表内第iAP个AP节点的对应数据项,对于不一致的数据项进行更新;并获取拓扑树列表第iAP个AP节点的子节点总数nNodesSTA,执行步骤d-8);
d-7).利用SAP(iAP)构建新节点,加入现有拓扑树列表内AP列表的末端,执行步骤d-8);
d-8).初始化jSTA,将SAP(iAP).clients序列的元素标号jSTA设置为“1”,执行步骤d-9);
d-9).判断序列SAP(iAP).clients中的所有元素是否读取完毕,如果读取完毕,则执行步骤d-3);如果没有读取完毕,则执行步骤d-10);
d-10).读取序列SAP(iAP).clients的第jSTA个元素,获取STA状态集SSTA(jSTA)的MAC地址和捕获无线帧的总数,并基于奇异点滤除和均值处理方法计算其RSSI的统计均值执行步骤d-11);
d-11). 信 号 强 度 比 较,比 较 与 的大小,如果
则执行步骤d-12);如果 则以IAP和JSTA记
录iAP和jSTA的值,并设置 执行步骤d-12);
d-12).判断iAP≤nNodesAP是否成立,如果成立,执行步骤d-13);如果不成立,则执行步骤d-14);
d-13).判断jSTA≤nNodesSTA是否成立,如果成立,则比较SSTA(jSTA)与拓扑树列表第iAP个AP节点的第jSTA个子节点的对应数据项,并对不一致的数据项进行更新,执行步骤d-15);如果不成立,则执行步骤d-14);
d-14).利用SSTA(jSTA)构建新节点,加入拓扑树列表第iAP个AP节点的子节点列表的末端,执行步骤d-15);
d-15).设置jSTA=jSTA+1,跳转执行步骤d-9);
d-16).拓扑树列表内第IAP个AP节点下的第JSTA个STA节点,即为本T1周期内具有最大RSSI统计均值的第一类STA状态集,对其进行标记。
6.根据权利要求5所述的针对无线局域网特定目标用户的MAC地址捕获方法,其特征在于,设jSTA为在哈希表内所查找到的第二类STA状态集的标号, 为信号强度RSSI的最大统计均值;未关联列表内,各STA节点显示的数据项为MAC地址、RSSI统计均值和捕获无线帧的总数;步骤e)所述利用哈希表内的第二类STA状态集对未关联列表进行周期性更新的处理,包括以下步骤:
e-1).获取现有未关联列表内的STA节点总数nNodesSTA;将读取位置设为哈希表的起始位置;标号jSTA=0,最大RSSI统计均值
e-2).判断包含冲突链表在内的哈希表是否遍历完成,如果完成,则执行步骤e-7);如果没有遍历完成,则执行步骤e-3);
e-3).在哈希表的当前处理位置读取一个状态集S,判断该状态集是否满足S.flag=
0且S.type≠1的条件,如果不满足,则其不属于第二类STA状态集,跳转执行步骤e-2);
如果满足,则执行步骤e-4);
e-4).设置jSTA=jSTA+1;获取STA状态集SSTA(jSTA)的MAC地址和捕获无线帧的总数,并基于奇异点滤除和均值处理方法计算其RSSI的统计均值,执行步骤e-5);
e-5). 信号强度比较,比较 与 的大小,如果
则执行步骤e-6);如果 则以JSTA记录jSTA
的值,并设置 执行步骤e-6);
e-6).判断jSTA≤nNodesSTA是否成立,如果成立,则比较SSTA(jSTA)与未关联列表第jSTA个STA节点的对应数据项,并对不一致的数据项进行更新,执行步骤e-2);如果不成立,则利用SSTA(jSTA)构建新节点,加入现有未关联列表的末端,执行步骤e-2);
e-7).判断jSTA≤nNodesSTA是否成立,如果不成立,则执行步骤e-8);如果成立,删除现有未关联列表末端的(nNodesSTA-jSTA)个STA节点,执行步骤e-8);哈希表遍历完成后,这里jSTA记录了所查找到的第二类STA状态集的总数;
e-8).未关联列表的第JSTA个STA节点,即为本T2周期内具有最大RSSI统计均值的第二类STA状态集,对其进行标记。
7.根据权利要求6所述的针对无线局域网特定目标用户的MAC地址捕获方法,其特征在于,设ΔT为拓扑树列表内所标记的STA节点和未关联列表内所标记的STA节点都保持稳定的时间,当两者中的任一个发生改变时,ΔT都重置为0;步骤f)所述对特定目标用户MAC地址进行判定的处理,包括以下步骤:
f-1).判断稳定时间ΔT是否达到阈值T3,如果达到T3,则执行步骤f-2);如果未达到,则随机等待一段时间后再执行步骤f-1);
f-2).比较 和 值的大小,若 则将拓扑树列表内所标
记的STA节点确定为特定目标,返回其MAC地址;若 则将未关联列表内
所标记的STA节点确定为特定目标,返回其MAC地址。
一种针对无线局域网特定目标用户的MAC地址捕获方法\n技术领域\n[0001] 本发明涉及一种无线局域网取证方法,特别涉及一种在无线局域网中,以无痕\n迹、非介入的方式,快速捕获特定目标用户所使用的各种WLAN终端设备(智能手机、平板电\n脑、笔记本电脑等)的MAC地址的方法。\n背景技术\n[0002] 伴随中国“无线城市”建设的加快,基于Wi-Fi(Wireless Fidelity,无线保真)技\n术的WLAN(Wireless Local Area Network,无线局域网)已成为最普及的无线网络形式之\n一,其传输速率高、覆盖范围广、建设费用低,可较好地弥补3G网络无法满足数据流量激增\n的问题。然而,WLAN在为社会生活带来极大方便的同时,利用WLAN从事的各种非法行为也\n逐渐增多。因此,专用于WLAN的取证方法,已成为无线网络研究和计算机取证研究中共同\n亟待解决的问题。\n[0003] WLAN取证的一个典型应用需求是,针对特定的目标用户,以非介入、无痕迹的方\n式,快速捕获其所使用的WLAN终端设备的MAC(Medium Access Control,媒介访问控制)\n地址。该MAC地址是对WLAN终端设备内的无线网卡的惟一标识,由6字节的十六进制数字\n组成,如“00-A1-B0-BF-05-14”。\n[0004] 根据IEEE 802.11标准,WLAN中的AP(Access Point,访问接入点)和用户所使\n用的各种WLAN终端设备,可统称为STA(Station,站点);为示区别,后续表述中的STA专\n指用户终端设备。捕获特定目标STA的MAC地址,是进一步对其非法网络行为进行监控和\n取证的前提与基础。\n[0005] 当前,专用于WLAN取证的方法和技术尚不多,典型的如申请号为\n“200920222352.6”(无线网络检查取证系统)的专利所提供的系统,具备对大中型无线网络\n的AP/STA进行扫描,快速获取网络结构全局信息的功能,并可进行漏洞查找、权限控制和\n文件下载;但其无法适用于针对特定目标进行MAC地址捕获的应用需求。\n[0006] 相关的WLAN检测和监控方法主要分为以下几类。\n[0007] 1、状态监测类。例如申请号为“03812753.9”(确定在无线局域网中的状态)和申\n请号为“03812564.1”(监视局域网)的专利,提供了基于一个或多个STA与AP间所传输的\n无线帧来监视WLAN的方法,可建立AP/STA的完整数据库并确定STA的状态,从而对STA的\n连通性进行诊断。然而该类方法无法从多个STA中,对特定目标的MAC地址和正常用户的\nMAC地址进行区分。\n[0008] 2、安全检测类。例如申请号为“200810304369.6”(移动站、基地台及其侦测攻\n击的方法)的专利,提供了一种对取消关联或取消鉴权攻击进行检测的方法;申请号为\n“200610169954.0”(无线局域网中监控非法接入点的方法、设备及系统)的专利,提供了一\n种可在多个信道内防止合法用户与非法AP建立连接的方法。该类方法虽与WLAN安全和取\n证应用相关,但其并不适用于针对特定目标进行MAC地址捕获的场景。\n[0009] 3、目标定位类。例如申请号为“201010102025.4”(无线局域网中设备定位和跟踪\n方法及装置)和申请号为“200910147726.7”(一种无线局域网中的定位方法和装置)的专\n利,基于无线信号强度统计技术,分别提供了在无基础设施的场景和在已建立信号强度与\n位置的对应关系数据库的场景中,对目标STA/AP进行定位的方法。然而该类方法的本质是\n在已知特定目标MAC地址的情况下,对其所在位置进行检测,恰与本发明所提的WLAN取证\n场景相反。\n[0010] 综上所述,当前的各类WLAN取证与监测方法和技术,并不适用于针对特定目标进\n行MAC地址无痕捕获的应用需求。\n发明内容\n[0011] 本发明为了克服上述技术问题的缺点,提供了一种可快速捕获特定目标用户所使\n用的各种WLAN终端设备的MAC地址的方法。\n[0012] 本发明的针对无线局域网特定目标用户的MAC地址捕获方法,AP为WLAN中\n的访问接入点,STA为用户终端设备,RSSI为接收信号强度指标,其特别之处在于,\n依次包括以下步骤:a).数据获取,选取与特定目标STA相距较近、与其他用户相距\n较远的位置,基于信道扫描策略、时间阈值策略和数据量阈值策略,获取WLAN内通过\n空中链路传输的各类无线帧;b).基于哈希表构建状态集和更新RSSI序列,设集合 为一个STA或AP的状态信息的集合,称为“状态集”, 记作:\n[0013] \n[0014] 其中, 为长度为6字节的序列,存储STA/AP的MAC地址;由于MAC\n地址的惟一性,可将 作为对该状态集 的惟一标识; 为最大长度为\n的序列,存储已捕获的源MAC地址为 的各无线帧的RSSI值,各元\n素为-90至20之间的整数值,度量单位为dBm; 表示实体的类型, 表\n示其为AP, 表示其为STA, 表示其类型尚未确定; :仅当\n时有效,存储该AP的SSID; :仅当 时有效,存储该AP当\n前使用的无线信道号; :仅当 时有效,用于索引该AP的各STA子节\n点,是最大长度为 的序列,各元素分别为各子节点所对应的STA状态集的存储\n地址; 为布尔型数值,指示 内的各状态信息是否完备,当 时,用于指\n示是否已获取该AP的 和 数据项;当 时,用于指示是否已将\n该STA状态集的存储地址插入其父节点的 序列;针对步骤a)所获取的每个无\n线帧,基于哈希表内“MAC地址→状态集 存储地址”的直接映射,快速查找或构建该帧的\n源MAC地址 所对应的状态集 ,并将该帧的RSSI值 更新至序列 ;\nc).更新WLAN的拓扑结构:根据标志 ,确定是否处理状态集内与拓扑相关的数据项\n, , 和 ,根据帧类型和子帧类型,判定状态集类型以\n及STA/AP之间的关联关系,构建并更新基于“AP链表+ 序列”的WLAN拓扑结构;\nAP链表是一个线性链表,可对哈希表内的AP状态集进行索引,AP链表内各节点的结构为:\n[0015] \n[0016] d).以时间 为周期,对WLAN拓扑结构进行遍历,利用WLAN拓扑结构内的AP状\n态集和第一类STA状态集,更新现有拓扑树列表内的节点数据,并查找、标记RSSI统计均\n值 最大的STA;第一类STA状态集是 且 的状态集;拓扑树列表\n是采用树状分层列表的形式,对WLAN拓扑结构内的各AP状态集和第一类STA状态集的输\n出显示结果; 是对序列 内所有元素的统计均值;e).以时间 为周期,对哈希\n表内的第二类STA状态集进行遍历,利用第二类STA状态集,更新现有未关联列表内的节\n点数据,并查找、标记RSSI统计均值 最大的STA;第二类STA状态集是 且\n的状态集;未关联列表是采用单层列表的形式,对各第二类STA状态集的输出\n显示结果;f).判定特定目标用户的MAC地址,当步骤d)所述拓扑树列表内和步骤e)所述\n未关联列表内所标记的 最大的STA节点都保持稳定时,比较两个步骤中STA的RSSI统\n计均值,两者之中具有较大 的STA节点所对应的MAC地址,即为特定目标用户的MAC地\n址。\n[0017] AP为Access Point;STA为Station,这里专指用户终端设备;RSSI为Received \nSignal Strength Indicator,是对所接收WLAN无线信号的一种能量测度指标,所测得的关\n于某STA的RSSI,将随测量点与该STA之间距离的增大而减小;在步骤a)中,选取与特定\n目标STA相距较近、与其他用户相距较远的位置来捕获无线帧,故具有最大RSSI统计均值\n的STA所对应的MAC地址,即为特定目标用户的MAC地址。步骤b)中,将每个STA/AP状态\n集 作为一条记录,以 作为该记录的关键字,构建关于接收范围内各STA/AP状态\n集的哈希表,因此可实现由无线帧源MAC地址到所对应状态集在哈希表内的存储位置的直\n接映射。步骤c)中,AP链表可对AP状态集进行索引,AP状态集内的 序列可对\n其各STA子节点进行索引,因此可在稀疏度较大的哈希表内,为所出现的STA/AP状态集构\n建快速有效的索引。步骤d)和步骤e)对两类STA状态集采用不同的方法,分别周期性地\n统计与更新具有最大RSSI统计均值的STA状态集。步骤f)可将具有全局最大RSSI统计\n均值的STA判定为特定目标用户,从而获取其MAC地址。\n[0018] 本发明的针对无线局域网特定目标用户的MAC地址捕获方法,设置标志\n,若 ,表示从首个可用信道开始依次对所有信道进行扫\n描,若 ,表示对特定信道进行扫描;其特征在于,步骤a)所述数据获取\n包括以下步骤:a-1).判断信道扫描策略,判断 的值,若\n,将待扫描信道设置为全部可用信道中的首个信道;若 ,则将待扫描信\n道设置为输入值 所对应的信道;a-2).将工作模式设置为射频监听模式;该模\n式下可对当前扫描信道内各STA/AP传输的所有无线帧进行捕获;a-3).捕获无线帧并进\n行校验,捕获一个无线帧并进行CRC校验,如果经CRC校验不正确,则将该帧丢弃并重新捕\n获一个无线帧;如果CRC校验正确,则将该帧暂存至缓冲区,执行步骤a-4);a-4).捕获时\n间阈值的判断,判断捕获无线帧的时间是否达到捕获时间阈值 ,如果达到 ,则执行步骤\na-6);若未达到 ,则执行步骤a-5);a-5).捕获数据量阈值的判断,判断捕获无线帧的数\n据量是否达到捕获数据量阈值 ,如果达到 ,则执行步骤a-6);若未达到 ,则执行步\n骤a-3);a-6).提交数据,对暂存在缓冲区内的无线帧数据进行批量提交,执行步骤a-7);\na-7).判断 ,判断 的值,如果 ,则监听下一\n个可用信道;若 ,则重新对当前信道进行监听;执行步骤a-3)。\n[0019] 本发明的针对无线局域网特定目标用户的MAC地址捕获方法,步骤b)所述基于哈\n希表构建状态集和更新RSSI序列包括以下步骤:b-1).读取无线帧并判断其类型;从步骤\na)所提交的批量数据中读取一个无线帧,并判断其是否为控制帧中的CTS或ACK子帧,如\n果为CTS或ACK子帧,则重新执行步骤b-1);如果既不是CTS子帧也不是ACK子帧,则获取\n该帧的源MAC地址 和强度信号 ;这里CTS为Clear To Send的缩写,为清\n除待发子帧,ACK为Acknowledge的缩写,为确认子帧,这两种子帧内均不含源端的MAC地\n址;b-2).以 的后两字节计算源MAC对应的哈希地址 ,并判断\n该哈希地址处的记录是否为空,如果为空则执行步骤b-3);如果不为空,则执行步骤b-4);\nb-3).在哈希地址 处新建状态集 ,并对状态集 进行初始化,将\n作为 对应的状态集,执行步骤b-7);\n[0020] 由 映射到哈希地址的哈希函数可表示为:\n[0021] \n[0022] 对于MAC地址后两字节相同而造成哈希表冲突的所有状态集,都存储在同\n一线性链表中;b-4).判断是否存在哈希表冲突,将哈希地址 处的\n状态集记作 ,判断 是否成立,如果成立,则将 记作 ,作为\n对应的状态集,执行步骤b-7);如果不成立,则执行步骤b-5);b-5).遍历冲\n突链表,以 处的状态集为链表头结点,遍历读取链表节点内的状态集\n,查找是否存在 的状态集,如有满足条件的状态集存在,则将\n记作 ,作为 对应的状态集,执行步骤b-7);如果遍历完冲突链表,均没有\n满足条件的状态集存在,则执行步骤b-6);b-6).新建状态集,新建状态集 并将其\n添加至现有冲突链表的末端,并对状态集 进行初始化,将 作为 对应\n的状态集,执行步骤b-7);b-7).判断存储信号强度的序列是否已满,以 表\n示状态集 中 序列当前实际存储数据的长度, 为其最大长\n度, 为偶数;判断 是否成立,如果成立,则\n将该帧的 值插入序列 的末端,即存入 之中;如\n果不成立,表明 已达序列最大长度 ,则执行步骤b-8);b-8).\n释放序列的部分空间并存储 ,以 表示原序列, 表示更新后的\n序列;将 前半段数据的均值作为 的值,将 的后半段\n数据平移至 ,并将该帧的 插入\n之中。\n[0023] 本发明的针对无线局域网特定目标用户的MAC地址捕获方法,设所捕获无线帧的\n目的MAC地址为 , 为目的MAC地址 所对应的状态集;源MAC地址\n为 , 为源MAC地址 所对应的状态集;步骤c)所述更新WLAN的拓\n扑结构包括以下步骤:c-1).判断无线帧的类型,对于步骤b-1)所读取的无线帧,若为管\n理帧则执行步骤c-2),若为控制帧则执行步骤c-3),若为数据帧则执行步骤c-4);c-2).\n判断管理帧的子类型,若为探测请求则执行步骤c-2-1),若为信标则执行步骤c-2-2),若\n为探测响应则执行步骤c-2-3),若为关联响应或重新关联响应则执行步骤c-2-4),若为\n关联请求或重新关联请求则执行步骤c-2-5);c-2-1).判断 是否成立,如\n果成立,则令 ,返回步骤b-1);如果不成立,返回步骤b-1);c-2-2).判断\n是否成立,如果成立,返回步骤b-1);如果不成立,则执行步骤c-2-2-1);\nc-2-2-1).判断 是否成立,如果成立,设置 ,并将 的存储地\n址插入AP链表的末端,执行步骤c-2-2-2);如果不成立,则执行步骤c-2-2-2);c-2-2-2).\n根据帧体内容获取 和 的值,并设置 ,返回步骤\nb-1);c-2-3).判断 是否成立,如果成立,执行步骤c-2-3-3);如果不成立,\n则执行步骤c-2-3-1);c-2-3-1).判断 是否成立,如果不成立,则执行步骤\nc-2-3-2);如果成立,则先设置 ,并将 的存储地址插入AP链表的末端,再\n执行步骤c-2-3-2);c-2-3-2).根据帧体内容获取 和 的值,并设\n置 ,执行步骤c-2-3-3);c-2-3-3).基于哈希表查找目的MAC地址\n所对应的状态集 ,并判断状态集 中的 是否成立,如果成立,则设置\n,返回步骤b-1);如果不成立,返回步骤b-1);c-2-4).判断\n是否成立,如果不成立,则执行步骤c-2-4-1);如果成立,则设置 ,并将\n的存储地址插入AP链表的末端,再执行步骤c-2-4-1);c-2-4-1).基于哈希表查找目的\nMAC地址 所对应的状态集 ,并判断状态集 中的 是否成立,\n如果成立,则设置 ,返回步骤b-1);如果不成立,返回步骤b-1);c-2-5).\n判断 是否成立,如果不成立,则执行步骤c-2-5-1);如果成立,则先设置\n,再执行步骤c-2-5-1);c-2-5-1).基于哈希表查找目的MAC地址\n所对应的状态集 ,并判断 是否成立,如果成立,则返回步骤b-1);如果\n不成立,则执行步骤c-2-5-2);c-2-5-2).判断 是否成立,如果不成立,则\n执行步骤c-2-5-3);如果成立,则设置 ,并将 的存储地址插入AP链表\n的末端,再执行步骤c-2-5-3);c-2-5-3).判断 的内容是否为空,如果不为空,\n直接返回步骤b-1);如果为空,则根据帧体内容,获取 的值,再返回步骤b-1);\nc-3).判断控制帧的子类型,若为节能轮询,则基于哈希表查找目的MAC地址 所\n对应的状态集 ,执行步骤c-3-1);若为其它子类型,则返回步骤b-1);c-3-1).判断\n是否成立,如果成立,则执行步骤c-3-4);如果不成立,则执行步骤c-3-2);\nc-3-2).判断 是否成立,如果不成立,则执行步骤c-3-3);如果成立,先设\n置 ,再执行步骤c-3-3);c-3-3).将 的存储地址插入其父节点 内\n序列的末端,且序列 的长度 增加1;并设置 ,\n执行步骤c-3-4);c-3-4).判断 是否成立,如果不成立,返回步骤b-1);如\n果成立,则设置 ,并将 的存储地址插入AP链表的末端,返回步骤b-1);\nc-4).基于哈希表,查找目的MAC地址 对应的状态集 ;判断数据帧的传\n输方向,若为上行帧则执行步骤c-4-1);若其为下行帧则执行步骤c-4-2);c-4-1).判\n断 是否成立,如果成立,则执行步骤c-4-1-3);如果不成立,则执行步骤\nc-4-1-1);c-4-1-1).判断 是否成立,如果不成立,则执行步骤c-4-1-2);如\n果成立,则先设置 ,再执行步骤c-4-1-2);c-4-1-2).将 的存储地址插\n入其父节点 内 序列的末端,且序列 的长度 增加1;设\n置 ,执行步骤c-4-1-3);c-4-1-3).判断 是否成立,如果不成\n立,则返回步骤b-1);如果成立,则设置 ,并将 的存储地址插入AP链表\n的末端,返回步骤b-1);c-4-2).判断 是否成立,如果不成立,则执行步骤\nc-4-2-1);如果成立,则设置 ,并将 的存储地址插入AP链表的末端,执\n行步骤c-4-2-1);c-4-2-1).判断 是否成立,如果成立,则返回步骤b-1);如\n果不成立,则执行步骤c-4-2-2);c-4-2-2).判断 是否成立,如果不成立,则\n执行步骤c-4-2-3);如果成立,则先设置 ,再执行步骤c-4-2-3);c-4-2-3).\n将 的存储地址插入其父节点 内 序列的末端,且序列 的长度\n增加1;设置 ,返回步骤b-1)。\n[0024] 本发明的针对无线局域网特定目标用户的MAC地址捕获方法,设 为AP链\n表内节点的标号, 为AP链表内第 个节点所索引的AP状态集, 为\n序列内元素的标号, 为 序列内第 个元\n素所索引的STA状态集, 为信号强度RSSI的最大统计均值;拓扑树列表内,各AP状\n态集位于父节点列表层,各第一类STA状态集位于对应AP下的子节点列表层,AP节点显示\n的数据项为MAC地址、信道号、SSID、RSSI统计均值和捕获无线帧的总数,STA节点显示的数\n据项为MAC地址、RSSI统计均值和捕获无线帧的总数;步骤d)所述利用WLAN拓扑结构内\n的状态集对拓扑树列表进行周期性更新的处理,包括以下步骤:d-1).获取现有拓扑树列\n表内的AP节点总数 ;d-2).初始值设定,将AP链表的读取位置设置为链表头结\n点,设置AP节点标号 的初始值为“0”,RSSI的最大统计均值 的初始值为-90,执\n行步骤d-3);d-3).判断遍历是否完成,判断AP链表是否遍历完成,如果完成,则执行步骤\nd-16);如果没有遍历完成,则执行步骤d-4);d-4).在AP链表的当前处理位置读取一个节\n点,并设置 ;获取AP状态集 的MAC地址、信道号、SSID和捕获无线帧\n的总数,并基于奇异点滤除和均值处理方法计算其RSSI的统计均值,执行步骤d-5);d-5).\n比较标号 与AP节点总数 ,判断 是否成立,如果成立,执行步\n骤d-6);如果不成立,则执行步骤d-7);d-6).比较AP状态集 与拓扑树列表内\n第 个AP节点的对应数据项,对于不一致的数据项进行更新;并获取拓扑树列表第 个\nAP节点的子节点总数 ,执行步骤d-8);d-7).利用 构建新节点,加入\n现有拓扑树列表内AP列表的末端,执行步骤d-8);d-8).初始化 ,将\n序列的元素标号 设置为“1”,执行步骤d-9);d-9).判断序列 中的\n所有元素是否读取完毕,如果读取完毕,则执行步骤d-3);如果没有读取完毕,则执行步骤\nd-10);d-10).读取序列 的第 个元素,获取STA状态集\n的MAC地址和捕获无线帧的总数,并基于奇异点滤除和均值处理方法计算其RSSI的统计\n均值 ,执行步骤d-11);d-11).信号强度比较,比较 与\n的大小,如果 ,则执行步骤d-12);如果 ,\n则以 和 记录 和 的值,并设置 ,执行步骤d-12);\nd-12).判断 是否成立,如果成立,执行步骤d-13);如果不成立,则执行\n步骤d-14);d-13).判断 是否成立,如果成立,则比较 与拓\n扑树列表第 个AP节点的第 个子节点的对应数据项,并对不一致的数据项进行更\n新,执行步骤d-15);如果不成立,则执行步骤d-14);d-14).利用 构建新节\n点,加入拓扑树列表第 个AP节点的子节点列表的末端,执行步骤d-15);d-15).设置\n,跳转执行步骤d-9);d-16).拓扑树列表内第 个AP节点下的第 个\nSTA节点,即为本 周期内具有最大RSSI统计均值的第一类STA状态集,对其进行标记。\n[0025] 本发明的针对无线局域网特定目标用户的MAC地址捕获方法,设 为在哈希\n表内所查找到的第二类STA状态集的标号, 为信号强度RSSI的最大统计均值;未\n关联列表内,各STA节点显示的数据项为MAC地址、RSSI统计均值和捕获无线帧的总数;\n步骤e)所述利用哈希表内的第二类STA状态集对未关联列表进行周期性更新的处理,包\n括以下步骤:e-1).获取现有未关联列表内的STA节点总数 ;将读取位置设为\n哈希表的起始位置;标号 ,最大RSSI统计均值 ;e-2).判断包含\n冲突链表在内的哈希表是否遍历完成,如果完成,则执行步骤e-7);如果没有遍历完成,\n则执行步骤e-3);e-3).在哈希表的当前处理位置读取一个状态集 ,判断该状态集是\n否满足 且 的条件,如果不满足,则其不属于第二类STA状态集,跳\n转执行步骤e-2);如果满足,则执行步骤e-4);e-4).设置 ;获取STA状态\n集 的MAC地址和捕获无线帧的总数,并基于奇异点滤除和均值处理方法计算\n其RSSI的统计均值,执行步骤e-5);e-5).信号强度比较,比较 与\n的大小,如果 ,则执行步骤e-6);如果\n,则以 记录 的值,并设置 ,执行步骤e-6);e-6).判断\n是否成立,如果成立,则比较 与未关联列表第 个STA\n节点的对应数据项,并对不一致的数据项进行更新,执行步骤e-2);如果不成立,则利\n用 构建新节点,加入现有未关联列表的末端,执行步骤e-2);e-7).判断\n是否成立,如果不成立,则执行步骤e-8);如果成立,删除现有未关联列\n表末端的 个STA节点,执行步骤e-8);哈希表遍历完成后,这里 记\n录了所查找到的第二类STA状态集的总数;e-8).未关联列表的第 个STA节点,即为本\n周期内具有最大RSSI统计均值的第二类STA状态集,对其进行标记。\n[0026] 本发明的针对无线局域网特定目标用户的MAC地址捕获方法,设 为拓扑树列\n表内所标记的STA节点和未关联列表内所标记的STA节点都保持稳定的时间,当两者中\n的任一个发生改变时, 都重置为0;步骤f)所述对特定目标用户MAC地址进行判定的\n处理,包括以下步骤:f-1).判断稳定时间 是否达到阈值 ,如果达到 ,则执行步骤\nf-2);如果未达到,则随机等待一段时间后再执行步骤f-1);f-2).比较 和\n值的大小,若 ,则将拓扑树列表内所标记的STA节点确定为特定目标,返\n回其MAC地址;若 ,则将未关联列表内所标记的STA节点确定为特定目标,\n返回其MAC地址。\n[0027] 本发明的有益效果是:支持当前的各种WLAN标准(IEEE 802.11 a/b/g/n),可在\nWLAN中快速捕获特定目标STA的MAC地址,以对WLAN中的非法活动进行有效的检测和取\n证,并保证取证工作的无痕化。\n[0028] 具有以下四方面的优势:\n[0029] 1、多用户适用性。即该方法可在WLAN中同时存在多个用户的情况下,对特定目标\nSTA与正常用户STA的MAC进行准确分辨,基于对WLAN全局信息的分析处理,惟一捕获特定\n目标STA的MAC地址。\n[0030] 2、网络连通适用性。即该方法既适用于特定目标STA已连接WLAN的情况,又适用\n于特定目标STA尚未接入任何WLAN(但其WLAN功能已开启)的情况。前者可获取特定目\n标STA的MAC地址、所用信道以及所连接AP的完整信息;后者至少可获取特定目标STA自\n身的MAC地址。\n[0031] 3、无线数据量适用性。即该方法既适用于WLAN处于高负荷、所传输无线数据较多\n的情况,又适用于WLAN处于低负荷、所传输无线数据较少的情况。前者具备针对大量数据\n进行快速处理的功能;后者具备基于有限数据进行信息的“尽力”提取的功能。\n[0032] 4、取证快速性与无痕性。即该方法可在短时间内(可接受范围为30~60秒)快速完\n成对特定目标MAC地址的捕获,而无须在WLAN中检测过长时间;另一方面,该方法对硬件配\n置的要求较低,可在便携式的手持设备实现,以做到取证的无痕化。\n附图说明\n[0033] 图1为本发明的MAC地址捕获方法的原理框图;\n[0034] 图2为本发明中WLAN数据获取方法的流程图;\n[0035] 图3为本发明中基于哈希表的状态集构建与RSSI序列更新方法的流程图;\n[0036] 图4为本发明中基于管理帧的WLAN拓扑结构更新方法的流程图;\n[0037] 图5为本发明中基于控制帧的WLAN拓扑结构更新方法的流程图;\n[0038] 图6为本发明中基于数据帧的WLAN拓扑结构更新方法的流程图;\n[0039] 图7为利用WLAN拓扑结构内的状态集对拓扑树列表进行周期性更新方法的流程\n图。\n[0040] 图8为利用哈希表内的第二类STA状态集对未关联列表进行周期性更新方法的流\n程图。\n具体实施方式\n[0041] 下面结合附图与实施例对本发明作进一步说明。\n[0042] 如图1所示,给出了本发明的MAC地址捕获方法的原理框图,由数据获取和数据处\n理两部分组成。“数据获取”模块可根据所选取的信道扫描策略,在射频监听工作模式下,捕\n获各类IEEE 802.11无线帧;经CRC校验后,基于特定的时间阈值策略和数据量阈值策略,\n将获取的数据提交至数据处理模块。“数据处理”部分包括三个子模块:(1)状态集构建与\nRSSI序列更新子模块,可基于哈希表实现“MAC地址→状态集存储地址”的直接映射,针对\n每个无线帧,快速查找或创建其源端所对应的状态集,将其RSSI值快速更新至状态集内的\nRSSI序列;并可基于链地址方法进行哈希冲突处理。(2)WLAN拓扑结构更新子模块,可基\n于“AP链表+ 序列”为所出现的STA/AP状态集构建快速有效的索引结构,并基\n于状态集完备标志,确定对状态集内与拓扑相关的数据项进行处理的策略,从而根据不同\n的帧类型和子帧类型,判定状态集类型以及STA/AP之间的关联关系。(3)MAC地址捕获结\n果的周期性统计、输出与更新子模块,可基于奇异值滤除和均值处理对各状态集的RSSI序\n列进行统计;可采用树状分层列表输出WLAN拓扑结构内的AP状态集和第一类STA状态集,\n以 为周期更新拓扑树列表的节点数据,并标记具有最大RSSI统计均值的STA;可采用未\n关联列表输出哈希表内的第二类STA状态集,以 为周期更新节点数据,并标记具有最大\nRSSI统计均值的STA;经若干更新周期,拓扑树列表与未关联列表内的RSSI最大者,即被确\n定为特定目标用户。\n[0043] 本发明的针对无线局域网特定目标用户的MAC地址捕获方法,AP为WLAN中的访\n问接入点,STA为用户终端设备,RSSI为接收信号强度指标,依次包括以下步骤:\n[0044] a).数据获取,选取与特定目标STA相距较近、与其他用户相距较远的位置,基于\n信道扫描策略、时间阈值策略和数据量阈值策略,获取WLAN内通过空中链路传输的各类无\n线帧;\n[0045] 如图2所示,给出了WLAN数据获取方法的流程图,设置标志\n,若 ,表示从首个可用信道开始依次对所有信道进行扫描,若\n,表示对特定信道进行扫描;其可采用以下步骤来实现:\n[0046] a-1).判断信道扫描策略,判断 的值,若 ,将待扫\n描信道设置为全部可用信道中的首个信道;若 ,则将待扫描信道设置为\n输入值 所对应的信道;\n[0047] a-2).将工作模式设置为射频监听模式;该模式下可对当前扫描信道内各STA/AP\n传输的所有无线帧进行捕获;\n[0048] a-3).捕获无线帧并进行校验,捕获一个无线帧并进行CRC校验,如果经CRC校\n验不正确,则将该帧丢弃并重新捕获一个无线帧;如果CRC校验正确,则将该帧暂存至缓冲\n区,执行步骤a-4);\n[0049] a-4).捕获时间阈值的判断,判断捕获无线帧的时间是否达到捕获时间阈值 ,如\n果达到 ,则执行步骤a-6);若未达到 ,则执行步骤a-5);\n[0050] a-5).捕获数据量阈值的判断,判断捕获无线帧的数据量是否达到捕获数据量阈\n值 ,如果达到 ,则执行步骤a-6);若未达到 ,则执行步骤a-3);\n[0051] a-6).提交数据,对暂存在缓冲区内的无线帧数据进行批量提交,执行步骤a-7);\n[0052] a-7).判断 ,判断 的值,如果 ,则\n监听下一个可用信道;若 ,则重新对当前信道进行监听;执行步骤a-3)。\n[0053] b).基于哈希表构建状态集和更新RSSI序列,设集合 为一个STA或AP的状态\n信息的集合,称为“状态集”, 记作:\n[0054] \n[0055] 其中, 为 长度 为6字 节的 序 列,存 储STA/AP的MAC地 址,如\n;由于MAC地址的惟一性,可将\n作为对该状态集 的惟一标识; 为最大长度为 的序列,\n存储已捕获的源MAC地址为 的各无线帧的RSSI值,各元素为-90至20之间的整\n数值,度量单位为dBm; 表示实体的类型, 表示其为AP, 表\n示其为STA, 表示其类型尚未确定; :仅当 时有效,存储该\nAP的SSID;SSID为Service Set Identifier的缩写,为服务集标识; :仅当\n时有效,存储该AP当前使用的无线信道号; :仅当 时有\n效,用于索引该AP的各STA子节点,是最大长度为 的序列,各元素分别为各子\n节点所对应的STA状态集的存储地址; 为布尔型数值,取值为0或1,指示 内的各\n状态信息是否完备,当 时,用于指示是否已获取该AP的 和\n数据项;当 时,用于指示是否已将该STA状态集的存储地址插入其父节点的\n序列;\n[0056] 针对步骤a)中捕获到的每个无线帧,基于哈希表内“MAC地址→状态集 存储地\n址”的直接映射,快速查找或构建该帧的源MAC地址 所对应的状态集 ,并将该\n帧的RSSI值 更新至序列 ;\n[0057] 如图3所示,给出了本发明中基于哈希表的状态集构建与RSSI序列更新方法的流\n程图,其可采用以下步骤来实现:\n[0058] b-1).读取无线帧并判断其类型;从步骤a)所提交的批量数据中读取一个无线\n帧,并判断其是否为控制帧中的CTS或ACK子帧,如果为CTS或ACK子帧,则重新执行步骤\nb-1);如果既非CTS子帧也非ACK子帧,则获取该帧的源MAC地址 和强度信号\n;这里CTS为Clear To Send的缩写,为清除待发子帧,ACK为Acknowledge的缩写,\n为确认子帧,这两种子帧内均不含源端的MAC地址;\n[0059] b-2).以 的后两字节计算源MAC对应的哈希地址 ,并\n判断该哈希地址处的记录是否为空,如果为空则执行步骤b-3);如果不为空,则执行步骤\nb-4);\n[0060] b-3).在哈希地址 处新建状态集 ,并对状态集 进行初\n始化,将 作为 对应的状态集,执行步骤b-7);\n[0061] 由 映射到哈希地址的哈希函数可表示为:\n[0062] \n[0063] 对于MAC地址后两字节相同而造成哈希表冲突的所有状态集,都存储在同一线性\n链表中;\n[0064] b-4).判断是否存在哈希表冲突,将哈希地址 处的状态集记作\n,判断 是否成立,如果成立,则将 记作 ,作为 对应\n的状态集,执行步骤b-7);如果不成立,则执行步骤b-5);\n[0065] b-5).遍历冲突链表,以 处的状态集为链表头结点,遍历读取\n链表节点内的状态集 ,查找是否存在 的状态集,如有满足条件的状\n态集存在,则将 记作 ,作为 对应的状态集,执行步骤b-7);如果遍历完冲\n突链表,均没有满足条件的状态集存在,则执行步骤b-6);\n[0066] b-6).新建状态集,新建状态集 并将其添加至现有冲突链表的末端,并对状态\n集 进行初始化,将 作为 对应的状态集,执行步骤b-7);\n[0067] b-7).判断存储信号强度的序列是否已满,以 表示状态集 中\n序列当前实际存储数据的长度, 为其最大长度,\n为偶数;判断 是否成立,如果成立,则将该帧的 值插入序\n列 的末端,即存入 之中;如果不成立,表明 已\n达序列最大长度 ,则执行步骤b-8);\n[0068] b-8).释放序列的部分空间并存储 ,以 表示原序列, 表\n示更新后的序列;将 前半段数据的均值作为 的值,将 的\n后半段数据平移至 ,并将该帧的 插\n入 之中,即\n[0069] \n[0070] c).更新WLAN的拓扑结构:根据状态集完备标志 ,确定是否处理状态集内\n与拓扑相关的数据项 , , 和 ,根据帧类型和子帧类\n型,判定状态集类型以及STA/AP之间的关联关系,构建并更新基于“AP链表+\n序列”的WLAN拓扑结构;AP链表是一个线性链表,可对哈希表内的AP状态集进行索引,AP\n链表内各节点的结构为:\n[0071] \n[0072] 如图4、图5和图6所示,分别给出了本发明中基于管理帧、控制帧和数据帧的\nWLAN拓扑结构更新方法的流程图;\n[0073] 设所捕获无线帧的目的MAC地址为 , 为目的MAC地址 所\n对应的状态集;源MAC地址为 , 为源MAC地址 所对应的状态集;步\n骤c)所述更新WLAN的拓扑结构,可采用以下步骤来实现:\n[0074] c-1).判断无线帧的类型,对于步骤b-1)所读取的无线帧,若为管理帧则执行步\n骤c-2),若为控制帧则执行步骤c-3),若为数据帧则执行步骤c-4);\n[0075] c-2).判断管理帧的子类型,若为探测请求则执行步骤c-2-1),若为信标则执行\n步骤c-2-2),若为探测响应则执行步骤c-2-3),若为关联响应或重新关联响应则执行步骤\nc-2-4),若为关联请求或重新关联请求则执行步骤c-2-5);\n[0076] c-2-1).判断 是否成立,如果成立,则令 ,返回步骤\nb-1);如果不成立,返回步骤b-1);\n[0077] c-2-2).判断 是否成立,如果成立,返回步骤b-1);如果不成立,则\n执行步骤c-2-2-1);\n[0078] c-2-2-1).判断 是否成立,如果成立,设置 ,并将\n的存储地址插入AP链表的末端,执行步骤c-2-2-2);如果不成立,则执行步骤c-2-2-2);\n[0079] c-2-2-2).根据帧体内容获取 和 的值,并设置\n,返回步骤b-1);\n[0080] c-2-3).判断 是否成立,如果成立,执行步骤c-2-3-3);如果不成\n立,则执行步骤c-2-3-1);\n[0081] c-2-3-1).判断 是否成立,如果不成立,则执行步骤c-2-3-2);如\n果成立,则先设置 ,并将 的存储地址插入AP链表的末端,再执行步骤\nc-2-3-2);\n[0082] c-2-3-2).根据帧体内容获取 和 的值,并设置\n,执行步骤c-2-3-3);\n[0083] c-2-3-3).基于哈希表查找目的MAC地址 所对应的状态集 ,并判断\n状态集 中的 是否成立,如果成立,则设置 ,返回步骤b-1);\n如果不成立,返回步骤b-1);\n[0084] c-2-4).判断 是否成立,如果不成立,则执行步骤c-2-4-1);如果成\n立,则设置 ,并将 的存储地址插入AP链表的末端,再执行步骤c-2-4-1);\n[0085] c-2-4-1).基于哈希表查找目的MAC地址 所对应的状态集 ,并判断\n状态集 中的 是否成立,如果成立,则设置 ,返回步骤b-1);\n如果不成立,返回步骤b-1);\n[0086] c-2-5).判断 是否成立,如果不成立,则执行步骤c-2-5-1);如果成\n立,则先设置 ,再执行步骤c-2-5-1);\n[0087] c-2-5-1).基于哈希表查找目的MAC地址 所对应的状态集 ,并判断\n是否成立,如果成立,则返回步骤b-1);如果不成立,则执行步骤c-2-5-2);\n[0088] c-2-5-2).判断 是否成立,如果不成立,则执行步骤c-2-5-3);\n如果成立,则设置 ,并将 的存储地址插入AP链表的末端,再执行步骤\nc-2-5-3);\n[0089] c-2-5-3).判断 的内容是否为空,如果不为空,直接返回步骤b-1);如果\n为空,则根据帧体内容,获取 的值,再返回步骤b-1);\n[0090] c-3).判断控制帧的子类型,若为节能轮询,则基于哈希表查找目的MAC地址\n所对应的状态集 ,执行步骤c-3-1);若为其它子类型,则返回步骤b-1);\n[0091] c-3-1).判断 是否成立,如果成立,则执行步骤c-3-4);如果不成\n立,则执行步骤c-3-2);\n[0092] c-3-2).判断 是否成立,如果不成立,则执行步骤c-3-3);如果成\n立,先设置 ,再执行步骤c-3-3);\n[0093] c-3-3).将 的存储地址插入其父节点 内 序列的末端,且序列\n的长度 增加1;并设置 ,执行步骤c-3-4);\n[0094] c-3-4).判断 是否成立,如果不成立,返回步骤b-1);如果成立,则\n设置 ,并将 的存储地址插入AP链表的末端,返回步骤b-1);\n[0095] c-4).基于哈希表,查找目的MAC地址 对应的状态集 ;判断数据帧\n的传输方向,若为上行帧则执行步骤c-4-1);若其为下行帧则执行步骤c-4-2);\n[0096] c-4-1).判断 是否成立,如果成立,则执行步骤c-4-1-3);如果不成\n立,则执行步骤c-4-1-1);\n[0097] c-4-1-1).判断 是否成立,如果不成立,则执行步骤c-4-1-2);如果\n成立,则先设置 ,再执行步骤c-4-1-2);\n[0098] c-4-1-2).将 的存储地址插入其父节点 内 序列的末端,且序列\n的长度 增加1;设置 ,执行步骤c-4-1-3);\n[0099] c-4-1-3).判断 是否成立,如果不成立,则返回步骤b-1);如果成\n立,则设置 ,并将 的存储地址插入AP链表的末端,返回步骤b-1);\n[0100] c-4-2).判断 是否成立,如果不成立,则执行步骤c-4-2-1);如果成\n立,则设置 ,并将 的存储地址插入AP链表的末端,执行步骤c-4-2-1);\n[0101] c-4-2-1).判断 是否成立,如果成立,则返回步骤b-1);如果不成\n立,则执行步骤c-4-2-2);\n[0102] c-4-2-2).判断 是否成立,如果不成立,则执行步骤c-4-2-3);如果\n成立,则先设置 ,再执行步骤c-4-2-3);\n[0103] c-4-2-3).将 的存储地址插入其父节点 内 序列的末端,且序列\n的长度 增加1;设置 ,返回步骤b-1)。\n[0104] d).以时间 为周期,对WLAN拓扑结构进行遍历,利用WLAN拓扑结构内的AP状\n态集和第一类STA状态集,更新现有拓扑树列表内的节点数据,并查找、标记RSSI统计均值\n最大的STA;第一类STA状态集是 且 的状态集;拓扑树列表是\n采用树状分层列表的形式,对WLAN拓扑结构内的各AP状态集和第一类STA状态集的输出\n显示结果; 是对序列 内所有元素的统计均值;\n[0105] 如图7所示,给出了利用WLAN拓扑结构内的状态集对拓扑树列表进行周期性更新\n方法的流程图;\n[0106] 设 为AP链表内节点的标号, 为AP链表内第 个节点所索引的AP\n状态集, 为 序列内元素的标号, 为 序\n列内第 个元素所索引的STA状态集, 为信号强度RSSI的最大统计均值;拓扑树\n列表内,各AP状态集位于父节点列表层,各第一类STA状态集位于对应AP下的子节点列表\n层,AP节点显示的数据项为MAC地址、信道号、SSID、RSSI统计均值和捕获无线帧的总数,\nSTA节点显示的数据项为MAC地址、RSSI统计均值和捕获无线帧的总数;步骤d)所述利用\nWLAN拓扑结构内的状态集对拓扑树列表进行周期性更新的处理,可采用以下步骤来实现:\n[0107] d-1). 获取现有拓扑树列表内的AP节点总数 ;\n[0108] d-2).初始值设定,将AP链表的读取位置设置为链表头结点,设置AP节点标号\n的初始值为“0”, RSSI的最大统计均值 的初始值为-90,执行步骤d-3);\n[0109] d-3).判断遍历是否完成,判断AP链表是否遍历完成,如果完成,则执行步骤\nd-16);如果没有遍历完成,则执行步骤d-4);\n[0110] d-4).在AP链表的当前处理位置读取一个节点,并设置 ;获取AP状\n态集 的MAC地址、信道号、SSID和捕获无线帧的总数,并基于奇异点滤除和均值\n处理方法计算其RSSI的统计均值,执行步骤d-5);\n[0111] d-5).比较标号 与AP节点总数 ,判断 是否成立,如\n果成立,执行步骤d-6);如果不成立,则执行步骤d-7);\n[0112] d-6).比较AP状态集 与拓扑树列表内第 个AP节点的对应数据项,对\n于不一致的数据项进行更新;并获取拓扑树列表第 个AP节点的子节点总数\n,执行步骤d-8);\n[0113] d-7).利用 构建新节点,加入现有拓扑树列表内AP列表的末端,执行步\n骤d-8);\n[0114] d-8).初始化 ,将 序列的元素标号 设置为“1”,执行步\n骤d-9);\n[0115] d-9).判断序列 中的所有元素是否读取完毕,如果读取完毕,则\n执行步骤d-3);如果没有读取完毕,则执行步骤d-10);\n[0116] d-10).读取序列 的第 个元素,获取STA状态集\n的MAC地址和捕获无线帧的总数,并基于奇异点滤除和均值处理方法计算其RSSI的统计均\n值 ,执行步骤d-11);\n[0117] d-11).信 号 强 度 比 较,比 较 与 的大小,如果\n,则执行步骤d-12);如果 ,则以 和\n记录 和 的值,并设置 ,执行步骤d-12);\n[0118] d-12).判断 是否成立,如果成立,执行步骤d-13);如果不成立,\n则执行步骤d-14);\n[0119] d-13).判断 是否成立,如果成立,则比较 与拓扑树\n列表第 个AP节点的第 个子节点的对应数据项,并对不一致的数据项进行更新,执\n行步骤d-15);如果不成立,则执行步骤d-14);\n[0120] d-14).利用 构建新节点,加入拓扑树列表第 个AP节点的子节点列\n表的末端,执行步骤d-15);\n[0121] d-15).设置 ,跳转执行步骤d-9);\n[0122] d-16).拓扑树列表内第 个AP节点下的第 个STA节点,即为本 周期内具\n有最大RSSI统计均值的第一类STA状态集,对其进行标记。\n[0123] e).以时间 为周期,对哈希表内的第二类STA状态集进行遍历,利用第二类STA\n状态集,更新现有未关联列表内的节点数据,并查找、标记RSSI统计均值 最大的STA;\n第二类STA状态集是 且 的状态集;未关联列表是采用单层列表的\n形式,对各第二类STA状态集的输出显示结果;\n[0124] 如图8所示,给出了利用哈希表内的第二类STA状态集对未关联列表进行周期性\n更新方法的流程图;\n[0125] 设 为在哈希表内所查找到的第二类STA状态集的标号, 为信号强度\nRSSI的最大统计均值;未关联列表内,各STA节点显示的数据项为MAC地址、RSSI统计均值\n和捕获无线帧的总数;步骤e)所述利用哈希表内的第二类STA状态集对未关联列表进行周\n期性更新的处理,可采用以下步骤来实现:\n[0126] e-1). 获取现有未关联列表内的STA节点总数 ;将读取位置设为哈希\n表的起始位置;标号 ,最大RSSI统计均值 ;\n[0127] e-2).判断包含冲突链表在内的哈希表是否遍历完成,如果完成,则执行步骤\ne-7);如果没有遍历完成,则执行步骤e-3);\n[0128] e-3).在哈希表的当前处理位置读取一个状态集 ,判断该状态集是否满足\n且 的条件,如果不满足,则其不属于第二类STA状态集,跳转执行步\n骤e-2);如果满足,则执行步骤e-4);\n[0129] e-4).设置 ;获取STA状态集 的MAC地址和捕获无线帧\n的总数,并基于奇异点滤除和均值处理方法计算其RSSI的统计均值,执行步骤e-5);\n[0130] e-5).信号强度比较,比较 与 的大小,如果\n,则执行步骤e-6);如果 ,则以 记录\n的值,并设置 ,执行步骤e-6);\n[0131] e-6).判断 是否成立,如果成立,则比较 与未关联列\n表第 个STA节点的对应数据项,并对不一致的数据项进行更新,执行步骤e-2);如果不\n成立,则利用 构建新节点,加入现有未关联列表的末端,执行步骤e-2);\n[0132] e-7).判断 是否成立,如果不成立,则执行步骤e-8);如果成\n立,删除现有未关联列表末端的 个STA节点,执行步骤e-8);哈希表遍\n历完成后,这里 记录了所查找到的第二类STA状态集的总数;\n[0133] e-8).未关联列表的第 个STA节点,即为本 周期内具有最大RSSI统计均值\n的第二类STA状态集,对其进行标记。\n[0134] f).判定特定目标用户的MAC地址,当步骤d)所述拓扑树列表内和步骤e)所述\n未关联列表内所标记的 最大的STA节点都保持稳定时,比较两个步骤中STA的RSSI统\n计均值,两者之中具有较大 的STA节点所对应的MAC地址,即为特定目标用户的MAC地\n址。\n[0135] 设 为拓扑树列表内所标记的STA节点和未关联列表内所标记的STA节点都保\n持稳定的时间,当两者中的任一个发生改变时, 都重置为0;步骤f)所述对特定目标用\n户MAC地址进行判定的处理,可采用以下步骤来实现:\n[0136] f-1).判断稳定时间 是否达到阈值 ,如果达到 ,则执行步骤f-2);如果\n未达到,则随机等待一段时间后再执行步骤f-1);\n[0137] f-2).比较 和 值的大小,若 ,则将拓扑树列表内\n所标记的STA节点确定为特定目标,返回其MAC地址;若 ,则将未关联列表\n内所标记的STA节点确定为特定目标,返回其MAC地址。\n[0138] 其中:\n[0139] 对于步骤a),在全部可用信道或指定信道内,有效获取通过空中链路传输的各类\n无线帧(包括5 GHz频段符合802.11 a标准、2.4 GHz频段802.11 b/g标准和2.4/5 GHz\n频段802.11n标准的无线管理帧、控制帧和数据帧),是对特定目标STA的MAC地址进行捕\n获的基础和前提。\n[0140] 对于步骤b),将各无线帧的RSSI值快速更新至源MAC地址所对应状态集内的\n序列,是高效、准确地实现基于RSSI的MAC地址捕获方法的核心问题。\n[0141] 优选地,将每个STA/AP状态集 作为一条“记录”,以 作为该记录的“关\n键字”,构建关于数据获取模块接收范围内各STA/AP状态集的哈希表,可实现由无线帧的\n源MAC地址到所对应状态集在哈希表内的存储位置的直接映射。由于MAC地址由6字节\n(48比特)组成,共存在 种可能的取值,因此无法直接将其用作哈希地址;\n可取其最后两字节( 的第5, 6个元素)作为哈希地址,由此所构建哈希表的长度为\n,例如,对于MAC地址“00-A1-B0-BF-05-14”,可直接确定其所对应的状态集在\n哈希表内的位置,即 。\n[0142] 然而当几个STA/AP的MAC地址的后两字节相同时,其状态集将具有相同的哈希地\n址,如MAC地址为“00-A1-B0-BF-05-14”和“8C-A9-82-65-05-14”的两个STA状态集的哈\n希地址均为1300,从而导致哈希表冲突问题。\n[0143] 优选地,采用基于链地址的哈希表冲突处理方法,将MAC地址后两字节相同的所\n有STA/AP状态集,都存储在同一线性链表中。由于哈希函数 是均匀的,因\n此在哈希表和冲突链表内查找符合 的状态集,查找成功和失败时的平\n均查找长度分别为\n[0144] ,\n[0145] 式中 表示哈希表的装填因子(填入记录数/哈希表长)。通常数据获取模块接收\n范围内的STA/AP数量远远小于哈希表长,因此 和 都近似为1,可见该方法具有\n非常高的查找效率。\n[0146] 由于该方法可针对捕获的大量无线帧进行高效、快速的状态集查找和更新,因此\n其具有“无线数据量适用性”的优势。\n[0147] 对于步骤c),构建WLAN网络拓扑结构的必要性在于:(1)可在稀疏度较大的哈希\n表内,为所出现的STA/AP状态集建立有效的索引结构,以快速遍历各状态集并获取RSSI的\n全局最优值;(2)可建立各STA/AP状态集间的关联关系,以获取特定目标STA所接入的AP\n和所使用的无线信道。\n[0148] 优选地,在Infrastructure(基础结构)模式的WLAN中,可由AP和STA间的“父\n子关系”描述网络拓扑结构。AP链表可对AP状态集进行索引,而AP状态集内的\n序列可对其各STA子节点进行索引;因此,基于“AP链表 + 序列”即可构建完整\n的WLAN拓扑结构。\n[0149] 优选地,对状态集内与拓扑结构相关的各数据项( , , 和\n)以及AP链表的处理方法可包括:检测状态集内的 标志,若\n或 ,则跳过后续对 或 的处理;若首次判定 或\n(即类型为AP),则以 或 的存储地址构建新节点,并插入AP链表的末\n端;通过特定子类型的管理帧(如“信标”帧等)可获取AP状态集内的 和 值;\n通过数据帧或特定子类型的控制帧(如“节能轮询”帧等)可确定 与 之间的关联关\n系,从而将STA状态集的存储地址插入AP状态集内的 序列。\n[0150] 当STA已接入AP,且收发的数据量较大时,基于所捕获的首个数据帧即可判定\n、 的类型并确定关联关系,从而跳过对后续大量帧的处理;而当STA未接入AP,或\n已接入AP但收发的数据较少时,基于少量的管理帧或控制帧也可部分判定 、 的类\n型;因此,上述方法具有“网络连通适用性”和“无线数据量适用性”的优势。\n[0151] 对于步骤d)和步骤e),对WLAN拓扑结构和各STA/AP状态集进行周期性遍历和数\n据分析,基于各 序列获取各STA所对应的RSSI统计均值,并将具有全局最大RSSI\n的STA确定为特定目标,是最终实现MAC地址捕获的关键。\n[0152] 优选地,基于一种高效率、低精度的数据处理方法,快速计算各状态集内序列\n的统计均值。常规的数据处理方法是,首先基于奇异点检测方法(如基于小波变\n换模极大值的方法)消除原始数据中的突变值;然后基于滤波方法(如基于卡尔曼滤波的\n方法)对数据进行平滑处理,消除白噪声等干扰;最后计算数据的平均值。但小波方法、卡\n尔曼滤波等方法的计算量相对较大,当数据获取模块接收范围内存在较多STA/AP时,处\n理能力相对较弱的手持式终端便无法实时完成对多个状态集的数据统计;同时,在环境复\n杂的WLAN内,卡尔曼等滤波器模型中的参数也难以确定,因此,常规方法并不适用于特定\n目标MAC地址捕获的场景需求。由于仅需获取RSSI统计值的最大者,而对其精确度的要\n求并不高,因此可简化奇异点滤除方法,并省略滤波步骤,快速获取 的统计均值:\n首先计算原始序列 的平均值,记为 ;然后基于所设定的经验阈值 ,当任一\n与 的差值高于 时,可将其识别为奇异点而滤除;最后计算 内剩\n余数据的平均值,记为 :\n[0153] \n[0154] 式中 表示滤除奇异点后的无线帧数量。由于MAC地址捕获过程中,数\n据获取模块与特定目标之间的相对位置保持不变,因此上述方法可有效滤除奇异点并获取\n相对准确的统计均值。\n[0155] 优选地,将数据获取模块接收范围内的STA分为“已关联至AP”和“未关联至AP”\n两类:仅当实体类型为STA,且其状态集内的 时,将其归入第一类;若实体类型\n为STA且 ,或者实体类型尚未确定(即 ),则将其归入第二类。\n[0156] 优选地,以时间 为周期,对WLAN拓扑结构进行遍历和对拓扑树列表进行更新;\n以 为周期,对哈希表内的第二类STA状态集进行遍历和对未关联列表进行更新。第一类\nSTA状态集可基于“AP链表+ 序列”的结构进行快速索引,且通常因其与AP间\n所传输的数据较多而需频繁更新 的统计值;而第二类STA状态集仅能通过遍历整\n个哈希表进行低效率的查找,且通常因传输数据较少而无需频繁更新 的统计值;因\n此,可设置遍历周期 。\n[0157] 该方法可从任意多个STA的RSSI统计均值中判定全局最大者,因此具有“多用户\n适用性”的优势。由于数据获取模块和特定目标STA都处于非移动状态,仅需较少 和\n周期即可获取稳定的RSSI统计数据;同时该方法运算量小,适于在手持式设备实现,因此\n其具有“取证快速性与无痕性”的优势。
法律信息
- 2015-09-30
- 2015-07-15
著录事项变更
申请人由山东省计算中心变更为山东省计算中心(国家超级计算济南中心)
地址由250014 山东省济南市科院路19号山东省计算中心变更为250014 山东省济南市历下区科院路19号山东省计算中心
- 2013-09-18
实质审查的生效
IPC(主分类): H04L 29/12
专利申请号: 201310135442.2
申请日: 2013.04.18
- 2013-08-21
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-10-13
|
2009-04-07
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |