写了一个自动登录的程序,用来每天微信提醒上课以及成绩推送。

功能

已实现:

  1. 破解登录密码加密,实现自动登录。

可实现:

  1. 获取课表,每日推送。

  2. 抢课快人一步。

  3. 成绩推送。

  4. 方正教务系统各个功能都有api,可以自动化各种功能。

  5. 飞扬的思想来创造吧

分析网页

打开方正教务系统首页随便输入账号密码点击登录,会发现有一个post请求是发送登录信息的,点开Payload发现传入了四个参数。

yhm是明文显示的,可以忽略。

剩下的就是csrftoken、mm了。mm传入了两次,但是两次的值是一样的,这个时候直接打开搜索框进行搜索。

csrftoken值获取

首先搜索csrftoken的值,发现出现了两个链接,第二个是html页面,一眼就看到了csrftoken。我们点进去看看。

点开一看发现csrftoken是写在网页里面的,这就很好办了,写代码的时候请求网页用ButifulSoul库解析获取一下就行,现在我们来关注一下请求里面的mm。

csrftoken获取代码:

 复制代码 隐藏代码
def getpage(self):# 获取教务系统网站self.session.headers.update({"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN,zh;q=0.9","Cache-Control": "max-age=0","Connection": "keep-alive","Referer": 'https://jwxt.xjau.edu.cn/jwglxt/xtgl/login_slogin.html?time=' + str(int(time.time())),"Upgrade-Insecure-Requests": "1"})self.response = self.session.get('https://jwxt.xjau.edu.cn/jwglxt/xtgl/login_slogin.html?time=' + str(int(time.time()))).content.decode("utf-8")data = BeautifulSoup(self.response, 'lxml')self.csrftoken = data.find('input', id='csrftoken')['value']

mm加密分析

我尝试了“mm:”、“mm=”、“mm = ”这几个关键字,什么都搜不到,继续搜索mm这个关键字,出现了一大堆,看着就头疼。但是咱们有敏锐的洞察力,一眼就看到了关键字眼:hex2b64(rsaKey.ecvrypt(***))。这不就是rsa非堆成加密嘛,功夫不负有心人,找到了加密方式就很好破解了,我们点击进去看看。

观察了一下这一块,有个if...else...。在else里面就是mm的加密方式了。总共有三行,很典型的RSA非对称加密。其中先定义了rsakey这个变量,然后用setPublic方法来加密密钥。

因为是RSA非对称加密,所以“modulus”和“exponent”一定有方法获取到。我们来搜索一下

搜索到了“modulus”和“exponent”的定义方式在第48行。发现是请求了一个链接,链接返回的是json格式的数据,我们返回Network找找看。

果然找到了,请求的时候加上时间戳就可以直接获取了。我们现在返回加密那块。

我们点击函数hex2b64,他跳转到了一个新的js页面,这个页面只有72行,应该就是hex2b64的加密代码了。

搜索一下b64tohex,发现有一个function b64tohex(s){}函数,不用想,这个肯定就是b64tohex的加密代码了。是和hex2b64在一个js文件。

再搜一下encrpt,发现有一个js文件是名字就叫rsa.js。也不用想,肯定就是 RSAEncrypt的加密了。

这些都找到了,我们就把代码扣下来,写到js文件里面。同时要在js文件里写一个函数,用来调用获取加密密码。

 复制代码 隐藏代码
function getpwd(mm, modulus, exponent) {
var rsaKey = new RSAKey();
rsaKey.setPublic(b64tohex(modulus), b64tohex(exponent));
var enPassword = hex2b64(rsaKey.encrypt(mm));
return enPassword
}

js代码写好后运行一下,提示登陆成功!

到这里登陆就搞定了。后面获取课程表抢课,成绩推送直接调用接口就可以了。观察了一下所有功能都可以通过调用接口来实现。剩下的就是大家飞扬思想了。

女朋友教务系统抢课老抢不上怎么办,写个代码解决这个问题相关推荐

  1. ZUCC 正方教务系统 抢课脚本 抢课流程实现

    ZUCC 正方教务系统 抢课脚本 抢课流程实现 新版ZUCC正方教务系统抢课脚本的流程分析与实现,文章结尾有完整项目的所有代码. 个人博客文章链接 流程分析 账号登录进入首页 模拟请求进入计划内选课界 ...

  2. 用 Python 实现模拟登录正方教务系统抢课

    (点击上方蓝字,快速关注我们) 作者:小苏打 https://vhyz.me/2018/06/12/用Python实现模拟登录正方教务系统抢课/ 最近学校开始选课,但是如果选课时间与自己的事情冲突,这 ...

  3. xp系统链接不上宽带连接服务器,XP系统网络连接正常却上不了网怎么解决

    有XP用户遇到了无法上网的现象,网络却已连接,一切都正常.但是,网页就是无法打开,有时甚至会出现时连时断网的现象,XP系统网络连接正常却上不了网怎么解决?现小编介绍解决办法. 具体步骤如下: 1.打开 ...

  4. 抢课不再凭手速和运气,Python模拟登录学校教务系统抢课

    前言: 最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,不用再担心手速跟不上,抢啥中啥.不用再承受抢不中想去的课,最后被调剂到各种"灭绝师太&q ...

  5. python实现强智科技教务系统抢课(两种方法)

    前言 又到了选课的时间,又一次被教务系统的预选给安排了,硬是一门都没选中.于是想实现有没有自动捡课的方法.就整体分为两种方法,一种是获取get请求然后由python多线程提交去选课,一种是利用自动化测 ...

  6. python模拟登录教务系统_用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  7. 用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  8. asp 退出登录修改cookie能进入后台_用Python实现模拟登录正方教务系统抢课

    6月23日更新:由于国内高校正方教务系统或多或少都会有所不同,所以细节地方还是需要自己修改的,我这个过程也只是一个案例,但这其中的本质上是不变的,即是抓包分析. 如果有什么不懂的,可以在评论区评论,或 ...

  9. 用Python模拟登录学校教务系统抢课

    --  Illustrations by Vladislav Solovjov -- ♚ 作者:小苏打 博客地址:https://vhyz.me GitHub地址:github.com/vhyz/ZF ...

最新文章

  1. debian+pxe+preseed.cfg 安装配置
  2. leetcode算法题--0~n-1中缺失的数字
  3. 计算机组成原理多层次的存储器,计算机组成原理多层次的存储器
  4. csgo卡住关不掉_csgo退出卡住了 | 手游网游页游攻略大全
  5. Python 可以满足你任何 API 使用需求
  6. 2018.3.13 浮动 定位
  7. 嵌入式操作系统内核原理和开发(cpu的那些事)
  8. python hasattr内建函数测试
  9. 什么是电磁兼容标准?IEC、EN、TC77、CISPR等的区别!
  10. Otsu阈值分割详解
  11. 中国计量大学matlab,计量经济学及matlab.pdf
  12. word去除各种下划线
  13. yolo数据集标注软件安装+使用流程
  14. 右键文件或文件夹或空白处弹出菜单包含自己软件快捷方式
  15. mathtype试用期到后继续使用
  16. EasyExcel读写Excel
  17. 关于ActionContext.getContext()的用法心得
  18. 接口练习(台灯案例)
  19. HBase中RegionServer宕机恢复介绍
  20. [实战Java高并发程序设计:读后感:参考文献]第一章

热门文章

  1. 这几个质量超高的自学网站,每天逛10分钟,年薪百万不是问题!
  2. Centos 通过yum默认安装mysql,my.cnf的常用配置
  3. c语言多变量输入,技多不压身——C语言(五)变量,常量和输入输出
  4. 分析业务表 1(BOM)
  5. 教你如何提高网速(3种)
  6. html网页中加五角星,html如何添加五角星/星星图案
  7. 投资理财-如何判断公司价值
  8. DPVS适配博通100G网卡
  9. 通俗易懂说java设计模式-代理模式
  10. Android梅花布局