淘特app x-sign参数签名分析

2023-11-18

之前看见大佬说淘特app的风控比tb的要小很多,于是学习了下t特的签名分析

一、抓包分析

d4a2f17c5f194aa78a66325b3a19ffcb.png

通过Charles抓包分析,分析请求参数
headers = {
    "x-sgext": "JAWowlF3DRjHdjoiU%2Flc38K43prxmuGa9Jv3muGc94vwhPOE84TzhPaZ7pvume6e7p7unu6Y7pjume6Z7pvum%2BGZ9J36mfue9Zvyi%2FKbocrymPKZ8Z7zyfbOoJ7hmOGZ9YukzuGY8pj1i%2FGL84vzi%2FOL84vwi%2FOL84vxi%2FCL8Yvwi%2FKL8ovyi%2FKL8ovhzeHOp4vyi6Sd9crymw%3D%3D",
    "x-sign": "azOBBF004xAAIEC0%2BnSbXoHpMSMCYECwRSAyFmA8szXsYfQNn3TzGwWYI%2Bhh%2BJcr5DrjI3O0ptqb4nTUEIEEBOH04iBAoECwQKBAff",
    "x-sid": "26ab435dde95f9efff48375d37401d6bb34",
    "x-uid": "273179234",
    "x-pv": "6.3",
    "clipboard": "",
    "x-features": "27",
    "x-app-conf-v": "0",
    "x-mini-wua": "HHnB_g1U%2fffOqRFABD3qtZGgHeLI9tTC6%2B%2Fb89EtvOHAlokRy%2BO5HhpUdd4jNJKM6GEbaK%2BJLDLQAZqa2o32E%2Fjy6CassnEX5wtEz4THSDCobdOUUIInvNuk3fkGq%2FeTlqJBDBi0mIq7VL%2BRwpBzrXQWHKgaPzavPTasLotr4F1ydCso%3D",
    "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
    "cache-control": "no-cache",
    "oaid": "db320a2332307ec2e",
    "x-t": t,
    "x-bx-version": "6.5.53",
    "f-refer": "mtop",
    "x-extdata": "openappkey%3DDEFAULT_AUTH",
    "x-ttid": "700159%40ltao_android_4.21.0",
    "x-app-ver": "4.21.0",
    "x-c-traceid": "YgsIvfeg34fsvYiE1LEJLc1658196954357704613567v",
    "x-umt": "zRtL3fxLOrRShjWCFI15ukiqOTMwrfs4",
    "a-orange-q": "appKey=24717361&appVersion=4.21.0&clientAppIndexVersion=1120220718194900950&clientVersionIndexVersion=0",
    "x-utdid": "YgsIvdfsfdsfdYiE1LEJLS",
    "c-launch-info": "0,0,1658196958695,1658196729168,3",
    "imei": "9dhc6c423d6b256d",
    "x-appkey": "24717361",
    "x-falco-id": "0232b7891c70db644367ee5c74400c2a847_0",
    "x-devid": "NGqVf8ZMr9U39mKnFUSKA3zqQVIlTsdguuttvAG3mhNQrV7mqrIyDjwX4SH6qI7s",
    "user-agent": "MTOPSDK%2F3.1.1.7+%28Android%3B10%3BXiaomi%3BMI+8+Lite%29",
    "Host": "trade-acs.m.taobao.com"
}
cookies = {
}
params = {
    "wua": "TJ7g_4wD7rCCX873i6hcCcSJ3b851M5YGlo7J6KnTHHlSZHFcccccj4o+FO0hvMDw6jL9SY1jklso4z8tCVC9LvIokgTVTWWvmCuWYWyIR6EvtZddddddQj+FpLfepRi8WmjfwfBjsEy4/7qrxSXmahkXAIELxeNpvxHKsE3LQXP73PUTxObYUX5gXEQ7fCXg9vYHPVJXwuLTpH2uJYxY2/wulEP0kFCwT5fzYY1F1H0+dFFeZBT4XxjB0D7L5yUhqGLtGTFXTyjN3S6jzk+CRY0L9V8V6Ba3Q6vduQCxO6lnUErgnKl5RwkRK9hSRphAwI3lX1K/u2gm5N+ZrrrrrrzkcKBBqfFzmVWjn9Dlflbmycn8NIBPu790l1LztufXtHg3",
    "data": "{\"enterNewLink\":\"true\",\"exParams\":\"{}\",\"itemId\":\"673782044083\",\"version\":\"3.0.0\"}"
}
url = "http://trade-acs.m.taobao.com/gw/mtop.alibaba.jnpiter.detail.getdetail/1.0/"
response = requests.post(url, headers=headers, params=params, data=data)
额,熟悉阿里系相关app的应该都知道阿里的主要参数验证x-sgext、x-mini-wua、x-umt、x-sign、wua就是这几个

二、通过jadx-gui分析apk

按照以前某宝的思路,直接搜x-sign。只搜出来几个,这里点进去看下

2c257dbae43649c380059d8f5ee4f7bc.png

5de79d5bad474f24be76d13cac043524.png

看一下a5的来历

dbd3695ea1db4918a3ce5764d3aac37a.png

最后进入这里,一开始还以为找到了。结果hook了半天,没反应,又继续搜,又没找到其它类似的。猜测该方法被其它地方重写了。

于是直接搜a(HashMap<String, String> hashMap, HashMap<String, String> hashMap2, String str, String str2, boolean z, String str3),果然有

c45a5ceb38b0454ca7c791cd84e14022.png

最下面那个点进去就是

948c78193c9c4ad984f3b8fd79a000a2.png

hook下看看,入参和返回值都打印出来了,其中参数5是用来验证wua这个返回值的,传入true就会返回wua,否则不会返回wua

83d291d23edd427e80fafdb2a6da63f7.pngcb35c433c442435da19d2e6e2eed1427.png

三、测试结果

最后模拟测试下,我这里测试的是详情页,不断更换商品id(itemId)也能返回数据。证明参数构造成功。

7253cca151084067806921f4192053e7.png

0ff0f58633e348c797d8ccd1a690a711.png

额,淘特的详情页不加携带登录信息也能返回数据。。不过我这里还没大量测试

最后再分析下x-sign参数来源
使用这个方法打印下该类的所有成员变量试试
    var fields = Java.cast(this.getClass(),Java.use('java.lang.Class')).getDeclaredFields();
    for (var i = 0; i < fields.length; i++) {
        var field = fields[i];
        field.setAccessible(true);
        var name = field.getName();
        var value =field.get(this)
        console.log("key:",name, '/', "value:", value);
    }

211918d59522454c8fb4f62807a0a1d1.png

可以找找com.xxxxx.wireless.security.middletierplugin.c.a.a$a这个类在哪里

//反射方式替换loader,查找实例
    Java.enumerateClassLoaders({
        onMatch:function(loader){
            try {
                if(loader.findClass("com.xxxxx.wireless.security.middletierplugin.c.a.a$a")){
                    console.log("ok");
                    Java.classFactory.loader = loader;
                    console.log(loader);
                }
            } catch (error) {
                console.log("error");
            }
        },onComplete:function(){}
    })

0a124b1a3d434f9aa801da098663957c.png

libsgmiddletier.so这个so文件里面应该就是x-sign的算法了,算法还原就交给各位大佬了。。。。

楼主是小白,大佬勿喷。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

淘特app x-sign参数签名分析 的相关文章

随机推荐

  • 解决同时多个请求的处理问题,和定时任务

    应用场景 发布系统 让他晚上2点执行发布的一串任务 定时任务 更新访问量 晚上2点定时将数据从redis更新到mysql中去 商城类的抢购工作 大批量的用户涌入 承载不了一次性处理这么多的活儿 用这个方式也可以 目录结构 1 让woker运
  • maven项目debug查看依赖包源代码办法

    默认的maven工程 好像很难加载依赖的源代码 办法如下 maven调试时 无法进入源码 办法一 在debug配置里面 找到source 把带source的jar包 放进去 添加的时候 选add 再选external archive 这里要
  • jQuery——前端技术栈

    1 jQuery说明 jQuery 是一个 JavaScript 函数库 是一个轻量级的 写的少 做的多 的 JavaScript 库 jQuery 库包含以下功能 HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数
  • gin框架07--PureJSON

    gin框架07 PureJSON 介绍 案例 说明 介绍 通常 JSON 使用 unicode 替换特殊 HTML 字符 例如 lt 变为 u003c 如果要按字面对这些字符进行编码 则可以使用 PureJSON Go 1 6 及更低版本无
  • DataFrame入门丨Pandas数据分析基础(4)

    个人主页 互联网阿星 格言 选择有时候会大于努力 但你不努力就没得选 作者简介 大家好我是互联网阿星 和我一起合理使用Python 努力做时间的主人 如果觉得博主的文章还不错的话 请点赞 收藏 留言 支持一下博主哦 行业资料 PPT模板 简
  • Qt 6.x中Qt Quick简介及示例

    Qt Quick首次在Qt 4 7和Qt Creator 2 1中引入 是一种高级UI技术 Qt Quick模块是用于编写QML Qt Meta Object Language Qt元对象语言 应用程序的标准库 Qt QML模块提供了QML
  • Linux获取本机的IP的几种方式

    共计五条命令 使用的方式都不同 但原理相同充分利用LInux管道技术 root vagrant centos65 ifconfig eth0 grep Bcast cut d f2 cut d f1 192 168 191 2 root v
  • 西门子PLC的编程工具是什么?

    西门子PLC编程工具主要有下面这几个 1 STEP 7 Simatic Manager STEP 7或者Simatic Manager是西门子PLC编程最常用的软件开发环境 它是一款强大的集成开发环境 可以用来编写 调试PLC编程代码 还可
  • 《基础篇第4章:vue2基础》:使用vue脚手架创建项目

    文章目录 4 1初始化脚手架 4 1 1说明 4 1 2具体步骤 4 1 3模板项目的结构 4 1 4 创建第一个vue项目分析index html组成部分 4 1 5render函数 4 1 6修改默认配置 本人其他相关文章链接 4 1初
  • ubuntu wget ERROR 403: Forbidden 错误

    解决办法 临时变更wget的UA wget U 浏览器的useragent 下载地址 永久变更Wget 未测试 修改配置文件 etc wgetrc 添加下面这一行 header User Agent 浏览器的useragent 上面这个配置
  • 【vue】vue history和hash用法和区别

    vue中模式选择 router gt index js const router new VueRouter mode history base process env BASE URL routes hash和history区别 1 ha
  • 彷徨

    1 什么是hbase HBASE是一个高可靠性 高性能 面向列 可伸缩的分布式存储系统 利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群 HBASE的目标是存储并处理大型的数据 更具体来说是仅需使用普通的硬件配置 就
  • 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。

    题目描述 相传韩信才智过人 从不直接清点自己军队的人数 只要让士兵先后以三人一排 五人一排 七人一排地变换队形 而他每次只掠一眼队伍的排尾就知道总人数了 输入3个非负整数a b c 表示每种队形排尾的人数 a lt 3 b lt 5 c l
  • 贝叶斯优化优化参数,以Kmeans为例

    文章目录 步骤一 构造黑盒目标函数 步骤二 确定取值空间 步骤三 构造贝叶斯优化器 全部代码 贝叶斯优化有几个步骤 构造黑盒目标函数 确定取值空间 构造贝叶斯优化器 下面以kmeans为例 步骤一 构造黑盒目标函数 这个函数主要是运行需要的
  • Git笔记

    一 安装Git Win10 直接到Git官网下载安装程序 按照默认选项安装即可 安装完成后 在开始菜单里找到Git gt Git Bash 打开弹出类似命令行的窗口 则说明Git安装成功 安装完成后还需要对Git进一步设置 在命令行输入 g
  • ubuntu18.04 git clone:Failed to connect to github.com port 443: Connection refused

    git clone问题记录 一 Failed to connect to github com port 443 Connection refused 1 问题 2 解决方法 3 参考博文 二 gnutls handshake failed
  • Golang并发安全和锁

    目录 场景 互斥锁 读写互斥锁 互斥锁 读写锁 Sync Once sync Map 定时器 场景 有时候在Go代码中可能会存在多个goroutine同时操作一个资源 临界区 这种情况会发生竞态问题 数据竞态 类比现实生活中的例子有十字路口
  • Go学习笔记 : cobra 包简介

    cobra 是 go 语言的一个库 可以用于编写命令行工具 通常我们可以看到git pull docker container start apt install 等等这样命令 都可以很容易用corba来实现 另外 go 语言是很容易编译成
  • c++ 写一个头文件声明类方法,然后用一个cpp来定义类方法,最后再写一个main.cpp来调用类方法,出现找不到函数问题

    问题场景 在做 剑指offer 的面试题7 用两个栈实现一个队列 作者给出的代码只有两个文件 一个头文件和一个cpp源文件 然而从程序设计的角度来看 应当将头文件中的声明留在头文件中 函数的实现应当写在cpp源文件中 写完代码后 运行然而出
  • 淘特app x-sign参数签名分析

    之前看见大佬说淘特app的风控比tb的要小很多 于是学习了下t特的签名分析 一 抓包分析 通过Charles抓包分析 分析请求参数 headers x sgext JAWowlF3DRjHdjoiU 2Flc38K43prxmuGa9Jv3