首页 编程教程正文

湖南干部教育学院App自动学习的源码

piaodoo 编程教程 2020-02-22 22:13:11 1311 0 python教程

本文来源吾爱破解论坛

本帖最后由 syszt 于 2019-5-5 15:27 编辑

通过抓包、脱壳、逆向分析湖南干教App,获取了post参数中的jytoken的加密算法,完成了自动学习的python代码:
应要求分享打包后的exe文件(已更新为支持64位和32位系统的版本):链接:https://pan.baidu.com/s/1xwtBNpWYd81Gor-GRkcckQ    提取码:cz2o

[Python] 纯文本查看 复制代码

import requests
import time
import hashlib
import random

url = 'http://app.hngbjy.com/api/mobile/default.aspx'


def get_jytoken(*args):
    appid = 'jyzxapp'
    privateKey = 'jyapp@001!'
    version = '20181101'

    datatime = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    s = privateKey + "&" + appid + "&" + datatime + "&" + version + "&" + "&".join(args)
    md = hashlib.md5()
    md.update(s.encode())
    md5str = md.hexdigest()
    s = md5str + "&" + appid + "&" + datatime + "&" + version + "&" + "&".join(args)
    jytoken = ''.join('{:2X}'.format(ord(i)) for i in s)
    return jytoken


def get_CourseInfoList(userid, pagecount, page):
    data = {
        'method': 'getCourseInfoList',
        'channelname': '全部课程',
        'UserID': userid,
        'PageCount': pagecount,
        'Page': page,
        'Keyword': '',
        'Portal': '1'
    }
    response = requests.post(url, data=data).json()
    courselist = response['CourseInfoList']
    return courselist


def add_course(userid, coursenumber, jytoken):
    data = {
        'method': 'UpdateUserCourse',
        'userid': userid,
        'coursenumber': coursenumber,
        'AddAndDel': 'add',
        'jytoken': jytoken
    }
    response = requests.post(url, data=data).json()
    return response


def upload_timenode(userid, coursenumber, timenode, jytoken):
    data = {
        'method': 'UploadTimeNode',
        'userid': userid,
        'coursenumber': coursenumber,
        'timenode': timenode,
        'jytoken': jytoken
    }
    response = requests.post(url, data).json()
    return response


def get_timenode():
    timenode = random.randrange(300000, 320000, 1)
    timenode = '%06d' % timenode
    return timenode


if __name__ == '__main__':
    userid = input('请输入用户ID:')
    pagecount = 700
    page = 1

    courselist = [i for i in get_CourseInfoList(userid, pagecount, page) if float(i['Credit_hour']) >= 1]

    coursecount = len(courselist)
    selenumber = random.randrange(60, coursecount)

    print('-----------------找到学分大于1.0的课程:{}个,选择{}个开始学习-----------------'.format(coursecount, selenumber))
    print()
    starttime = time.time()
    for i, course in enumerate(courselist[:selenumber]):
        coursenumber = course['Course_Number']
        print('{}、正在学习的课程:{}'.format(i + 1, course['Course_Name']))

        # 选课
        jytoken = get_jytoken(userid, coursenumber)
        print('\t选课返回值:', add_course(userid, coursenumber, jytoken))

        # 完成学习
        timenode = get_timenode()
        jytoken = get_jytoken(userid, coursenumber, timenode)
        print('\t提交完成学习进度的返回值:', upload_timenode(userid, coursenumber, timenode, jytoken))

    print()
    print('学习总用时:{:.2f}秒'.format((time.time() - starttime)))

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7838.html

搜索