吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10726|回复: 152
收起左侧

[原创] 某教育app获取作业答案

    [复制链接]
Tonyha7 发表于 2022-3-30 14:07
本帖最后由 Tonyha7 于 2022-3-31 17:43 编辑

前言

学校买了个教育平板,用某教育app来上课 交作业 考试等
笔者心生歹意,便有了以下研究
为了保护我自己,账号的各种信息经过打码/修改等处理。

研究app

行为

当启动时,app会获取设备mac地址,并向平板的MDM发送广播来获取设备SN号,以验证此设备是否为账户绑定的设备。

抓包

话不多说,直接开抓。
首先来看登录的部分



可以看出提交了账号 auth mac地址 安卓API 获取到的SN 时间戳 key等信息
把时间戳和key删掉 同样可以正常返回数据
来看返回的json



里面包含了各种信息

auth原理

看起来是32位的md5
我们来看看app 从启动的Activity一直往下看
最终发现了这个



可以看出,auth应该是账号+密码+HHOO用md5计算而来的

伪造登录

用python写个简单的发包并获取数据的程序

import hashlib
import json
import requests
import webbrowser

def string_to_md5(string):
    md5_val = hashlib.md5(string.encode('utf8')).hexdigest()
    return md5_val

def open_url(url):
    webbrowser.open_new(url)

def post(postdata,ua):
    headers = {'user-agent': ua}
    try:
        req=requests.post(url="https://padapp.msyk.cn/ws/app/padLogin",data=postdata,headers=headers)
        return req.text
    except:
        print("网络异常")
        exit(1)

user=input("用户名:")
pwd=input("密码:")
mac=input("mac:").upper
api=input("安卓API:")
sn=input("SN(区分大小写):")
dataup={"userName":user,"auth":string_to_md5(user+pwd+"HHOO"),"macAddress":mac,"versionCode":api,"sn":sn}
res=post(dataup,"okhttp/3.12.1")

if json.loads(res).get('code')=="10000":
    avatar=json.loads(res).get('InfoMap').get('avatarUrl')
    open_url(avatar)
    print(res)
    exit(0)
else:
    print(json.loads(res).get('message'))
    exit(1)

(代码混乱 轻喷)



获取作业信息

来看看这是如何获取作业信息的



这里去掉了时间戳和key,同样可以正常返回数据



这里会返回一个resourceList 里面存有各题的id

看答案

随便找一个能查看答案的作业,发现是webview打开的网页
格式如下:

https://www.msyk.cn/webview/newQuestion/singleDoHomework?studentId=xxx&homeworkResourceId=xxx&orderNum=题号&showAnswer=1&unitId=xxx&modifyNum=1

其中studentId和unitId能从登录的返回信息中获取
homeworkResourceId为resourceList里题目的id
直接在浏览器中打开网页查看




代码如下:

import hashlib
import json
import requests
import webbrowser
#字符计算32位md5
def string_to_md5(string):
    md5_val = hashlib.md5(string.encode('utf8')).hexdigest()
    return md5_val
#浏览器新窗口打开链接
def open_url(url):
    webbrowser.open_new(url)
#模拟登录获取用户信息
def loginpost(postdata):
    headers = {'user-agent': "okhttp/3.12.1"}
    try:
        req=requests.post(url="https://padapp.msyk.cn/ws/app/padLogin",data=postdata,headers=headers)
        return req.text
    except:
        print("网络异常")
        exit(1)
#获取作业信息
def anspost(postdata):
    headers = {'user-agent': "okhttp/3.12.1"}
    try:
        req=requests.post(url="https://padapp.msyk.cn/ws/common/homework/homeworkStatus",data=postdata,headers=headers)
        return req.text
    except:
        print("网络异常")
        exit(1)

user=input("用户名:")
pwd=input("密码:")
mac=input("mac:").upper#mac地址要大写
api=input("安卓API:")
sn=input("SN(区分大小写):")
dataup={"userName":user,"auth":string_to_md5(user+pwd+"HHOO"),"macAddress":mac,"versionCode":api,"sn":sn}
res=loginpost(dataup)
#成功登录 获取账号信息
if json.loads(res).get('code')=="10000":
    avatar=json.loads(res).get('InfoMap').get('avatarUrl')
    open_url(avatar)#浏览器打开头像(同时测试能否正常打开浏览器)
    print(res)
    unitId=json.loads(res).get('InfoMap').get('unitId')
    id=json.loads(res).get('InfoMap').get('id')
#登录失败 打印原因
else:
    print(json.loads(res).get('message'))
    exit(1)

hwid=input("作业id:")
dataup={"homeworkId":hwid,"modifyNum":"0","userId":id,"unitId":unitId}
res=anspost(dataup)
hwname=json.loads(res).get('homeworkName')
print(hwname)#作业名
reslist=json.loads(res).get('resourceList')#题目list
list_b = []
for item in reslist:
    count=1
    #浏览器打开带答案的网页
    open_url("https://www.msyk.cn/webview/newQuestion/singleDoHomework?studentId="+id+"&homeworkResourceId="+str(item['id'])+"&orderNum="+str(count)+"&showAnswer=1&unitId="+unitId+"&modifyNum=1")
    count=count+1#题号滚动
    list_b.append(item['id'])
print(list_b)#打印题目id列表

大功告成



2022年3月31日 代码加注释

免费评分

参与人数 32威望 +1 吾爱币 +45 热心值 +28 收起 理由
824 + 1 + 1 谢谢@Thanks!
秽土转生 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
acesec + 1 moyu
智趣库 + 1 + 1 我很赞同!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hxhaozi + 1 我很赞同!
shy851212 + 1 + 1 谢谢@Thanks!
lynlon + 1 + 1 热心回复!
Zz4794zZ + 1 + 1 我很赞同!
Xyzbb + 1 用心讨论,共获提升!
bkzkdetevh + 1 + 1 我很赞同!
bilibini + 1 我很赞同!
qwe134133987 + 1 + 1 热心回复!
shalj + 1 + 1 热心回复!
殇熙 + 1 我很赞同!
sansanla + 1 + 1 大佬,python代码那个段落能不能再详细解释一下
Lviviv + 1 谢谢@Thanks!
crjc2002 + 1 + 1 谢谢@Thanks!
FY0809 + 1 我很赞同!
gengshuoyan + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
happyBread + 1 + 1 我很赞同!
AirTed + 1 + 1 我很赞同!
笙若 + 1 + 1 谢谢@Thanks!
PoJ521 + 1 谢谢@Thanks!
4nfu + 1 + 1 鼓励转贴优秀软件安全工具和文档!
52shuqi + 1 + 1 鼓励转贴优秀软件安全工具和文档!
qq312155 + 1 + 1 热心回复!
韬. + 1 + 1 我很赞同!
ppp9527007 + 1 + 1 用心讨论,共获提升!
nemonemone + 1 + 1 热心回复!
larf + 1 + 1 热心回复!
XAQ1113 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
mokson 发表于 2022-3-30 14:17
提示: 作者被禁止或删除 内容自动屏蔽
CTHH6b 发表于 2022-3-30 14:15
海尔波普彗星 发表于 2022-3-30 14:28
ljlVink 发表于 2022-3-30 14:12
牛蛙 这比我研究的细多了
756655704 发表于 2022-3-30 14:16
大神确实厉害学习了
shuaishuaifirst 发表于 2022-3-30 14:18
厉害,赞一个
XAQ1113 发表于 2022-3-30 14:32
厉害,学到了
lzh68575536 发表于 2022-3-30 14:35
厉害啊......
feijun 发表于 2022-3-30 14:37
有的平板刷机也可以的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 12:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表