前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >好动校园理论考试破解(1/2)

好动校园理论考试破解(1/2)

作者头像
mythsman
发布2022-11-14 15:18:18
5960
发布2022-11-14 15:18:18
举报
文章被收录于专栏:mythsman的个人博客

背景

不知道从什么时候开始,学校的体育理论考试搞成了下载一个app然后在这上面考。。。本来觉得没什么,然后突然爆出这个app有一坨bug,安卓端多选题只能提交一个答案(后来发现原因是多选题提交答案时的while循环里多写了一个break。。。),导致分数奇低。虽然后来做了一个紧急修复,但从这也能看出开发人员的尿性。。。再后来,有个专门搞app的同学说他能够刷到满分,我稍微想了下,这种考试型app的逻辑能够被破解,无非有两个方法:第一种就是记录所有模拟题库中的题目和答案,然后比对考题进行提交;第二种就是他在把题目发送过来的时候顺带把答案也发送过来了,然后在本地做的成绩校验,最后把结果发回服务器。后来实际操作了下,发现app中的题库在考试阶段是关闭的,那么只就剩下第二种可能了。不得不说开发的同行们也是人才,发送考试卷子还会把答案发过来,而且报文还是明文未加密的,这不是成心勾人犯罪么。。。

这样,思路有了,下面就是操作了。说白了,我们需要做的就是抓包分析,分析他前后台传送的http报文,然后模拟考试。

抓包分析

跟抓网页不一样,这次是抓手机的包,那么就需要用电脑来代理手机的网络,具体做法详见Fiddler代理如何配置。这里讲的很清楚了,不过需要注意的是默认的端口8888可能会被一些程序占用,无法使用的时候换一个端口号即可。

当然首先电脑跟手机得是一个局域网,我这里当然是校园网。

顺便提一句,这个方法还可以用一个网关登陆N多个终端。。。不过目测是分享带宽的。。。

代理配置好之后,打开app,考一次试(这将浪费一次考试机会),记录下fiddler抓到的报文:

一、登陆

request

代码语言:javascript
复制
POST http://appsrv.ihodoo.com/login HTTP/1.1
If-Modified-Since: Sat, 18 Jun 2016 03:36:12 GMT+00:00
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; Mi-4c MIUI/V7.3.2.0.LXKCNDD)
Host: appsrv.ihodoo.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 46

username=17751129083&password=***************   (密码不给看)

respond

代码语言:javascript
复制
{
	"uid":"17751129083",
	"user_id":39052,
	"sno":"1427406034",
	"portalUserId":115982,
	"isBindSchool":true,
	"isMasterMass":false,
	"loginStatus":true,
	"bindDto":{
				"sno":"1427406034",
				"name":"丁庆祝",
				"school":{
							"id":26,
							"name":"苏州大学"
						},
				"schoolId":26,
				"schoolName":"苏州大学",
				"currentAdclassId":0,
				"currentAdclassName":""
			},
	"token":"afa6da18-0fd2-476c-93df-4a2e3b0263eb"
}

登陆的过程就是把用户名密码post过去,然后他会返回给你一堆信息,这里显示了json数据部分,意思也都很清楚,尤其注意那个token。

二、进入考试

request

代码语言:javascript
复制
GET http://appsrv.ihodoo.com/auth/exam/enterIndex?uid=17751129083&token=afa6da18-0fd2-476c-93df-4a2e3b0263eb HTTP/1.1

respond

代码语言:javascript
复制
{
	"id" : 10,
	"notices" : "",
	"startTime" : "2016年06月13日 00时05分",
	"endTime" : "2016年06月26日 23时55分",
	"totalSubCount" : 50,
	"examPaperId" : 318367,
	"examPaperName" : "试题来源:篮球21二年级",
	"subjectScore" : 2.0,
	"studentName" : "丁庆祝",
	"studentSno" : "1427406034",
	"itemName" : "篮球21",
	"examMinutes" : 60,
	"isAllowExam" : true,
	"isDuring" : true,
	"message" : "丁庆祝_篮球21二年级_20160614尚未交卷,请在规定的时间内完成考试!",
	"scores" : { }
}

这是进入考试的提醒,把uid和token用Get方法传过去,他会返回你即将得到的考卷的信息,包括某编号(id)、题目数(totalSubCount)、试卷编号(examPaperId)。

三、获得考卷

request

代码语言:javascript
复制
GET http://appsrv.ihodoo.com/auth/exam/start/10/318367?uid=17751129083&token=afa6da18-0fd2-476c-93df-4a2e3b0263eb&totalCount=50 HTTP/1.1

respond

代码语言:javascript
复制
{
    "dtos": [
        {
            "subName": "在体育锻炼过程中,使外环境与内环境在时间上协调起来,才能达到最佳的体育锻炼效果。", 
            "subId": 38667, 
            "sort": 6, 
            "totalCount": 50, 
            "options": [
                {
                    "id": 121582, 
                    "optValue": "A", 
                    "optLabel": "√"
                }, 
                {
                    "id": 121583, 
                    "optValue": "B", 
                    "optLabel": "×"
                }
            ], 
            "answers": [
                {
                    "optionValue": "A"
                }
            ], 
            "selects": [ ], 
            "isMarked": false
        }, 

      ......
      ......
      ......
        {
            "subName": "秋季的人体新陈代谢活动比较弱,对有害物质的抵抗力较低,更容易危害人体健康。", 
            "subId": 38668, 
            "sort": 8, 
            "totalCount": 50, 
            "options": [
                {
                    "id": 121584, 
                    "optValue": "A", 
                    "optLabel": "√"
                }, 
                {
                    "id": 121585, 
                    "optValue": "B", 
                    "optLabel": "×"
                }
            ], 
            "answers": [
                {
                    "optionValue": "B"
                }
            ], 
            "selects": [ ], 
            "isMarked": false
        }, 
        {
            "subName": "从文化的视角探讨奥林匹克运动,对___、___、吸收奥林匹克先进文化、加强社会主义精神文明建设,具有重要意义。", 
            "subId": 39050, 
            "sort": 29, 
            "totalCount": 50, 
            "options": [
                {
                    "id": 122844, 
                    "optValue": "A", 
                    "optLabel": "A 了解奥林匹克运动"
                }, 
                {
                    "id": 122845, 
                    "optValue": "B", 
                    "optLabel": "B 进行奥林匹克比赛"
                }, 
                {
                    "id": 122846, 
                    "optValue": "C", 
                    "optLabel": "C 弘扬奥林匹克精神"
                }, 
                {
                    "id": 122847, 
                    "optValue": "D", 
                    "optLabel": "D 开展奥林匹克教育"
                }
            ], 
            "answers": [
                {
                    "optionValue": "C"
                }, 
                {
                    "optionValue": "D"
                }
            ], 
            "selects": [ ], 
            "isMarked": false
        }
    ], 
    "message": "", 
    "isSuccess": true
}

这是获得考卷的过程,把id、examPaperId、uid、token、totalSubCount传过去即可,得到一堆试题。。。。。。这里取三种典型题目,第一个是单选题,第二个是判断题,第三个是多选题。每道题都有题目内容,题目编号,题目顺序(由于json是不保证顺序的,因此需要有个sort来控制顺序)、题目选项、以及题目答案。。。

四、模拟做题

request

代码语言:javascript
复制
GET http://appsrv.ihodoo.com/auth/exam/select/318367/38861?selectOptions=B,C&token=afa6da18-0fd2-476c-93df-4a2e3b0263eb&uid=17751129083

返回结果大概就是提交成功之类的。

这个过程其实就是把每道题的id、答案加上自己的uid和token一起发过去,非常简单。

五、提交试卷

request

代码语言:javascript
复制
GET http://appsrv.ihodoo.com/auth/exam/submit/318367?uid=17751129083&token=afa6da18-0fd2-476c-93df-4a2e3b0263eb HTTP/1.1

respond

代码语言:javascript
复制
{
  "score" : 6.0,
  "times" : 1,
  "totalRank" : 0,
  "scoreRank" : 11395,
  "message" : "试卷提交成功!",
  "rankMessage" : "您本次考试成绩还没有以前考得高,需要继续加油!",
  "isSuccess" : true
}

套路跟上面一样。。。最后发现我得了6.0分。。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 抓包分析
  • 一、登陆
  • 二、进入考试
  • 三、获得考卷
  • 四、模拟做题
  • 五、提交试卷
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档