浙江大学软件学院网络自动认证+Padavan路由器挂python脚本
目录
- 起因
- 自动认证
- 挂到路由器
- 进入终端
- 从外部安装opkg
- 后台挂自动认证脚本
- 后记
- 参考链接
起因
浙软的网络认证系统实在是与众不同,好像是自己开发的?
反正就特别不方便,每次连上之后会有一个小窗口,影响观感。
有轻微强迫症的咱怎么能忍这个呢?于是决定自己写一个认证的程序,并挂到路由器上,由于路由器装的是linux,没有GUI,也就看不到这个窗口了。
自动认证
这部分过程其实很简单,很多文章都有介绍方法,比如浙大软院 免登录上网攻略。
受到了浙大python网_Python爬虫学习(8):浙大软院网络登陆保持一文的启发,发现没必要一定用自己的账号登录,并在这篇文章的基础上进行了改写:
import urllib
import urllib.request as urllib2
import re
import os
import timeclass PseudoLogin:def __init__(self): self.login_url = "http://192.0.0.6/cgi-bin/do_login"self.status_url = "http://192.0.0.6/cgi-bin/keeplive"self.logout_url = "http://192.0.0.6/cgi-bin/do_logout"self.headers = {}self.headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"self.headers["Content-Type"] = "text/html; charset=gb2312"# 需要更改起始和结束帐号self.start = 22151001self.end = 22151300self.check_time = 5#当前登陆的帐号self.current = self.start #登陆成功后返回的数字字符串self.uid = ""#循环测试帐号,直到有一个帐号可以通过初始密码登陆def cycle_login(self):#初始密码password = '3fdebd70bc927d97' # 'zjucst'的md5加密#匹配全是数字的字符串pattern = re.compile(r"^[\d]+$")#当已经访问到最后的时候,且最后一个帐号没有登陆成功的时候,又重头来一次if(self.current >= self.end):print("将重头再来一次..")self.current = self.startfor username in range(self.current, self.end + 1):self.current = usernameret = self.access(str(username), password)if re.match(pattern, ret):self.uid = retprint("已经成功登陆...,可以上网了")print("当前网号为:" + str(username))print("uid为:" + ret)return Truereturn Falsedef access(self,username,password):data = {'username': username, 'password': password, 'drop': 0, 'type': 1, 'n': 100}data = urllib.parse.urlencode(data).encode(encoding='UTF8')# print(data.decode('UTF8'))req = urllib2.Request(self.login_url, data=data, headers=self.headers)res = urllib2.urlopen(req)content = res.read().decode('UTF8')print("the login result: " + content)return content #获取登陆上网后的状态def get_status(self):data = {'uid': self.uid}data = urllib.parse.urlencode(data).encode(encoding='UTF8')req = urllib2.Request(self.status_url, data=data, headers=self.headers)res = urllib2.urlopen(req)content = res.read().decode('UTF8')print("the keep-alive result: " + content)return content #登出def logout(self):data = {'uid': self.uid}data = urllib.parse.urlencode(data).encode(encoding='UTF8')req = urllib2.Request(self.logout_url, data=data, headers=self.headers)res = urllib2.urlopen(req)content = res.read().decode('UTF8')print("the logout result: " + content)return content #登陆上网之后一直监测上网状态,如果被强制下线就返回def suffer(self):#循环测试,直到能够登陆while(not self.cycle_login()):pass#当返回的是三个数字并且已逗号隔开的时候表示依然在线pattern = re.compile(r"^[\d]+,[\d]+,[\d]+$")#每过5秒访问一下状态while(True):time.sleep(self.check_time)status = self.get_status()if re.match(pattern,status):print("it is still online")else:print("sorry you are offline")#如果被强制下线,则自动加1,不然又会登上这个帐号self.current = self.current + 1print("下线后需要等一会儿才能再登陆")time.sleep(30)break#如果while循环退出表示上网失败了return False #这个函数将会一直执行def enjoy(self):while(not self.suffer()):passlogin = PseudoLogin()
login.enjoy()
我主要对那篇文章中的代码格式进行了人工调整,并且把python2给update到了python3。并且由于系统的升级,密码不再是以前的明文传递,改成了md5加密:
运行后:
成功登录,并且连上了网。
挂到路由器
这部分才是这篇博客的难点,我用的路由器是著名的刷固件神器斐讯k2p,用的固件是老毛子Padavan 3.4.3.9-099_20-06-1
进入终端
要进入路由器的终端,首先得开放ssh服务:
然后通过ssh协议连接:
进来之后其实可以看到是个类似Linux系统的shell,是BusyBox的一部分,但是没有lsb_release -a
, cat /etc/os-release
等一系列的命令,也没有apt
、yum
、dpkg
、rpm
等软件包管理的工具,在这种情况下应该是没办法安装python的。
从外部安装opkg
没有这些包管理工具,我们就无法安装新的软件,因此需要找一个可用的package management tool。
经过一番搜寻,终于找到了一个方法: 从外部网站下载一个包管理工具——opkg,然后使用这个工具安装python3
由于路由器的file system建立在memory之上,其存储空间是read-only的,所以要先将内存划分一部分空间,挂载到文件系统:
mount -t tmpfs -o size=40M tmpfs /opt/
我这里分配了40M大小的内存,之前其实有尝试过分配10M和20M,但在后续安装python的时候提示了空间不足。
随后从外部网站下载opkg:
wget http://pkg.entware.net/binaries/mipsel/installer/opkg -O /opt/bin/opkg
chmod 755 /opt/bin/opkg
wget http://bin.entware.net/mipselsf-k3.4/installer/opkg.conf -O /opt/etc/opkg.conf
不出意外的话会提示文件夹不存在之类的错误,因为没有手动创建/opt/bin
、opt/etc
等文件夹,这部分mkdir
即可。
进入/opt/bin
目录,对opkg进行一下update,并安装一下ipk:
cd /opt/bin
./opkg update
wget https://archive.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base/opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-7_ramips_24kec.ipk
opkg install ./opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-7_ramips_24kec.ipk
后台挂自动认证脚本
最后,安装python3:
opkg install python3
即可成功把python安装到路由器的RAM里。通过scp
将python脚本传过来,然后使用nohup命令挂在后台即可:
scp ./keeplive.py admin@192.168.123.1:~/
nohup python3 ./keeplive.py &
后记
这样做还是有缺陷的,因为在RAM里,所以路由器断电重启的话文件会消失,还需要重写安装python并挂上,后续可以自己写一个脚本。
参考链接
[1] 浙大软院 免登录上网攻略
[2] 浙大python网_Python爬虫学习(8):浙大软院网络登陆保持
[3] StackOverflow: How to install a software management tool in Linux?
[4] Padavan固件安装软件包,7620老毛子Padavan固件安装openwrt安装额外的软件包
[5] 在Padavan 上使用Entware
[6] OPKG 软件包管理
浙江大学软件学院网络自动认证+Padavan路由器挂python脚本相关推荐
- 记一次用python selenium 通过chrome+chromedriver 实现公司内网上网自动登入认证、上班自动登入打卡python脚本笔记
背景 写这个脚本纯属是觉得好玩而已,一开始以为很简单,看了大部分网上的代码确实很简单就那么几行,自己也就想试试,后来发现由于这个还涉及了一些html的知识点发现还是没那么简单的,从一开始获取登入按钮的 ...
- python自动发邮件 foxmail_使用 python 脚本实现自动监控网站并发送邮件告警
今天中午的时候,网站莫名奇妙地出现无法访问的现象,持续了两个多小时,等发现问题的时候立刻重启了服务器才恢复正常.为防止同样的事情再次发生,所以就想编写一个自动化脚本来监控网站服务,今天为大家分享一下使 ...
- python脚本自动运行失败_Linux下Python脚本自启动和定时启动的详细步骤
一.Python开机自动运行 假如Python自启动脚本为 auto.py .那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 ...
- python自动登录校园网_免费自动登录国科大校园网python脚本
UCAS-Network-Login A python program that helps you log in UCAS network for free. 免费自动登录国科大校园网 声明:本软件 ...
- 路由器运行python脚本_写个Python脚本来登录小米路由器
这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速.好了,一起来分析分析. 首先看下小米路由器的登录界面 可以看到只需要输入密码即可登录,博主 ...
- python自动控制程序_巧用 python 脚本控制你的C程序
python是一门艺术语言,除了开发桌面程序,还能够开发网络应用,数据库应用,还可以代替shell编写一些的实用脚本,本文主要讲述了如何利用 python 程序控制你的 C 程序的行为. 作为例子,本 ...
- 自动发qq空间说说python脚本
准备材料: 1.python 2.selenium-3.141.0-py2.py3-none-any python install selenium文件路径 3.geckodriver(用以调用fir ...
- 思科网络基础课件_网络自动化认证,你选对了吗?
网络越来越依赖于软件,以及依靠工具来自动执行过往需要手动处理的功能.面对这种转型,网络工程师和管理人员应考虑获得自动化技能,而获取网络自动化认证可能是学习和发展这些技能的最佳方法. 现在网络自动化市场 ...
- 江理的校园网自动认证
前言 某天我无意中在某论坛上发现有大佬指出"网页登录的话 浏览器f12自己去抓",我们学校的就是用网页认证的. 脚本 首先打开浏览器进入认证页面,先不登录,按F12打开控制台,选择 ...
- 网络慢?看看路由器设置对不对
在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...
最新文章
- windows环境下跑hadoop自带的wordcount遇到的问题
- no qualifying bean of type_就是要让你彻底学会 @Bean 注解
- MySQL界面说明_mysql 界面
- php filter 文件包含,php://filter(文件包含漏洞利用)及php://input
- java打地鼠游戏-有背景音乐有图
- 这个外挂要上天了!教一千遍都不会的数理技巧,还不如搞懂最根本的概念!
- linux 实验指导书,linux操作系统实验指导书新 - 图文
- 关于C#绘制qq好友列表控件
- iOS 9.0系统策略更新
- 关于注册测绘师的点点滴滴
- 八千里路云和月,蚂蚁金服面出血,offer已拿,仰天长啸,壮怀激烈!
- MPlayer播放器源码分析 2012
- Appium和Python实现蚂蚁森林自动化收取能量
- 解决高铁WiFi上网问题,中兴新支点ICG与高铁强强联手
- EasyRTMPLive:RTMP流媒体直播软件应用解决方案流媒体直播软件应用
- 选品指南:波兰市场什么最好卖?有哪些热门类目?
- 计算机系23班趣味口号,23班口号怎么写
- 个人投资理财太平亿康的五种方式
- jdbc PreparedStatement中“?”报错
- ABC157 D - Friend Suggestions 题解