首页 > 其他分享 >酷狗概念版signature逆向

酷狗概念版signature逆向

时间:2024-09-12 21:50:24浏览次数:3  
标签:逆向 酷狗 params signature array data card md5

概述

使用frida工具,浅浅研究一下app逆向吧,这个案例算是入门级别没啥难度。

Charles抓包工具抓包分析发现,在请求头有一个signature参数且长度为32,猜想大概率是md5加密,那么印证下结果是否正确

Frida

使用的设备是iOS,数据线时断时续的。这里采用局域网的方式进行连接

1、通过ssh开启手机的frida-server服务

0.0.0.0 代表接受所有ip的转发。如上图,代表着frida-server服务已经开启。

2、通过frida命令获取app的pid

-H Host,连接到主机上的远程frida服务器

-a 表示app,显示所有运行的app

获取到酷狗概念版的pid 19478

3、frida-trace跟踪“CC_MD5”函数 

官方的CC_MD5.js文件过于简单,这里做了简单的修改,并能返回入参和与此对应的md5加密后的结果

onEnter(log, args, state) {
    var md5_data = args[0].readUtf8String();
    console.log("MD5 - 参数值:")
    console.error(md5_data)
},
onLeave(log, retval, state) {
    var md5_digest = hexdump(retval,{length:16})
    var hexfied = " ";
    var raw_array = md5_digest.split("\n");
    for (var a = 0; a < raw_array.length;a++) {
      var line_array = raw_array[a].split(" ");
      for (var b = 0; b < line_array.length;b++) {
        if(line_array[b].length === 2) {
          hexfied += line_array[b];
          hexfied = hexfied.trim()
        }
      }
    };
    console.log("MD5 - 返回值:");
    console.error(hexfied + "\n");
}

重新刷新app首页,获取新的signature 

4、验证猜想 

并在终端输出的结果中查找抓包中的signature的值,发现确实是使用了md5加密

入参:

ovEFNp9SKfiU4IhZHPxpro0nnp0jLiUb

appid=3114

card_rank=3007,3014,3101,3001,3006,3102,3004,3005,3103,3104

card_size=3

clienttime=1726131910

clientver=11900

dfid=3dv3PB1sfnol1s9NI216OlHw

mid=d05348844bbbf60056b157aa643e15a182907550

token=0

userid=0ovEFNp9SKfiU4IhZHPxpro0nnp0jLiUb

现在分析哪些是常量,哪些是变量,简单且实用的办法(多次刷新)

新的入参:

ovEFNp9SKfiU4IhZHPxpro0nnp0jLiUb

appid=3114

card_rank=3007,3014,3101,3001,3006,3102,3004,3005,3103,3104

card_size=3

clienttime=1726132183

clientver=11900

dfid=3dv3PB1sfnol1s9NI216OlHw

mid=d05348844bbbf60056b157aa643e15a182907550

token=0

userid=0ovEFNp9SKfiU4IhZHPxpro0nnp0jLiUb 

5、文件比对

分析结果:
只有clienttime是个变量,(时间戳);
其它的都是常量,部分常量在请求头中体现
接口参数:
appid=3114&card_rank=3007%2C3014%2C3101%2C3001%2C3006%2C3102%2C3004%2C3005%2C3103%2C3104&card_size=3&clienttime=1726132183&clientver=11900&dfid=3dv3PB1sfnol1s9NI216OlHw&mid=d05348844bbbf60056b157aa643e15a182907550&token=0&userid=0&signature=1e2d007687e7d797b7cdd119a4fe1f9d
md5加密参数:
ovEFNp9SKfiU4IhZHPxpro0nnp0jLiUbappid=3114card_rank=3007,3014,3101,3001,3006,3102,3004,3005,3103,3104card_size=3clienttime=1726132183clientver=11900dfid=3dv3PB1sfnol1s9NI216OlHwmid=d05348844bbbf60056b157aa643e15a182907550token=0userid=0ovEFNp9SKfiU4IhZHPxpro0nnp0jLiUb
salt = ovEFNp9SKfiU4IhZHPxpro0nnp0jLiUb
由此signature = md5(salt + 请求参数 + 时间戳 + salt)

6、算法实现

在Charles,复制curl命令时,会出现--data-binary字样。需要将其转成hex,再转码成base64.防止python读取二进制报错

'Content-Encoding': 'gzip'

必须保留,不然会提示body解析错误

 

import hashlib
import time
import requests
from urllib.parse import urlencode
import base64

headers = {
    'Host': 'gateway.kugou.com',
    'Content-Encoding': 'gzip',
}
def md5_encrypt(text):
    # 创建一个MD5对象
    md5 = hashlib.md5()
    # 更新MD5对象,必须将输入数据编码为字节类型
    md5.update(text.encode('utf-8'))
    # 获取MD5哈希值(以十六进制格式表示)
    md5_hash = md5.hexdigest()
    return md5_hash
def request_url(url,params):
    base64_data = "bae64编码字符串"
    decoded_data = base64.b64decode(base64_data)
    res = requests.post(url,params = params,data=decoded_data,headers = headers).json()
    print(res)
def main():
    url = 'https://gateway.kugou.com/card/v1/pxy/youth_recommend'
    params = {
        'appid': '3114',
        'card_rank': '3007,3014,3101,3001,3006,3102,3004,3005,3103,3104',
        'card_size': '3',
        'clienttime' : '1726131910',
        'clientver': '11900',
        'dfid': '3dv3PB1sfnol1s9NI216OlHw',
        'mid': 'd05348844bbbf60056b157aa643e15a182907550',
        'token': '0',
        'userid': '0',
    }
    salt = "ovEFNp9SKfiU4IhZHPxpro0nnp0jLiUb"
    # 将字典转换成指定格式的字符串
    formatted_string = ''.join(f"{key}={value}" for key, value in params.items())
    params['signature'] = md5_encrypt(salt + formatted_string + salt)
    request_url(url,params)
if __name__ == '__main__':
    main()

7、运行结果

标签:逆向,酷狗,params,signature,array,data,card,md5
From: https://blog.csdn.net/weixin_57775169/article/details/142180124

相关文章

  • 【java逆向】3分钟理清Java对象头里面的那些杂事
    原创龙虾编程对象头是一个对象用于保存自身状态的区域,在HotSpot虚拟机中,对象在堆内存中存储的布局可以划分为三个部分:对象头(Header)、实例数据(InstanceData)、对齐填充(Padding),如下如所示:在Java中普通对象和数组对象的对象在布局上存在一定的差异,数组对象相比普通对象多了数......
  • UE4(5)逆向学习笔记(三)——UEDumper源码学习
    目录0.前言1.准备2.开始阅读2.1设置版本和Offset2.2获取GName2.3使用GName2.4获取GUObjectArray2.5使用GUObjectArray2.6寻找dump主流程2.6.1ObjectsManager::copyGObjectPtrs2.6.2ObjectsManager::copyUBigObjects2.6.3EngineCore::cacheFNames2.6.4EngineCo......
  • PDshell16逆向PostgreSQL 工程显示字段comment备注
    现状:当刚逆向成功的表结构是没有原来表结构中的,comment备注如下 然后pd逆向工程的sql已经返回了这个备注的含义 解决方案:1、设置显示注释列tools——DisplayPreferences…如下    勾选-按照下面得方式勾选这三个 复制这里的VBS脚本,打开菜单Tools>Execute......
  • Power Designer 连接 PostgreSQL 逆向工程生成pd表结构操作步骤以及过程中出现的问题
    、使用PowerDesigner16.5链接pg数据库1.1、启动PD.选择CreateModel…。 1.2、选择Modeltypes/PhysicalDataModelPhysicalDiagram:选择pgsql直接【ok】  1.3、选择connect在工具栏选择Database-Connect…快捷键:ctrl+shift+N.如下图:  1.4、选择配置连接......
  • PowerDesigner 逆向工程 Could not Initialize JavaVM!
    原项目的大量的表,使用PowerDesigner进行逆向工程。提示CouldnotInitializeJavaVM! 网上找到原因,PowerDesigner不可以使用64位JDK环境! 有一种不修改环境变量的方法在PowerDesigner目录下,建立一个启动批处理,如:startup.bat,在其中配置JAVA_HOME、CLASSPATH,如下例所示: ......
  • 逆向WeChat(六)
    上篇回顾,逆向分析mojo,mmmojo.dll,wmpf_host_export.dll,还有如何通过mojoCore获取c++binding的remote或receiver,并调用它们的功能接口。  本篇介绍如何对小程序mojoIPC进行嗅探Sniff,如何通过mojoIPC.sniffer抓包小程序https,如何打开小程序devtool,谁掌管了vconsole配置。本篇......
  • CTF逆向:将数组作为函数代码执行
    例题攻防世界BABYREflag判定条件为这个if(v5==14&&(*judge)(s))注意judge本质上是一个数组,(*judge)(s)则说明judge数组中的内容被当做代码执行但前面又有for(i=0;i<=181;++i)judge[i]^=0xCu;judge数组中的内容进行加密所以需要进行patch......
  • js逆向基础14异步编程3
    上节课遗留.finally.finally()方法不管Promise对象最后的状态如何都会执行.finally()方法的回调函数不接收任何的参数,也就是你在.finally()函数中是没法知道Promise最终的状态是resolved还是rejected的它最终返回的默认会是一个上一次的Promise对象值,不过抛出的是一个异常......
  • 京东h5st参数js逆向
    扣代码的环节挺简单的就不讲了直接到重点发现许多包都会有一个h5st的加密参数那么我们就要看这个参数是怎么生成的我们可以根据请求堆栈找到h5st的入口当然还有一种更简单的方法就是直接全局搜索h5st这里采用后者这里sign函数就是h5st生成的地方但是这是个promi......
  • js逆向--cai招网
    js逆向--cai招网一、寻找加密入口1、抓包2、关键字搜索寻找加密入口二、调试js三、python代码实现一、寻找加密入口1、抓包目标数据来源网址为:https://search.bidcenter.com.cn/search?keywords=%E5%85%AC%E5%85%B1%E4%BD%8F%E5%AE%85,打开开发者工具进行......