一、__nstokensig签名

最近在学习android逆向,不足之处欢迎大佬多多指点。
这次分析的是快手极速版1.2.2.8,使用Fiddler抓包发现有2个签名,一个是__nstokensig和sig。

通过jadx-gui搜索字符串找到nstokensig算法,只在java层

这里我就不继续往下跟e.a了,实际上他就是判断编码的操作。通过上面第一层发现,是传递str和str2进行签名,接下来我们hook一下他的传参数据。

通过xposed hook观测得知,str是sig签名结果,str2是kuaishou.api_client_salt,也就是在快手登录之后返回的一个值,这个值后续包是抓不到的。只有登录的时候才有。

得到传参后,我们回到刚刚的第二层,发现他先用 sha-256 计算之后,还调用了d.a(),我们跟进去看即可拿到java层算法,直接抠出来即可。

以下就是扣好的nstokensig签名

// An highlighted blockpublic String getNsTokenSig(String sig,String token) throws NoSuchAlgorithmException {String str2 = sig+token;return new String(b(MessageDigest.getInstance("SHA-256").digest(str2.getBytes())));}private static char[] b(byte[] bArr) {char[] b = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};char[] cArr = b;int length = bArr.length;char[] cArr2 = new char[(length << 1)];int i = 0;for (int i2 = 0; i2 < length; i2++) {int i3 = i + 1;cArr2[i] = cArr[(bArr[i2] & 240) >>> 4];i = i3 + 1;cArr2[i3] = cArr[bArr[i2] & 15];}return cArr2;}

二、sig签名

sig签名之前看到是在so层,能力有限没有把so层还原成java代码,最终我只能通过unidbg或者xposed直接调用so,那么我们先看看sig签名都传递了什么参数,直接先继续搜索关键字"sig"


CPU.a() 就是计算sig,那么一共3个参数,第一个是Context,第二个是byte[],第三个是int
第一个和第三个都知道具体的结果,我们只需要关心第二个即可,我们发现他是通过合并2个map最后链接成字符串转成byte[],只需要关心a.b()里面干的事情即可。


这个比前面的签名更加简单,就是将map链接道一块儿,然后sort重新排序一下,那么接下来直接xposedhook来得到他传递的参数值。

通过2个map得知,第一个是url的参数,第二个是post的参数,也就是他是将2个参数衔接在了一起,那么这里贴一下map合并的代码。

    public byte[] encode(String url,String post){String[] url_arr = url.substring(url.indexOf("?")+1,url.length()).split("&");String[] post_arr = post.split("&");ArrayList arrayList = new ArrayList(url_arr.length+post_arr.length);for(int i=0;i<url_arr.length;i++){arrayList.add(url_arr[i]);}for(int i=0;i<post_arr.length;i++){arrayList.add(post_arr[i]);}Collections.sort(arrayList);byte[] data = null;try {System.out.println(TextUtils.join("",arrayList));data = TextUtils.join("",arrayList).getBytes("utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return data;}

只需要提供url和post即可处理好了,那么最好我们只需要通过xposed来调用so函数即可。

快手__nsTokensig和sig签名算法分析相关推荐

  1. 快手__nsTokensig和sig签名

    快手的这两个值都在java层: 市面上已经很多分析步骤了...咱们这里直接上干货源码. # -*- coding: utf-8 -*- # @Author : Codeooo # @Time : 20 ...

  2. 快手did设备注册,快手sig签名(sign解决,操作太快了,请稍微休息一下)

    快手签名计算分析,我们抓包看到sig签名字段,是post请求,32位MD5算法,把?后面的参数和post的参数一起排序,组合计算. 1.抓包参数 POST /rest/n/user/profile/v ...

  3. 抖音APP接口签名算法分析

    抖音作为一款日活超过1亿的优秀APP,其客户端与服务端的通信方式很值得APP开发者去研究和学习,为了保护其数据,客户端请求数据的接口都进行了加密,未经过加密处理的url,请求的时候不会返回数据,这里以 ...

  4. 关于腾讯开放平台应用宝sig签名的问题

    这两天搞个腾讯开放平台搞的心力憔悴, 第一是官方文章写的很不清楚, 腾讯开放平台第三方应用签名参数sig的说明 Step 1. 构造源串 源串是由3部分内容用"&"拼接起来 ...

  5. 快手sig签名,python版,可用于快手关键字搜索结果采集

    很多大佬分享了快手sig参数逆向破解的过程,我只是在大佬的基础上把sig加密部分代码转成python. sig生成原理:把url问号后面的参数转成dict,同时把form_data参数放在同一个dic ...

  6. 快手sig签名:搜索接口签名破解

    sig生成原理:把url问号后面的参数转成dict,同时把form_data参数放在同一个dict,然后对dict进行排序,排序后转成字符串并且加salt,最后进行md5加密就可以了. # -*- c ...

  7. 小兵别嚣张,签名算法分析

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 "分析unity3d游戏小兵别嚣张的签名算法." 不久前,写了个unity3d的引子,介绍了使用工具从unity3d游戏中提取出各种资 ...

  8. 想和应用宝sig签名谈谈

    首先,一般签名的英文是sign,然而应用宝的是sig,跟应用宝SDK接触久了你会发现应用宝自成一家的地方非常非常多,OK,既然不能改变别人,那我们就只能自己认了. 应用宝的文档非常多,重要的是还非常乱 ...

  9. php快手开发平台api签名

    使用php对接快手小点的api 签名官方文档:https://open.kwaixiaodian.com/docs/dev?pageSign=8cca5d25ba0015e5045a7ebec6383 ...

最新文章

  1. 数据统计脚本(汇总)
  2. 重庆市档案局(馆)数据备份一体机项目
  3. Scala in depth 6 Scala的类型系统 上
  4. leetcode 283. 移动零(Java版)
  5. python 爬虫 音乐下载 歌手_python爬虫批量下载全民K歌音乐
  6. C++类与对象(05)
  7. iOS-各种动画特效
  8. c语言变长数组参数,使用gdb跟踪C语言中变长数组的实现
  9. Security log is full,only administrator can log on to fix the problem(安全日志满了)
  10. Python植物大战僵尸源代码及素材
  11. 2021年PMP考试模拟题11(含答案解析)
  12. mmdetection3D---(1)
  13. C语言中求和、计算平均值、方差和标准差
  14. 安装linux系统的ppt课件,Linux系统安装与入门PPT演示课件
  15. 华为云水平到底怎么样?
  16. 毕业设计 stm32智能电子秤系统 - 物联网 嵌入式 单片机
  17. android 提示蓝牙无法配对,Android蓝牙不显示配对对话框
  18. ​人和人之间的差距在哪里?
  19. oraclel列变行(多列变成多行)
  20. Ubuntu 20 安装包下载(清华镜像)

热门文章

  1. android h5调用百度地图,h5页面如何调用百度地图获取当前位置(代码)
  2. 李彦宏妻子马东敏向中科大捐赠一亿,成立“蔷薇科大发展基金”
  3. Python编程-从入门到实践 Chapter19 第19章 创建用户账户的坑
  4. 分子 原子 电子 质子_受质子碰撞启发的大量数据文本挖掘
  5. 50个最佳物理学博客
  6. 榆熙电商:如何确定审美经济的内在构成符号是什么?
  7. 《王者荣耀》等“爆款”游戏是如何诞生的?| 马晓轶青腾大学演讲
  8. C字符串格式化转string+获取当前时间(精确到毫秒)
  9. 另类数字剖析车王轨迹 舒马赫的16年F1赛车人生
  10. 女性常掉头发的应对法(zt)