湖南干部教育学院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-7-30 09:37 编辑
参照syszt大神的代码写了《19屇4中全会》学习代码,打包好的EXE文件在百度网盘,自行下载吧
链接: https://pan.baidu.com/s/1n_V5KvxC-yexmrRU7Vt0AQ 提取码: smwc
如果觉得好,不要吝啬施舍一点吾爱币 fengwolf3 发表于 2019-4-27 20:20
厉害了 哥。。。强国可以出源码吗?
强国的不敢分享,怕怕:shutup:,网上很多都被删帖了 十九届五中全会精神专题培训班谁私信个账号密码,需要分析,我这地还没开班,没法写程序 tempabc 发表于 2019-5-5 13:33
这是64位的吧,有32位的吗? 机子旧,还是老系统
已更新为支持64位和32位系统的版本,请重新下载 uumesafe 发表于 2019-4-27 11:39
选课返回值: {'Result': '0', 'Message': '请登录'}
提交完成学习进度的返回值: {'Result': False, 'C ...
你没有学习帐号吗?我这个只需输入帐号,不用密码也能完成学习任务。
鼠标别动 发表于 2020-3-20 14:51
真闪报名了
大神 有源码 吗,学习下 本帖最后由 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就行了 wyzkingstone 发表于 2019-4-29 09:18
能否分享下app脱壳分析过程,先谢了。
梆梆免费版的壳,脱壳我参考的https://www.52pojie.cn/thread-757613-1-1.html,感谢作者的分享 本帖最后由 syszt 于 2019-5-10 10:35 编辑
吾发如雪 发表于 2019-5-10 10:10
专题学习的课程学了不计学时,请问楼主是不是在服务器有又有加密算法?
这种情况,一般是服务器端有做时间校验,我测试过网页版的三分屏单节点的,开始和完成的时间间隔应大于视频实际时间的50%以上。手机版的因为有漏洞,如果不登录,可直接提交数据,不受时间校验的限制。如果登录的话,时间间隔应大于30秒。专题学习的因已过报名时间,我没测试过。 佛了,各种学习强国~ 谢谢分享 谢谢分享 请问这个具体要怎么用,有没有成品。 选课返回值: {'Result': '0', 'Message': '请登录'}
提交完成学习进度的返回值: {'Result': False, 'CurrentProgress': '0.00'}
有没有测试帐号的? 厉害了 哥。。。强国可以出源码吗? sogosogo 发表于 2019-4-27 10:20
请问这个具体要怎么用,有没有成品。
已分享exe文件