T2
请通过 HTTP 抓包、Chrome 调试模式、查阅 HTML 源码或其他任何合理方式(甚至是搜索前人的博客或反编译 PKU Helper 应用等),分析北大门户(portal.pku.edu.cn)、网关(its.pku.edu.cn)、选课网(elective.pku.edu.cn)或教务网(dean.pku.edu.cn)其中任何一个或多个的登录行为。并根据你的分析结果,通过合适的顺序调用校方接口(IAAA、portal 等),实现一个输入学号、密码,并返回对应的姓名的功能。
如果你有 Android、iOS 或 Web 开发能力的话,建议实现为 GUI 形式,包含简单的两栏输入和登录按钮,并在登录成功后显示姓名即可。
如果你无法实现为 GUI 形式,则实现为命令行输入用户名、密码,命令行输出姓名的形式即可。或者任何你认为的可以方便展示的形式。
命令行形式可能形如:
1700012345 THIS_IS_A_PASSWORD
张三
GUI 形式的 UI 样式可以参考 PKU Helper 或校方网站的形式。
没有开发经历QAQ速成一波Web开发感觉有点悬就没有尝试。之前有参加过Rails on Girls的公益活动学习,在教练的帮助下用Ruby&Rails做了一个小网页,后来好久没用就真的忘了好可惜…
关于Password的问题,进的组倒是在做这方面的东西,不过有的是口令破解有的是口令策略加密算法之类的东西,和这个项目的关系不大。
我直接去查了PKU Helper在Github上面的源码,好吧我坦诚之前没有学过Java。于是用学校的渣渣网下载了Android Studio,下了源码包。然后找到里面IAAA然而看不懂,这就很刺激了。凭着我写C++的直觉和根据变量名注释乱猜一通的本事, finishIAAA()这个函数是完成IAAA之后用的,里面出现了
.setMessage("来自" + Constants.major + "的" + Constants.name + "你好,欢迎使用PKU Helper!")
所以我猜测Constants是一个用户的对象,Constants.name就是T2里面需要的返回名字的功能。
parameters = WebConnection.connect("https://iaaa.pku.edu.cn/iaaa/oauthlogin.do",arrayList);
这一句应该是和访问iaaa有关的。起码说明这段代码看起来是能够实现T2的功能的,还实现了游客登陆/管理员登陆/判断登陆账号密码是否错误等等许多的功能。
new LoginTask(username, password).execute();
这一句判断登陆,LoginTask好像是个类,在后面出现了,核心是判断登陆成功失败&判断网好不好。
顺便
else if ("12345678".equals(username) && "admin".equals(password))
这一句是一个后门一般的东西么感觉好神奇突然有了新惊喜,好想玩一玩啊23333。于是真的试了一遍Name=12345678,PW=admin,于是出现了欢迎管理员的界面好开心啊~刚为了分析特地又装了一遍PKU Helper,感觉贡献了下载量的自己真是棒棒哒~
由于ddl将近所以我并没有给出我的实现,有的只是PKU Helper的一段我相信能够实现这个功能的源码&基于源码的我的一通碎碎念。而且由于我从未见过java所以基本是猜的,有些描述可能直接用的是C里面的称呼也非常抱歉了。最重要的,含泪求过初试啊啊啊!!!