在江苏某地出差,酒店启用了ETV无线接入,接入WIFI后打开http网页会跳转认证,而https则不需要。当时因为使用的网页基本都是https,QQ也自适应通过https登陆成功,直到后面打开一下http站点才发现要认证。一般情况下输入手机号,然后获取验证码,认证即可。我当时由于笔电上安装了虚拟机,而且虚拟机的Nat网段恰好和路由器的Wifi网段相同,导致一直无法通过认证,不能使用网络,更是折腾出了用Surface开启Wifi共享给笔电用的昏招。后来抓了下包才发现是网络冲突,导致给路由器的认证包无法发送,进而无法使用网络。

来看一下正常用户流程:
1.打开任意http网址,比如http://baidu.com(这里要注意,必须是http,上面提到https是不需要认证的),网页会自动重定向。

2.输入号码,发送验证码。

3.验证码内容:677182,aWiFi登录密码,2分钟内有效。【爱上WiFi】

4.再次打开百度已经OK了。
在不认证的情况下,连接上Wifi之后,是无法使用Ping功能的,Ping阿里的Dns直接显示无法连接到端口。

向认证平台提交手机号,请求发送验证码的抓包:

向路由器提交token,请求认证的包,这里的token是由手机号和验证码的MD5摘要

做了个测试,在未认证的情况下同时打开http和https网址,http被重定向了,Iframe测试结果如下:

Iframe测试抓包,未认证的情况下同时打开http和https

在已认证仍然有效的情况下,重新打开认证页面或者被系统重定向至认证页面,会有一键快速登陆。
Iframe测试页面代码:

<iframe src="https://news.qq.com" width="1920" height="500"></iframe>
<iframe src="https://news.qq.com" width="1920" height="500"></iframe>

Token代码:

function certificationFree(gw_address, gw_port, client_mac, mobile, passWord) {
  var authToken = hex_md5(mobile + "," + passWord);
  var url = "http://"+gw_address+":"+gw_port+"/wifidog/auth";
  var authTime = "";//分钟
  if (authTime == "" || authTime == "0" ) {
        authTime = 10080;
    }
  $.ajax({
        url:url,
//			data:{"token":authToken,"duration":authTime},
          data:"token=" + authToken + "&duration=" + authTime,
          dataType:"jsonp",
          beforeSend: function () {
          	$("#tip").show();
          	$("#tip").html("登录中....");
            },
            complete: function () {
            	$("#tip").hide();
            },
         success: function(data){
            	debugger
          		if (data.code == 100) {
          			//手机号 mobile和 client_mac 入库表 mobileclientmac,  查询界面做查询接口
            //begin
            $.ajax({
              type: "post",
              url: "/etv/Api/dataInsert.do",
              data:{"mobile":mobile,"client_mac":client_mac},
              success: function(data){
              }
            });
          			
            alert("认证成功");
            window.location.href="welcome.html";
            }else{
            alert(data.msg);
            }
          }
        });
}

一些思考:
1.认证是通过Mac和手机号进行的,当Wifi客户端Mac地址变更后,需要重新认证,用户可以伪造Mac来进行接入。
2.Https默认不需要认证,是否可以通过外部https代理来进行http通讯,从而绕过认证。

最后的最后:
写完之后才发现网上有接口规范,介绍了一些认证使用的技术
广东电信aWiFi平台接口规范 https://wenku.baidu.com/view/6b9ac5cea216147916112885.html

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注