树莓派命令行下登陆校园网

树莓派命令行下登陆校园网

转载注明出处:http://blog.csdn.net/github_37603222/article/details/78968887

笔者是某理工大学的学生,我们学校的校园网是无密码登陆,但是需要网络认证,以下贴出我的登陆方法,可能只适用一部分人,仅供参考。

登陆界面

因为我比较穷,没钱给树莓派配屏幕,只好想办法再命令行界面下进行登录认证,其实所谓的登录认证,也就是在本地向服务器POST一段数据,这段数据包含着你的登陆账户和密码。什么是POST呢,这是HTTP协议中的一个方法,具体详见 维基百科-超文本传输协议 。我们首先来看它会向服务器POST什么数据,我使用 Fiddler 进行数据的抓包,使用简易教程见 Fiddler抓包简易教程 。你也可以使用浏览器的F12功能进行调试,只不过没有Fiddler方便。

请求

我们可以看到发起了这么多的请求,其实只有一个是登陆时的POST请求,其他的是登陆成功后对其他资源的请求。我们可以看见第三条中的URL里面有一个success字样,这是登陆成功后返回的jsp页面。我们查看它的上一条请求在右侧窗口中可以看到请求的样式,我们不看Fiddler对请求和响应的格式分析结果,只看它们的原始字符串,单击Raw可以看到如下界面。

这里写图片描述

其中右上方的的字符串是POST请求的全部内容,右下方是登陆成功后的响应。我为什么不一个一个分析它的请求头响应头什么的?因为我接下来不会用HTTP协议向服务器发送请求,而是用TCP/IP协议发送请求。TCP/IP协议详见 维基百科-TCP/IP
因为该请求是HTTP请求,所以服务器端口是80 。而服务器网址为 auth.dlut.edu.cn ,所以很容易发起一个TCP请求,然后获取它的响应。我们将Filder上面的请求字符串全部复制下来,然后通过TCP协议发送给服务器,然后等待响应字符串,简单粗暴。代码如下:

代码

获得的相应如下:

响应

可见已经成功了。

切到源代码文件目录,打开cmd,输入如下代码:

javac -encoding utf8 -d . .\Main.java 

该目录中会产生一个名为http的目录,将该目录移动到树莓派中去,目录里面是编译好的class字节码。
树莓派的raspbian系统自带jdk,所以直接运行如下代码即可.

java http.Main

但是在这之前需要在树莓派的配置文件中添加相应的wifi。如下代码:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

在其中添加:

network={
        ssid="wifi名称"
        key_mgmt=NONE
}

重启树莓派,或者:

sudo iwconfig wlan0 essid wifi名称

即可连接校园网的wifi,然后执行之前的指令即可登陆成功。

代码地址:github:crazyStrome

### 树莓派校园网中的配置与使用 #### 1. 安装操作系统 为了使树莓派能够在校园网环境中正常工作,首先需要为其安装适合的操作系统。对于树莓派4B型号,可以选择安装Ubuntu Desktop 18.04.3 LTS或其他官方支持的版本[^1]。具体操作可以通过SD卡镜像写入工具完成。 #### 2. 网络接入方式 由于校园网通常具有特定的认证机制,树莓派可能无法直接通过Wi-Fi或有线网络连接互联网。以下是几种常见的解决方案: - **笔记本共享网络** 将笔记本电脑作为路由器,通过其Wi-Fi连接至校园网,并将网络共享给树莓派。此方法适用于不具备独立上网能力的环境。 - **移动热点法** 如果校园网仅提供单一Wi-Fi接口,则可利用Windows 10系统的移动热点功能创建一个新的Wi-Fi网络供树莓派连接。此时需注意,部分设备可能存在兼容性问题(如5GHz Wi-Fi不可用),建议优先尝试2.4GHz频段[^2]。 #### 3. IP 地址获取 成功联网后,需确认树莓派所分配到的具体IP地址以便后续远程管理。常用的方式包括但不限于: - 登录路由器后台查看在线设备列表; - 借助第三方IP扫描工具检测局域网内活跃主机; - 利用命令行指令`ifconfig`或者图形化界面查询本地网络状态。 #### 4. 自动化脚本实现每日重登校验 鉴于某些高校会对长时间未活动的终端强制下线处理,这可能导致依赖固定公网入口的应用失效。为此设计了一套基于Python编写的定时任务程序来模拟人工输入用户名密码过程并提交表单请求恢复访问权限[^3]。 ```python import requests from datetime import datetime, timedelta def login_gateway(username, password): url = &#39;https://your-campus-gateway.com/login&#39; payload = {&#39;username&#39;: username, &#39;password&#39;: password} try: response = requests.post(url, data=payload) if response.status_code == 200 and "success" in response.text.lower(): print(f"[{datetime.now()}] Login successful.") else: raise Exception("Login failed") except Exception as e: with open(&#39;/home/pi/error_log.txt&#39;, &#39;a&#39;) as f: f.write(str(e)+&#39;\n&#39;) while True: current_time = datetime.now().time() target_hour = 7 # Set your desired hour here if (current_time.hour == target_hour) & ((target_minute - current_time.minute)**2 < 60): login_gateway(&#39;studentID&#39;, &#39;passwd&#39;) time.sleep(60*random.randint(30,90)) # Random sleep interval between checks to avoid overloading server. ``` > 注:上述代码仅为示例框架,请根据实际需求调整参数值以及异常捕获逻辑等内容后再部署运行! #### 5. 开启SSH/FTP服务便于外部操控 为了让远距离维护更加便捷高效,在完成了基础设置之后还应该考虑开放Secure Shell(SSH)通道或者是File Transfer Protocol(FTP/SFTP)。前者允许管理员经由命令提示符形式执行各种高级动作;后者则侧重于资料上传下载作业。两者均需指定相应的监听端口号并与防火墙策略相匹配才能生效[^4]。 ---
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值