Canary Workshop

Whatever is worth doing at all is worth doing well

Linux 连接北邮校园网

事实上这篇文章是在折腾树莓派时写的。北邮校园网并不使用一般使用的 WPA2 的网络验证方式,且校园网内设备数量繁多,难以找到目标设备。因此文末附有一个超级简单的使用 Hurricane Electric Free DNS 的动态 DNS 脚本。

北邮校园网供师生使用的 AP 有 BUPT-portalBUPT-mobile 两个,前者是开放网络,使用浏览器内验证,后者使用 WPA 扩展认证协议 进行认证。

首先是 BUPT-portal 接入点。这个接入点接入后没有公网连接,而是会劫持一切 HTTP 连接至认证服务器进行认证。认证服务器逻辑十分简单,因此直接用一个 HTTP 请求解决之。这里我用 Python Requests 库:

1
2
3
4
5
6
7
8
python
import requests
data = { 'user': '学工号',
'pass': '密码' }
#登录
requests.post('http://10.3.8.216/login', data = data)
#登出
requests.get('http://10.3.8.216/logout')

其次是 BUPT-mobile 接入点。这个接入点验证后即有公网连接。这里直接给出 /etc/wpa_supplicant/wpa_supplicant.conf 的设置:

1
2
3
4
5
6
7
8
9
10
11
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="BUPT-mobile"
key_mgmt=WPA-EAP
eap=PEAP
identity="学工号"
password="密码"
}

最后是一个简单的 DDNS 脚本。这里只设置了 IPv6 的 DDNS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
python
import requests, time
password = 'DDNS 密钥'
hostname = '域名'
r6o = ''
while True:
try:
r6 = requests.get('http://ip.dyn.im')
if r6.status_code == 500:
time.sleep(30)
continue
ipv6 = r6.text.replace('\n', '')
if r6o == ipv6:
time.sleep(30)
continue
requests.get('https://dyn.dns.he.net/nic/update?hostname=' + hostname + '&password=' + password + '&myip=' + ipv6)
r6o = ipv6
time.sleep(30)
except KeyboardInterrupt:
exit()
except:
pass