标题上为什么说是再破解呢?因为已经有某开源平台上的大牛给我们铺过路了,具体是哪位在这里就不说了,懂的人自然能找到。这位大牛也很久没有更新了,在高校体育的大更之后,原先的登陆方式已经失效了,事实上只要在大牛的项目上稍加修改即可,下面就是关于这部分需要修改的内容,对新版高校体育get请求加密算法的逆向。

抓包

host改成了http://www.sportcampus.cn

GET请求包含了sign,info,mobile,password,type

sign:加密后的32位字符

info:就是下面的uuid

mobile:手机号

password:密码

type:手机型号

(账号密码竟然还是一如既往的明文传输)

GET请求格式还是和以前一样,大牛的代码里也已经分析过了,关键在于加密后的sign部分变了

实际上只要将大牛代码中get方法的参数直接换成抓包抓到的GET请求就可以登录成功,但是因为不知道如何加密所以更换账号就要重新抓包再修改代码,这样复用性太差,而我们要实现的是对任意输入的账号和密码都能登录

解析data格式化

{"info": "89FEF6F4589004705139B63C8EAF47BE","mobile": "XXXXXXXXXXX","password": "123456","type": "XXXX"
}

公共Header信息

这里和以前比发生了变化

headers = {'Accept-Language': 'zh-CN,zh;q=0.8','User-Agent': 'Mozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; FRD-AL10 Build/HUAWEIFRD-AL10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30','versionCode': '340','versionName': '2.3.15','platform': 'android','xxversionxx': '20180601','uuid': '','utoken': '','BDA9F42E0C8A294ECDF5CC72AAE6A701': '0,0,0,0,0','Host': 'www.sportcampus.cn','Connection': 'Keep-Alive','Accept-Encoding': 'gzip',
}

这个'0,0,0,0,0'不清楚是啥,以前是'1,0,0,0,1'

反编译逆向分析sign的加密方法

首先打开高校体育apk安装包

反编译classes.dex回jar包(app内的java源文件都被编译整合在这个文件中)

打开jar包:

里面的包名并不是高校体育的包名,而是tencent的包名,很明显该app被加了壳,加的是腾讯乐固壳

(这个软件竟然还加壳~~)

脱腾讯乐固壳

由于博主研究过windows平台的壳,因此脱安卓壳相对容易一些,乐固壳加壳原理也很简单,加密原来的dex文件,将app默认启动类修改为乐固壳,再动态解密加载app原来的类

具体的脱壳方式就不详细说明了,论坛里会有一些方法,这里重点讲的是高校体育加密的过程

博主脱出真正的dex文件后反编译打开:

现在的包名是高校体育真正的包名了,各个activity也一目了然

分析LogActivity

LogActivity就是登陆界面的活动了

找到登录按钮的点击事件,箭头所指的部分就是发送GET请求

可以看到sign的值是localObject对象中的sign成员,往上找可以找到

localObject = b.a(localDataUser);

这里混淆了类名和方法名,点进a方法分析

不出所料这个a方法果然是加密方法

加密密匙就不贴出来了,跟以前的一样并没有变化,大牛的代码里也写着。

这里的代码被混淆过了,return下面竟然还写着语句,按理讲应该永远也执行不到,可实际上上面的代码都是混淆代码,没有用,而return下面的代码才是真正的加密方法。

可以看到paramT是传入的参数,博主一开始一直在研究如何通过传入的对象转换为要加密的字符串,后来回头一看发现这句代码

localDataBean.data = paramT;

是的,localDataBean这个对象里的数据就是最终get请求中的数据,而data=paramT,传入的对象经过处理后变成的字符串就是get请求中的data,也就是刚刚的{"info":"89FEF6F4589004705139B63C8EAF47BE","mobile":"XXXXXXXXXXX","password": "123456","type":"XXXX"}

再由上面的localObject = b + "data" + paramT;(b为密钥)可知,被加密的字符串应该为 密钥+"data"+'{"info": "89FEF6F4589004705139B63C8EAF47BE","mobile":"XXXXXXXXXXX","password":"123456","type":"XXXX"}'

找到了被加密的字符串和加密的密钥,只剩加密的方法了

加密方法

继续分析刚刚的方法,有这样一句代码

localDataBean.sign = a((String)localObject);

这个a方法应该就是加密方法,点进去:

是的,很明显这就是MD5加密,其实这个加密算法版本更新后并没有改变,前面大牛的代码里也已经写出来了

我整理成了下面的java代码:

public static String jiami(String oldstr){String paramString = oldstr;Object localObject1 = "";try {byte[] arrayOfByte = MessageDigest.getInstance("MD5").digest(paramString.getBytes());int i = arrayOfByte.length;int j = 0;paramString = "";for (;;) {localObject1 = paramString;if (j >= i) {break;}Object localObject2 = Integer.toHexString(arrayOfByte[j] & 0xFF);localObject1 = localObject2;if (((String) localObject2).length() == 1) {localObject1 = new StringBuilder();localObject1 = "0" + (String) localObject2;}localObject2 = new StringBuilder();paramString = paramString + (String) localObject1;j++;}} catch (NoSuchAlgorithmException e) {// TODO: handle exception}return (String) localObject1;}

其实这么多代码用pyhon只需要几行

import hashlib
def jiami(s):hl = hashlib.md5()hl.update(s).encode('ascii'))return hl.hexdigest()

注意这两个方法传入的参数为刚刚的 密钥+"data"+'{"info":"89FEF6F4589004705139B63C8EAF47BE","mobile":"XXXXXXXXXXX","password":"123456","type":"XXXX"}'

修改大牛的代码成功登陆

然后开始自动XXXX(手动 #滑稽)

懒惰推动学习和进步!

都说脱壳容易修复难,博主下面会着手研究修复脱完壳后的apk,并添加一些功能实现在手机上就能实现某些(特殊)功能。

不要留言要东西,溜了~~

(官方就不要和谐了吧吧吧---)

关于新版高校体育登录请求加密方法的逆向和再破解相关推荐

  1. 易班APP登录密码加密、sig逆向分析

    1.最近闲来无事,听说有一个易班app登录好练手,就去试了一下看看. 先抓个包看看 然后使用了腾讯的壳,脱一下,我这边用的是BlackDex64. 脱完壳之后导出来直接导出来拖到jadx,就是现在这个 ...

  2. 新版appium 支持name定位的方法(没试 记录再此)

    查找路径:appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\build\lib 修 ...

  3. 高校体育2.9.x脱壳+修复

    上次写高校体育还是两年前我正需要用它完成学校的跑步,后来自动跑完后就没再搞过它.然而万万没想到的是两年后硕士学习居然又要用到这款软件...寒假比较闲花一天时间倒腾了一下目前的安卓最新版2.9.0. 两 ...

  4. Python 爬虫进阶必备——某体育网站登录令牌加密分析,赶紧收藏哦!

    某体育网站登录令牌加密分析 aHR0cHMlM0EvL3d3dy55YWJvMjU5LmNvbS9sb2dpbg== 这个网站需要分析的是登录时候的 sign令牌 抓包与加密定位 老规矩先用开发者工具 ...

  5. App安全登录之密码、通讯加密方法(MD5,Base64,RSA,AES)

    今天研究了一下关于登录密码加密的问题,下面来说说实现. 一.RSA非对称加密: 具体流程如下:截取自http://blog.csdn.net/m372897500/article/details/50 ...

  6. Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案

    Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案 参考文章: (1)Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录 ...

  7. 未授予用户在此计算机上的请求登录类型解决方法

    我们在使用打印机的时候,偶尔会遇到"未授予用户在此计算机上的请求登录类型"的情况,出现这种情况的原因有很多,那么我们要怎么去操作呢?下面小编就来帮助大家解决未授予用户在此计算机上的 ...

  8. 共享未授予用户计算机登录,解决Win10 1909访问共享文件提示“未授予用户在此计算机上的请求登录类型”解决方法...

    相信大家对于电脑非常不陌生吧,那你知道雨林木风Win10提示"未授予用户在此计算机上的请求登录类型"如何解决吗?是由于什么原因导致的呢?不知道了吧,其实局域网非常简单,大家只需要按 ...

  9. 新版知乎登录之post请求

    前言 在上一篇文章中给大家讲解了requests发送post请求的几种方式,并分析了一些使用陷阱. 疑惑 在文章发表之后,有朋友给我留言说,知乎登录就没有使用提交Form表单(application/ ...

最新文章

  1. Eigen:C++中Eigen库的安装与学习
  2. CentOS修改忘记密码
  3. 微生物分类学研究利器:模式微生物基因组数据库
  4. 初探WCF 如何在配置文件中指定Address?
  5. java实现加减乘除运算符随机生成十道题并判断对错_2020年Java面试题(3年的工作总结),最全的知识点总结...
  6. 断开式绑定ComboBox 关键命令 1201
  7. oracle函数大全-字符串处理函数
  8. 【MySQL】MySQL 8 ERROR 1193 (HY000): Unknown system variable ‘tx_isolation‘
  9. Reids Lua 模糊查询所有key 及 相对应的集合总数
  10. ffmpeg视频裁剪,切割,crop裁剪相关
  11. 1957:【12NOIP普及组】质因数分解
  12. 修改360抢票的刷新频率+突破8车次限制,太简单了
  13. 生物特征模板保护技术
  14. OpenCV 文字检测与识别模块
  15. 数学建模拿到赛题后怎么办及一些(“歪门邪道”)小技巧——赛前必看
  16. 《Real-Time Rendering 4th Edition》全文翻译 - 第2章 图形渲染管线(上)2.1 ~ 2.3(20200720翻新)
  17. 童年记忆中的零食商品
  18. 利用Python批量识别电子账单数据
  19. 关于淘宝开放平台API的session失效问题解决
  20. windows 2003韩文版SP1和SP2补丁

热门文章

  1. 泰克示波器采样率问题解答
  2. 系统维护工具GhostXP U盘制作方法
  3. JAVASCRIPT、JSP、JS有什么区别和联系
  4. Vue.js:el-input自动获取焦点通过自定义指令实现v-focus
  5. 全球及中国无钥匙启动系统芯片行业研究及十四五规划分析报告
  6. 各种视频输出端口(HDMI、DVI、VGA、RGB、分量、S端子)图片说明 .
  7. 3DSMAX二次开发教程
  8. 蓝桥杯第五届C/C++ B省赛题目及题解
  9. PCB电路板从设计到生产的检测方法有哪些?
  10. 分享一个自定义的popuwindow效果,高度适配