本发明涉及无线网络技术领域,尤其是一种基于无线设备握手协议的大规模用户签到方法。
背景技术:
用户签到是一种确认用户实际出现在指定场景的方法,传统的做法是在一张列有用户标识(如姓名)的纸上要求用户签字。日常生活中,教师为了获得学生的出勤率,一般需要采用某种签到方法。然而,传统的签到方法当用户人数超过一定数目时,会因耗时过长而无实际价值,例如,当学生人数达到百人以上时,这种签到方法会占用大量课堂时间。
替代方法是利用蓝牙或wifi。使用蓝牙时,用户应当拥有一台有蓝牙模块的设备,当此设备离服务器端的蓝牙较近时,二者可以配对、交换数据,从而服务器端可以发现用户。此方法的缺点是由蓝牙技术本身的局限性造成的:用户只有在服务器附近时才会被感知(一般10米以内),并且服务器一次只能连接一个用户。当用户数量增加时,整个过程依然耗时较长。
传统的利用wifi签到的方法是一种基于连接的方法,即,用户加入到服务器端建立的局域网中,从而与服务器建立稳定的连接,通过局域网发送任意信号给服务器达到签到的目的。缺点是,普通无线路由器(ap)只能支持30个客户端同时连接,即使是昂贵的企业级的无线接入端,也只能支持60个左右的客户端同时连接。因此,此方法无法适用于人数超过百人的场景。
技术实现要素:
发明目的:为解决上述技术问题,本发明提出一种基于无线设备握手协议的大规模用户签到方法,该方法耗时短、成本低,适用于大规模用户签到。
技术方案:为实现上述技术效果,本发明提出一种基于无线设备握手协议的大规模用户签到方法,该方法包括四个阶段:
(1)服务器初始化阶段:
服务提供者预先为各客户端分配一个唯一的签到者编号,并将各客户端的签到者编号存储至服务器中;服务器创建加密无线局域网,加密无线局域网的加密方式为wep;
(2)用户接入阶段:
用户通过客户端接入加密无线局域网时,通过握手协议向服务器发送请求报文,请求报文中包含客户端的签到者编号;
(3)服务器识别用户阶段:
(3-1)服务器过滤与客户端之间的交互报文,寻找含有签到者编号的请求报文;
(3-2)服务器从找到的请求报文中提取报文的第51到第53个字节作为初始化向量,记为i;
(3-3)穷举所有可能的签到者编号,逐一与i进行匹配:
对于任意一个签到者编号u,将其拼接到i之后,组成待测密钥k,若k长度未达到64位,则在k末尾补0以使k为64位;用待测密钥k根据rc4算法对请求报文中从第55字节开始的140个字节的内容进行加密,得到加密后的报文l;判断l的后4字节是否是l前136个字节的crc32校验码;若是,则服务器判定该请求报文对应的签到者编号为u,转入步骤(3-4);否则,对下一个签到者编号执行步骤(3-3);
(3-4)服务器提取请求报文的mac字段,并将mac地址与步骤(3-3)中破解的签到者编号记录到本地存储器,作为对应客户端的密码;
(3-5)服务器标记对应用户为“已到”;
(4)断开连接阶段
当“已到”的用户再次向服务器发送请求报文时,由于请求报文中的初始签到者编号与服务器本地存储器中的密码不一致,则服务器发送拒绝连接报文给用户,用户接收到拒绝连接报文后放弃连接。
进一步的,所述请求报文的第27个字节为0xb0,第28个字节为0x40。
进一步的,所述服务器具有wifi功能,而所述客户端为具有wifi功能的无线终端。
进一步的,所述服务器由计算机和路由器构成,而所述客户端为具有wifi收发功能的手机、笔记本或者平板电脑。
有益效果:与现有技术相比,本发明具有以下优势:
(1)支持的用户数量多,可以支持百人以上的应用。
(2)方便易用。用户在签到时不需要接近服务器,在无线信号覆盖的区域内均可签到。同时,用户不需要在设备上安装任何特殊软件。
(3)部署成本低。签到服务的提供者不需要购买企业级的无线路由器,使用普通的无线路由器即可,降低了部署成本。
(4)耗时短。本发明提出的方法会捕获无线设备在握手过程中的报文,从中提取信息进行签到。握手阶段是无线设备进行交互的第一个阶段,因此耗时较短。
附图说明
图1为服务器根据握手报文破解用户编号的流程图。
图2为实验观测到的单用户签到平均时延随着签到用户个数变化的曲线图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
本发明在实施时,签到服务提供者需要一个带wifi功能的服务器,签到用户需要一个wifi无线终端。前述带wifi功能的服务器可以由一个无线路由器和一台计算机构成。前述的wifi无线终端可以是手机、笔记本或者平板电脑等具有wifi收发功能的设备。
整个过程分为四个阶段:
1.服务器初始化阶段
1.1服务提供者将签到者信息输入服务器。签到者信息至少包含用于区分签到用户的签到者编号,如学号。
1.2服务器创建加密无线局域网,等待用户连接。加密方式选择wep。具体的加密密码可以是任意数字或字母组合,可以与某个用户签到者编号相同,也可以不同于任意用户的签到者编号。
2.用户接入阶段
用户通过客户端加入加密无线局域网,当提示输入密码时,输入用户的签到者编号。此时客户端会自动通过握手协议向服务器发送请求报文,这些请求报文中包含了与用户签到者编号相关的信息。
3.服务器识别用户阶段
服务器过滤用户的请求报文,提取出包含用户签到者编号信息的报文,采用密码碰撞的办法破解出用户输入的签到者编号。最后将用户签到者编号与无线设备的mac地址记录到本地以备下次使用。服务器识别用户的流程如图1所示,具体如下:
3.1服务器跟踪与客户端交互的报文,寻找含有客户端加密信息的请求报文。这种报文的第27个字节为0xb0,第28个字节为0x40。
3.2服务器从前述找到的请求报文中提取初始化向量,记为i。向量i为24位,位于报文的第51到第53个字节。
3.3穷举所有可能的用户签到者编号,逐一与i匹配:对于签到者编号u,将其拼接到i之后,组成一个64位长的待测密钥k(若u长度不符合要求,则在末尾补0以使待测密钥为64位)。提取报文中从第55字节开始的140个字节的内容,记为j,用待测密钥k根据rc4算法对j的内容进行加密,得到加密报文l。如果加密报文l的后4字节a恰好是加密报文l前136个字节b的crc32校验码,则说明请求报文对应的用户签到者编号为u,穷举结束,转入步骤3.4;否则,尝试下一个签到者编号,即对下一个签到者编号执行步骤3.3。
3.4服务器提取请求报文的mac字段,将mac地址与3.3中破解的签到者编号记录到本地,做为对应用户的新密码。
3.5服务器标记对应用户为“已到”。
4.断开连接阶段
当“已到”的用户再次向服务器发送请求报文时,由于请求报文中的签到者编号与服务器本地存储器中的新密码不一致,则服务器发送拒绝连接报文给用户,用户接收到拒绝连接报文后放弃连接。这样可以及早让已签到用户放弃无线信道,节省无线网络资源,便于下一个用户的签到。
实施案例
本发明的一个具体实现案例如下。服务器为一台运行ubuntu16.04操作系统的笔记本电脑,其处理器为
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。