项目地址

开源库 https://github.com/FZSZXXB/ClassSchedule
Demo https://dev.hellocraft.xyz/ClassSchedule/

起因

学校信息部发布了一个任务 需要在微信公众号上快捷查询课程表
其实还有一堆别的任务 摸了个最轻松的

干活

前端

随便找了个课程表js糊上去
然后稍微美化了一下
加上 cookie 和 localStorage 的缓存免得每次打开都得重新选择班级
再加个pwa方便添加到桌面
QQ截图20220529195549.png
开源库链接

后端

因为前端的暴力数据填充(详见github data.js)
总不能每个学期手写json
然后就打开了手上唯一能查看学校课程表的内部app校智达
但这破玩意需要登录账户 而且是校方发放的
还好手上有个公用(?)账户
黄鸟启动 capture package
一堆api套娃 拉到了课程表
但测试环境用的是固定token接下来研究登陆部分
果然 密码是加密的 算法还一眼看不出来
QQ截图20220529200600.png
逆出来的一部分代码

逆向(众所周知,就不放图了)

apk解压 dex2jar jdgui三件套准备
等等 mt管理器显示这玩意是360加固?
https://www.google.com/search?q=360加固脱壳
噼里啪啦一顿操作 貌似有用上xposed 终于拉到了正确的dex
dex2jar一下 jdgui打开
还好混淆的不多
直接搜索uri关键词 还好没有加密 直接定位到加密部分
发现还是看不懂
直接换成java写自动获取 把加密代码全部复制出来 debug到能跑
然后在找个json库把数据格式化输出
完工

后记

项目最初完工于2021/03/12
最开始还是想着自己完全新做一个的
然后发现还是用造好的轮子香
cookie 和 localStorage 都是因为自用而加的功能(
以及
学校服务器三天两头维护/不开机
只好本地维护一份自用
以及自动更新没写说明 而且只给了源码
希望后面的人会用
不过现在看来没有人会用