写在前面:从九月一号开始,也就是今天起,学校实行内外网统一登陆的手段,真的是....,每次上网都要登录一下,挺麻烦的,打开浏览器,输入内网登陆网址登陆,注销的时候也要输入注销网址,有点蛋疼,因此,在上网络攻防实训课的时候,突发奇想,要不做一个在桌面上的客户端吧,说干就干,在课堂上写了一下大概的思路

(有道云笔记真心是个好东西,自来水手动推荐)

1,数据流分析

还是使用火狐浏览器的firebug进行网络监视整个流程,学校的认证登陆页面是这样的

用firebug抓包是这样子的

突然发现学校的cookie没有加密....

不要在意这些细节,然后发现更简单的是,我用python post提交数据之后,就可以上网了,是不是很简单!

2.构建客户端

大概逻辑差不多了,就post数据过去就好了,就差界面了,首先想到了tkinter,虽然界面简陋,但是功能实现就好了

我使用的是python35版本的

使用到的库文件

tkinter PIL request beautifulsoup pyinstaller这些需要提前安装,这里使用pip安装,安装有问题自行谷歌
1)第一步,实现post提交
def crawl(username,passwd):url = "http://192.168.252.8/0.htm"payload = {'DDDDD':username, 'upass': passwd,'0MKKey':'µÇ ¼'}web_data=requests.post(url,data=payload)soup = BeautifulSoup(web_data.text, 'lxml')msg = soup.select('title')if msg[0].text=='登录成功窗':return 200else:return  0
其中,我注意到,post过去,登陆成功与否,都返回200,因此采取判断,响应内容的title不同来判断是否成功
2)登陆逻辑实现
def login():global loginstate #全局变量,判断是否登陆try:file = open("count.txt", 'rt')#使用读取本地文件的形式读入用户名密码except Exception:# 这是没有搜索到文件的的时候,需要创建一个文件showresult(404)print("文件没有呀")try:# 这是有了文件的时候,将账户跟密码s = file.readline()ss = s.split(',')s1=str(ss[0])s2=str(ss[1].strip())state = crawl(s1,s2)if state == 200:#200表示登陆通过loginstate=1showresult(200)else:#其他的表示登陆不通过showresult(0)except Exception:print("出落了")
3)注销逻辑的实现
def logout():global loginstateif loginstate==1:loginstate = 0#注销的代码nologin()message.set("注销成功")else:message.set("还没登陆呢")
4)界面的搭建
def main():root = Tk()#titleroot.title("校园网单点登录小助手")global messagemessage = StringVar()#底部message.set("感谢亲爱的***@***")ft = tkFont.Font(family="Arial", size=10, weight=tkFont.BOLD)image = Image.open("t1.jpg")#设置背景图片bm = ImageTk.PhotoImage(image)# label = Label(root)label = Label(root, image=bm)label.grid(row=0, columnspan=2)#登陆按钮open_button = Button(root, text="登陆", font=ft, pady=5, width=10, borderwidth=2, bg="#F3E9CC", command=login)open_button.grid(row=1, column=0)#注销按钮close_button = Button(root, text="注销", font=ft, pady=5, width=10, borderwidth=2, bg="#F3E9CC",command=logout)close_button.grid(row=1, column=1)status_message = Message(root, textvariable=message, pady=5, width=250)status_message.grid(row=2, columnspan=2)root.mainloop()
5)返回信息的设置
def showresult(status):global messageif status==200:message.set("登陆成功了!")if status==0:message.set("登陆失败,第一查看用户名密码,第二查看流量")if status==404:message.set('账户密码文件好像还没还没创建哦!')
6)使用pyinstaller对程序进行打包
使用pip安装好pyinstaller之后
pyinstaller -F -w python文件的路径
然后会提示
最后在最后提示的文件找到可执行文件,至于资源文件,我的路径是在根目录下,创建count.txt,填写账户名密码,还有将背景图片也拷贝到根目录下
软件结果如下:
目录:


以上

python3实现校园网认证客户端相关推荐

  1. 【供参考,博主已经没有实验环境了】【中山大学东校区】【中大】【tp-link wr703n】【openwrt】【校园网inode】【无线路由】新版教程-搭载最小的认证客户端【C版oh3c】

    根据各位童鞋的反馈,估计是校园网的认证方式已经升级,所以这个教程也仅提供参考了,无法正常使用. 希望各位后继者如果感兴趣,可以去github上pull项目再继续开发. ---------------- ...

  2. Drcom客户端可以卸载了! 在Windows上编写bat脚本实现深大校园网认证, 并可断线重连(Drcom Pt版)

    写在前面 之前有写文章分析了深大校园网的认证过程, 编写Linux脚本可在路由器等Linux设备上实现自动登录, 断线自动重连. 考虑到Windows才是主要使用者, 本篇文章分享在Windows上编 ...

  3. 抓包分析,一条Linux命令实现路由器自动登录深大校园网认证(Drcom Pt版)

    先说结论,通过抓包分析简化最后可以得出,其登录过程只是一个简单的向服务器发送HTTP GET请求或HTTP POST请求.只要在路由器启动之后自动发送一段 HTTP 请求,即可实现自动登录. 对于 G ...

  4. 自己动手写H3C校园网登录客户端(Linux平台版)

    自己动手写H3C校园网登录客户端(Linux平台版) By 马冬亮(凝霜  Loki) 一个人的战争(http://blog.csdn.net/MDL13412) 周一晚上的时候,和实验室的ZL同学提 ...

  5. 关于最近研究的绕过某校园网认证登录-DNS隧道-dns2tcp

    原理:dns隧道 条件:一台能联网的有独立IP的linux服务器以及能设置NS记录的域名. 总体思路:服务器架设dns2tcp, 域名提供商设置NS记录,客户端运行dns2tcpc 本文服务器采用阿里 ...

  6. Dr.COM宽带认证客户端共享上网破解V3.46

    校园网使用了Dr.COM宽带登录用户认证程序,Dr.COM对P2P下载限速,禁止单网卡代理.双网卡.宽带路由器共享上网,禁止通过修改IP和Mac地址接入.为了省钱,我决定将我们寝室只交一台电脑的上网费 ...

  7. 刷个openwrt,并加入改写的802.1X认证客户端(iNode认证)

    原文地址:http://blog.csdn.net/carl654940/article/details/7450253 两天的折腾openwrt与交叉编译,成功把802.1X写入认证客户端.上个大概 ...

  8. newifi2 刷padavan 校园网认证

    newifi2-D1路由器刷padavan & 校园网认证 选购 newifi2,性价格比挺高的,在某宝找了个最便宜的店家入了手. 毕竟要刷固件的,就算在某东买的,售后也会因刷非原厂固件而被拒 ...

  9. 一次简单的计网实践——浅谈校园网认证原理、ipv6机制绕过认证限制、双路由器宿舍组网

    注:本文所涉及的"任何设备",指在学生正常活动的区域内使用的设备. 一.山东大学威海校区校园网ipv4认证原理 1.认证系统介绍 山大威海校区内的校园网认证页面地址均为http:/ ...

  10. openwrt 认证收费_openwrt h3c 802.1x 校园网认证

    openwrt h3c 802.1x 校园网认证 环境 CHAOS CALMER (15.05.1, r48532) 校园网使用iNode智能客户端认证,使用802.1x协议 参考 B同学的教程(涉及 ...

最新文章

  1. 三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》
  2. 跨系统远程登录用Linux系统远程登录windows7
  3. 用java解决国王的金币问题_国王赏赐金币问题(减治法)
  4. 多agv系统调度的MATLAB仿真
  5. 拥抱开放计算标准 重构数据中心格局
  6. 前端学习(577):margin等其他属性扩展
  7. oracle运行产生的日志在哪里,运行临时表,是否有日志产生
  8. CMS 平台: Drupal, eZ Publish, WordPress, CMS Made Simple 横向比较
  9. getContext,getApplicationContext和this有什么区别
  10. 【转载】制作Ubuntu启动盘——详细记录,亲测有效
  11. Java Web 上应用良田高拍仪二次开发
  12. 利用IV分析仪测量二极管的伏安特性的测量方法及步骤
  13. 记12306货运系统“抢订空车”插件的编写--chrome插件各部分的交互
  14. 小甲鱼python课后题共多少讲_小甲鱼python视频第七讲(课后习题)
  15. dhcp failover linux,Centos7 安装 DHCP 4.1 服务器配置及热备
  16. pytorch - GAN
  17. macOS上的汇编入门(五)——第一个汇编程序
  18. VUE-17 图片的获取,购物车商品数量的添加与减少,计算整个购物车商品的价格(循环)
  19. Android教程 -05 Android6.0权限的管理
  20. 用虚拟信用卡支付的时候经常出现交易失败、无法付款?一篇文章帮你解决这些问题

热门文章

  1. LAMP使开放源代码软件安全性提高
  2. vmware 12 可用 序列号
  3. mysql 系统序列号_mysql 序列号
  4. Java自学免费视频教程
  5. 顶级大厂如何做好暗黑模式设计?来看 Ant Design 的规范文档
  6. Eclipse超级好看的主题,极力推荐
  7. 【软件教程】Spring Tool Suite(STS)
  8. 用bat命令重启explorer的方法
  9. 【python与数据分析】Python与数据分析概述
  10. python3怎么查看帮助文档pydoc?