关于破解联通校园宽带限制终端数量的探究




近期(2017年7月)有多所学校升级了联通光纤的系统,本文所述方法在升级后的系统中已经不再有效。
经抓包得知,认证的方法变为:

  • 客户端用http请求一个接口。
  • 服务器返回一个json,里面包含一个6位数字的pin。
  • 通过PPPoE拨号,用户名和以前一样,密码是那6位数字加上用户自己的密码。

这样一来,无论采用方案A还是方案B,都需要一个OpenWrt的路由器来完成。
我写了如下的脚本,通过下文所述的方案B来实现自动登录,在北京部分学校已测试可用。如果你使用Padavan,请切换至padavan分支。

https://github.com/frankgx97/wo201-autologin


今年学校新装的联通光纤,每个账号独享10M带宽,但是每个账号限制两台终端同时登陆,一台电脑,一台手机。以前全宿舍6个人共用一条8M ADSL从此成为历史。

网络大概是这样的,其中路由器工作模式为路由模式的动态ip方式。

              ┌─Portal认证←手机
光猫←路由器←  ┤	
              └─PPPoE拨号 ←电脑

正常的上网姿势

PC

要在电脑上上网的时候,需要使用联通的客户端进行拨号,其中限制终端数量,及限制承载网络的功能都由这个客户端来实现。

这个客户端最恶心的地方在于,它会把电脑中所有活动的网卡,包括虚拟的和物理的,都当做一个终端来对待。比如我想要在电脑上连接AnyConnect,这时AnyConnect的虚拟网卡就会被认为是新接入的一个终端,随即联通客户端提示超过两个有效终端,并且自动断开互联网连接。如果在电脑上启动承载网络,包括但不限于小度WiFi,猎豹免费WiFi、Connectify,联通客户端同样也会提示发现承载网络,随即将连接断开。

但是,虽然此客户端的本质就是一个PPPoE客户端,但是我并不能使用我的用户名密码直接在电脑上用Windows自带的拨号器进行拨号,否则会报691错误,也就是用户名/密码有误。经过这篇文章 使用 PPPoE 代替流氓的联通宽带客户端进行 ADSL 拨号上网 的启发,我意识到确实可能是因为真实的PPPoE密码并不是联通给我的用户名密码,而是经过客户端处理过的。

移动终端

要在手机上上网时,只要随便打开一个http的url,然后请求会被劫持至联通的Portal认证页面。在认证页面里填入用户名和密码,认证服务器即会对此设备授权。
由于服务器仅靠UA来识别该设备是手机还是电脑。所以如果将电脑上的浏览器改成手机的UA(使用Chrome的调试器即可),同样可以完成认证。这样做的好处是不会有对网卡和承载网络的限制。所以可以放心开承载网络中继给其他设备使用。这是一个最基本的解决方案。


作为一个一向痛恨运营商的流氓行为的人,当然不会就此停止。我的目标是没有蛀牙能够像使用家庭宽带那样,只使用一个路由器经由光猫连向互联网,无论我的路由器下面挂了多少设备。

另外据说有些地方的运营商使用一种叫做网络尖兵的东西,通过检测数据包指纹的方式来判断接入的终端数量。如果那样的话,本文所述的方法都无能为力,请自求多福。不过我没有听说过北京联通有部署这样的设备。

破解方案

方案A:

上文说过,真实的PPPoE密码并不是联通给我的用户名密码,而是经过拨号客户端处理过的。PPPoE的认证使用的是PAP,所以可以用WireShark抓包抓出明文的用户名和密码。

使用联通客户端拨号,与此同时用WireShark进行抓包,结果如图:

Image 101

由图可得,真实的用户名是联通提供的用户名(8位数字)后面加上@wo201
真实的密码则是你自己设置的密码前面加上\001

这里开始我的思路出现了偏差。我看着那个莫名其妙的\001不知所措。而且实际的密码长度跟Password-Length里写的也不太一样。

直到有一天我跟朋友聊天的时候,他提到他有一个同学也做了跟我一样的事情,但是他成功找出了那个奇怪的编码是ASCII。

通过查找ASCII字母表得知,\001SOH,Start Of Header的意思。

Image 117

设置路由器的时候只需要把路由器设置为路由模式,上网方式选择pppoe。用户名为8位数字的用户名,后面加上@wo201。比如23333333@wo201。

在Sublime Text里打出ASCII的SOH字符,在后面输入自己设置的密码,然后全选并复制,粘贴进密码那栏里。SOH字符你也可以在这里:https://github.com/frankgx97/soh下载到。

注意并不是所有路由器都能识别这种非法的字符,我的TP-Link路由器亲测没有问题。

然后就可以愉♂快地上网了

方案B

在OpenWRT上使用curl或者python脚本,假装自己是手机浏览器去完成Portal认证,然后将获得授权的以太网和无线AP这两个interface桥接即可。

首先用WireShark抓出认证时的HTTP包,如图:

Image 113

然后使用curl来发送一个相同的HTTP请求,curl的参数请自行查询文档。

curl -A "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.20 Mobile Safari/537.36" \
-H "Pragma:no-cache" -H "Cache-Control:no-cache" -H "Referer:http://114.247.41.52:808/protalAction!index.action?wlanuserip=$ip&basip=$basip" \
-H "Accept-Encoding:gzip,deflate" -H "Accept-Language:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4" \
-H "Accept: application/json, text/javascript, /" -b "JSESSIONID=D4CB5C7CEC0B78473E4C2439AE4A8CCD" \
-d "wlanuserip=$ip&localIp=&basip=$basip&lpsUserName=$username&lpsPwd=$password" \
-v "http://114.247.41.52:808/protalAction!portalAuth.action?";

如果返回内容为{"msg":"login success","obj":null,"success":true}则表示成功。




Posted

in

by

Comments

8 responses to “关于破解联通校园宽带限制终端数量的探究”

  1. A LICN Avatar
    A LICN

    我们学校是直接用电脑pppoe拨号,怎么搞呢?账户是你的学号加@s,密码是身份证后六位,这个账户不是真是的用户名和密码吗? 跪求解决办法

  2. Fenng在路上 Avatar

    抓出包来发现是PPP-CHAP认证方式,已哭瞎

    1. Frank Avatar

      太惨,试试投诉吧

  3. Asimov Avatar
    Asimov

    以相同思路企图破解武汉宽带的终端限制,折腾了几个小时发现武汉用了更先进的PPP-CHAP认证方式,哭瞎。。。
    求PPP-CHAP破解方式

    1. Frank Avatar

      chap是加密的,那可能确实比较麻烦吧。google了一下没找到有太大用的信息。

      1. Asimov Avatar
        Asimov

        是啊,这个是三次握手认证协议,每次都要双方验证随机MD5值,简直是变态。技术上没法实现,最后通过投诉还是把问题解决了,哈哈。
        感谢博主又让我学到了东西。

        1. Frank Avatar

          投诉竟然解决了。可以可以

  4. 人似秋鸿 Avatar
    人似秋鸿

    你那位朋友真是太机智啦,我和楼主栽在一个地方

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.