纯命令行登录dlut-lingshui并实现断网重连

1 写在前面

本文章改写自《shell脚本登录dlut-lingshui并设置开机连网和断网重连》,旨在利用其脚本解决无图形界面情况下的校园网登录以及断网重连问题。本文仅作使用脚本的示范而不分析原理,若对脚本细节感兴趣可以查阅原文。

2 操作步骤

2.1 修改代码并保存到目标机器

首先,将下面这段python代码保存为以 .py 为后缀的文件(例如 a.py ),替换你的账号与密码后拷贝到目标机器上。

import math
import requestsid = '替换为你的账号!!!'
password = '替换为你的密码!!!'bash_file = ['#!/bin/bash\n', "captive_server='http://www.google.cn/generate_204'\n", "url_index='http://123.123.123.123/'\n", "user_agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n", 'id="这里输入账号"\n', 'passwd="这里输入密文"\n', 'login() {\n', '    login_page_url=$(curl -s "${url_index}" | grep -o \'<script>[^<]*</script>\' | sed -e "s/<script>\\(.*\\)<\\/script>/\\1/" | grep -o "\'.*\'" | sed -e "s/\'//g")\n', "    login_url=$(echo ${login_page_url} | awk -F \\? '{print $1}')\n", '    login_url="${login_url/index.jsp/InterFace.do?method=login}"\n', "    query_string=$(echo ${login_page_url} | awk -F \\? '{print $2}')\n", '    query_string="${query_string//&/%26}"\n', '    query_string="${query_string//=/%3D}"\n', '    login_post_data="userId=$1&password=$2&service=&queryString=${query_string}&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=true"\n', '    if [ -n "${login_url}" ]; then\n', '        auth_result=$(curl -d "${login_post_data}" -H "Accept: */*" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh\\;q=0.9" -H "Proxy-Connection: keep-alive" -H "Referer: ${login_url}" -H "User-Agent: ${user_agent}" "${login_url}")\n', '        # echo "${auth_result}"\n', '    fi\n', '}\n', 'for ((i=0; i<5; i++)) #5次获取code,获取失败说明网络不通\n', 'do\n', '    code=$(curl -I ${captive_server} -s | grep "HTTP/1.1" | awk \'{print $2}\')\n', '    if [ -z "${code}" ]; then\n', '        sleep 2s\n', '    else\n', '        break\n', '    fi\n', 'done\n', 'if [ -z "${code}" ]; then\n', "    echo 连接失败,请检查:$'\\n'1. 校园网是否正常/是否插好网线$'\\n'2. 电脑代理是否正确设置(可以尝试关闭代理)\n", '    exit 1;\n', 'fi\n', 'for ((i=0; i<5; i++)) #5次连接校园网,连接失败说明账号密码不对或此脚本已失效\n', 'do\n', '    if [ "${code}" = "200" ]; then\n', '        echo 第${i}次尝试连接\n', '        login ${id} ${passwd}\n', '    elif [ "${code}" = "204" ]; then\n', '        echo 连接成功\n', '        exit 0;\n', '    fi\n', '    sleep 2s\n', '    code=$(curl -I ${captive_server} -s | grep "HTTP/1.1" | awk \'{print $2}\')\n', 'done\n', 'echo 连接失败,请检查用户信息是否正确\n']
e = '010001'
m = '94dd2a8675fb779e6b9f7103698634cd400f27a154afa67af6166a43fc26417222a79506d34cacc7641946abda1785b7acf9910ad6a0978c91ec84d40b71d2891379af19ffb333e7517e390bd26ac312fe940c340466b4a5d4af1d65c3b5944078f96a1a51a5a53e4bc302818b7c9f63c4a1b07bd7d874cef1c3d4b2f5eb7871'
url_index = 'http://123.123.123.123/'
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'm = int.from_bytes(bytearray.fromhex(m), byteorder='big')
e = int.from_bytes(bytearray.fromhex(e), byteorder='big')
login_page_url = requests.get(url_index).text.split('\'')[1]
query_string = login_page_url.split('?')[1]query_list = query_string.split('&')
for i in query_list:query_item = i.split('=')if query_item[0] == 'mac':mac = query_item[1]print(mac)plaintext = password + '>' + mac
plaintext = plaintext.encode('utf-8')input_nr = int.from_bytes(plaintext, byteorder='big')
crypted_nr = pow(input_nr, e, m)
keylength = math.ceil(m.bit_length() / 8)
crypted_data = crypted_nr.to_bytes(keylength, byteorder='big')
print(crypted_data.hex())bash_file[4] = 'id=\"' + id + '\"\n'
bash_file[5] = 'passwd=\"' + str(crypted_data.hex()) + '\"\n'
s = ''.join(bash_file)
with open('connect.sh', 'w', encoding='utf-8') as file:file.write(s)
2.2 生成bash脚本

在目标机器命令行运行刚才拷贝过来的python脚本:

python3 a.py

运行成功后,python脚本会在其所在目录下生成一个名为 “connect.sh” 的bash脚本。如果python脚本报错或没反应(基本都是网络连接不稳定造成的),可以试着多运行几次。

注意:很多linux系统自带python3(例如ubuntu22.04-server),因此可以直接运行该python文件。如果你的linux不带python,请你想办法安装python3.

2.3 为生成的bash脚本赋予权限并运行
chmod +x connect.sh
bash connect.sh

至此,你应该已经连接到校园网了。

注意:python脚本中存储着密码明文,在公用服务器等机器上存储非常不安全。如果已经确认生成的bash脚本没有问题,请尽快删除python脚本!

2.4 (可选)设置开机自动联网&断网自动重连

本文借助crontab工具实现开机自动联网和断网自动重连,crontab的用法可以自行百度。
以下是配置过程:

  1. 安装curl(需要互联网)
sudo apt install curl
  1. 命令行输入crontab -e,向打开的文件追加以下两行(注意修改路径)并保存
@reboot export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntu/my_tools/connect.sh
*/10 * * * * export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntu/my_tools/connect.sh

第一行代表开机时运行一次脚本(开机启动)
第二行代表每隔十分钟运行一次脚本(每十分钟检查网络,断网重连)

3 误删了connect.sh怎么办?

校园网一旦连接成功,python脚本就会失效。想要重新生成connect.sh文件,我们可以在“i大工”APP中把这台设备踢下线,然后再运行python脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/842714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【华为OD机试-C卷D卷-200分】运输时间(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 M(1 ≤ M ≤ 20)辆车需要在一条不能超车的单行道到达终点,起点到终点的距离为 N(1 ≤ N ≤ 400)。速度快的车追上前车后,只能以前车的速度继续行驶,求最后一…

K8S-pod资源 探针

一.pod资源限制&#xff1a; 对pod资源限制原因&#xff1a;高并发占用所有的cpu资源、内存资源、会造成雪崩 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小&#xff0c;以及其他类型的资源。 方式&#xff1a; 对pod做…

UML-系统架构师(二)

1、UML&#xff08;Unified Modeling Language&#xff09;是面向对象设计的建设工具&#xff0c;独立于任何具体程序设计语言&#xff0c;以下&#xff08;&#xff09;不属于UML中的模型。 A用例图 B协作图 C活动图 DPAD图 解析&#xff1a; UML一共14种图 结构图&…

【蓝桥杯——物联网设计与开发】拓展模块2 - 电位器模块

一、电位器模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2&#xff0c;所有拓展模块均可直接安装在 Lora 终端上使用&#xff1b; 图1 拓展接口 电位器模块电路原理图如下所示&#xff1a; 图2 …

python数据分析——apply 2

参考资料&#xff1a;活用pandas库 1、向量化函数 使用apply时&#xff0c;可以按行或按列应用函数。如果想应用自定义的函数&#xff0c;必须重写它&#xff0c;因为整列或整行传递到了函数的第一个参数中。可以利用向量化函数和装饰器对所有函数进行向量化。对代码进行向量化…

Flutter 中的 CompositedTransformTarget 小部件:全面指南

Flutter 中的 CompositedTransformTarget 小部件&#xff1a;全面指南 在Flutter的动画和高级布局系统中&#xff0c;CompositedTransformTarget是一个与CompositedTransformFollower配合使用的组件&#xff0c;用于创建硬件加速的跟随动画和视差效果。这种类型的动画通常用于…

再论任何图≌自己这一几何最最起码常识推翻平面公理

黄小宁 有了解析几何使人类对直线和射线的认识有革命性的飞跃。几何学有史2300年来一直认定起点和射出的方向都相同的射线必重合&#xff0c;任两异射线必有全等关系&#xff1b;解析几何使我发现这是2300年肉眼直观错觉。 h定理&#xff08;参考文献中的定理&#xff09;&am…

台式机安装ubuntu过程

1.单系统参考 20231210-超详细Ubuntu20.04单系统安装_台式机安装ubuntu系统-CSDN博客 2.双系统参考 双系统启动效果_哔哩哔哩_bilibili 安装前一定要先清空电脑的硬盘数据&#xff0c;不然可能会出现以下图片异常 意思估计是分区被占用了&#xff0c;出现这个问题 &#xff0…

安全基础二

一、插件漏洞 统计使用了哪些插件这些插件有版本更新嘛检测这些插件是否存在已知漏洞 二、权限提升和持久化 SSRF&#xff08;Server-Side Request Forgery&#xff0c;服务器端请求伪造&#xff09; 想象一下&#xff0c;你是一个公司的内部员工&#xff08;服务器&#x…

知攻善防应急响应靶机训练-Web2

前言&#xff1a; 本次应急响应靶机采用的是知攻善防实验室的Web-2应急响应靶机 靶机下载地址为&#xff1a; https://pan.quark.cn/s/4b6dffd0c51a 相关账户密码 用户:administrator 密码:Zgsfqq.com 解题过程&#xff1a; 一、攻击者的IP地址&#xff08;两个&#xff09;…

防火墙基础基础篇:NAT转发功能之——Easy IP方式详解

防火墙基础基础篇&#xff1a;NAT转发功能之——Easy IP方式详解 1. 概念 Easy IP 是一种简化版的动态NAPT&#xff08;Network Address and Port Translation&#xff09;技术。在Easy IP中&#xff0c;我们只使用一个公网IP地址&#xff0c;无需建立公有IP地址池。这个公网…

2024 年科技裁员综合清单

推荐阅读&#xff1a; 独立国家的共同财富 美国千禧一代的收入低于父辈 创造大量就业机会却毁掉了财富 这四件事是创造国家财富的关键 全球财富报告证实联盟自始至终无能 美国人已陷入无休止债务循环中&#xff0c;这正在耗尽他们的财务生命 2024 年&#xff0c;科技行业…

基于Java的高校学生勤工助学优派系统的设计与实现(论文+源码)_kaic

摘 要 高校勤工助学管理系统的出现&#xff0c;让学生的工作更加标准,不仅仅使高校办公室的办公水平以及管理水平大大提高&#xff0c;还优化了勤工助学资金的使用方式方法&#xff0c;完善了资助所需费用的资源配置&#xff0c;可以卓有成效地缩减学校的管理经费。本系统主…

《python编程从入门到实践》day40

# 昨日知识点回顾 编辑条目及创建用户账户 暂没能解决bug&#xff1a; The view learning_logs.views.edit_entry didnt return an HttpResponse object. It returned None instead.# 今日知识点学习 19.2.5 注销 提供让用户注销的途径 1.在base.html中添加注销链接 …

利用PyCSP3库(含大量全局约束)进行组合约束建模

文章目录 1. 什么是 PyCSP3 ?2. 安装方法(Windows)2.1 通过 Google_colab 直接运行2.2 通过 pip 进行安装3. 快速入门3.1 声明变量3.2 更新约束3.3 定义目标3.4 常用的全局约束1. 什么是 PyCSP3 ? PyCSP3 是 Python 中的一个库,用于对组合约束问题进行建模,包括 约束满足…

esp8266的rtos和nonos区别

https://bbs.espressif.com/viewtopic.php?t75242#p100294 https://blog.csdn.net/ydogg/article/details/72598752

Akamai 最新版逆向分析 akamai逆向 dhl网址

原创文章&#xff0c;请勿转载&#xff01; 本文内容仅限于安全研究&#xff0c;不公开具体源码。维护网络安全&#xff0c;人人有责。 URL&#xff08;base64加密处理&#xff09;&#xff1a;aHR0cHM6Ly93d3cuZGhsLmNvbS9jbi16aC9ob21lL3RyYWNraW5nL3RyYWNraW5nLWVjb21tZXJ…

[机缘参悟-190] - 《道家-水木然人间清醒1》读书笔记 -13- 关系界限 - IT人学会欣赏自己、与自己孤独相处,向内求

目录 前言&#xff1a; 1. 做人不求全&#xff0c;做事不求多 2. 一个人成熟的标志 3. 不必向别人解释自己 4. 孤独常伴&#xff0c;唯有内心强大 5. 下一轮文明的引领者 6. 外求与内求 7. 总有人能让我们欣赏 8. 凶狠和温柔 9. 陪伴自己 10. 珍惜拥有 11. 抽离感 …

Java | Leetcode Java题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; class Solution {public int numDistinct(String s, String t) {int m s.length(), n t.length();if (m < n) {return 0;}int[][] dp new int[m 1][n 1];for (int i 0; i < m; i) {dp[i][n] 1;}for (int i m - 1; i > 0; …

计算机网络路由协议之内部网关协议RIP例题与详解

互联网的路由选择协议 路由器转发表的路由协议如何得出呢&#xff1f; 使用路由算法进行&#xff0c;路由算法可以分为两类&#xff1a; 静态路由选择策略和动态路由选择策略。 静态路由选择策略&#xff1a; 非自适应路由选择&#xff0c;人工配置每一条路由。 动态路由选…