syszt 发表于 2019-4-26 22:51

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

本帖最后由 syszt 于 2020-3-26 16:58 编辑

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


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 = 3000
    page = 1

    courselist = ) >= 1]

    coursecount = len(courselist)
    print('-----------------找到学分大于1.0的课程:{}个!-----------------'.format(coursecount))
    selenumber = int(input('请输入本次准备学习的课程数量(大于0且小于等于{}的数值):'.format(coursecount)))
    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)))

吾发如雪 发表于 2020-3-20 10:23

本帖最后由 吾发如雪 于 2020-7-30 09:37 编辑

参照syszt大神的代码写了《19屇4中全会》学习代码,打包好的EXE文件在百度网盘,自行下载吧
链接: https://pan.baidu.com/s/1n_V5KvxC-yexmrRU7Vt0AQ 提取码: smwc

如果觉得好,不要吝啬施舍一点吾爱币

syszt 发表于 2019-4-27 20:40

fengwolf3 发表于 2019-4-27 20:20
厉害了 哥。。。强国可以出源码吗?

强国的不敢分享,怕怕:shutup:,网上很多都被删帖了

elleys 发表于 2021-4-12 21:35

十九届五中全会精神专题培训班谁私信个账号密码,需要分析,我这地还没开班,没法写程序

syszt 发表于 2019-5-5 15:28

tempabc 发表于 2019-5-5 13:33
这是64位的吧,有32位的吗? 机子旧,还是老系统

已更新为支持64位和32位系统的版本,请重新下载

syszt 发表于 2019-4-27 19:45

uumesafe 发表于 2019-4-27 11:39
选课返回值: {'Result': '0', 'Message': '请登录'}
        提交完成学习进度的返回值: {'Result': False, 'C ...

你没有学习帐号吗?我这个只需输入帐号,不用密码也能完成学习任务。

鼠标别动 发表于 2020-3-20 15:53

鼠标别动 发表于 2020-3-20 14:51
真闪报名了

大神 有源码 吗,学习下

syszt 发表于 2020-3-5 20:08

本帖最后由 syszt 于 2020-3-5 20:15 编辑

jxjjmjz 发表于 2020-3-5 10:58
请输入用户ID:xxxx
Traceback (most recent call last):
File "applearn.py", line 77, in

应该是找到的积分大于等于1的课程数不够60个,将代码77行中的60改成50就行了

syszt 发表于 2019-4-29 11:24

wyzkingstone 发表于 2019-4-29 09:18
能否分享下app脱壳分析过程,先谢了。

梆梆免费版的壳,脱壳我参考的https://www.52pojie.cn/thread-757613-1-1.html,感谢作者的分享

syszt 发表于 2019-5-10 10:21

本帖最后由 syszt 于 2019-5-10 10:35 编辑

吾发如雪 发表于 2019-5-10 10:10
专题学习的课程学了不计学时,请问楼主是不是在服务器有又有加密算法?
这种情况,一般是服务器端有做时间校验,我测试过网页版的三分屏单节点的,开始和完成的时间间隔应大于视频实际时间的50%以上。手机版的因为有漏洞,如果不登录,可直接提交数据,不受时间校验的限制。如果登录的话,时间间隔应大于30秒。专题学习的因已过报名时间,我没测试过。

wpj 发表于 2019-4-26 23:04

佛了,各种学习强国~

muxiaohan 发表于 2019-4-26 23:35

谢谢分享

flycloud19 发表于 2019-4-27 09:14

谢谢分享

sogosogo 发表于 2019-4-27 10:20

请问这个具体要怎么用,有没有成品。

uumesafe 发表于 2019-4-27 11:39

        选课返回值: {'Result': '0', 'Message': '请登录'}
        提交完成学习进度的返回值: {'Result': False, 'CurrentProgress': '0.00'}
有没有测试帐号的?

fengwolf3 发表于 2019-4-27 20:20

厉害了 哥。。。强国可以出源码吗?

syszt 发表于 2019-4-27 20:32

sogosogo 发表于 2019-4-27 10:20
请问这个具体要怎么用,有没有成品。

已分享exe文件
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 湖南干部教育学院App自动学习的源码