济南大学宿舍联通手动PPPoE上网
本文是关于自己在济南大学宿舍手动联通 PPPoE 拨号上网的折腾过程,虽然去年 10 月左右已经实现,一直没有写出来,在此补上。
为什么要手动 PPPoE
学校宿舍联通一个账户限制两个终端,且严格禁止共享网络。在 Windows 下必须使用客户端进行 PPPoE,而 Android/Linux 等设备是通过 captive portal 进行认证,而 Windows 下的客户端会检测网卡,如果有多余的网卡(如 hyper-v)可能会自动断开(未验证),而且 Windows 下客户端界面超级不好看,自己也有超过 2 台设备。
分析 PPPoE
我不想弄脏自己的环境,花了一段时间给移动硬盘装了个 Windows 与 wireshark,同时安装上联通客户端,尝试登陆了一次,并将抓到的数据包保存。
wireshark 中的 filter 设置为 ppp 协议,可以明显发现认证相关的数据包里面的username
后面加入了@jndxedu
,password
前面加入了0x01
(SOH),所以在路由设置中将这两项补上即可完成拨号。
路由设置
通用方法(?)
部分路由好像不会对0x01
进行处理,所以可以先尝试直接复制粘贴0x01
。
linux 用户可以echo -e '\x01' > password
(当然建议直接 pipe 到文本编辑器中复制即可)。
Windows 用户可以下载 hex 编辑器,放一个0x01
后用文本编辑器打开。
padavan
padavan 的 Web UI 貌似会对数据进行验证,这里使用了burpsuite
对请求进行 intercept,在 PPPoE 密码前面放入%01
即可。
openwrt
由于 openwrt 好久没用了,只能按照自己的印象说了,如有差错欢迎留言。SSH 到路由器,在/etc/config/network
中找到 PPPoE 密码,在其前面加个\x01
即可。
一点有趣的东西
在这个过程中我也看到了几个有趣的 http 请求如下,不过有记录在我 postman 账户中的只有 2 个了,其他的可以用 wireshark 等工具自己抓。
查看账户状态
Request:
1 | POST http://139.198.3.98/mgr/api/account/check.html?user_name=<账号>&school_id=510592(学校ID 这里是济南大学)&pwd=<密码> |
Response:
1 | { |
查看联通做的小手脚
Request:
1 | POST http://139.198.3.98/mgr/api/schools/show.html?cityId=996(城市ID 这里是济南) |
Response:
1 | { |