某软件商店app抓包分析与sign加密算法实现

文章目录

  • 1. 写在前面
  • 2. 抓包配置
  • 3. 抓包分析
  • 4. 接口测试
  • 5. sign加密算法
  • 6. 数据效果展示

【作者主页】:吴秋霖
【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作!
【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建与开发实战》
还有未来会持续更新的验证码突防、APP逆向、Python领域等一系列文章

1. 写在前面

  APP逆向分析的第一步,就是抓包分析!抓包这个层面能够碰到的坑那也是数不胜数,现在大一点的APP基本都是自己的协议,然后就是各种防抓包,wifi代理检测,转发检测,证书校验…

做为一名多年爬虫过来人,告诉你爬虫的过往与未来:

基础:

语法,爬虫库+框架,解析库(五花八门),抓包工具(应有尽有),多线程,多进程,分布式爬虫,自动化与存储方案

六七年之前会上面部分加少量的反爬虫对抗能力,去任何一家爬虫业务的企业,爬虫团队长老位必有一席之位!

Web逆向:

浏览器构造,基础语法,Bom、Dom属性与方法,调试技巧与工具,加密定位,代码混淆,补环境,AST,扣代码,算法还原,指纹与风控对抗能力(里面有超过一半需要长期实践加经验积累)

以上两项掌握,如果是在三年前基本在另何一家企业都是爬虫团队的中坚核心力量,首席长老就是你!

APP逆向:

逆向原理,Java 、Smali语法,反编译工具,各种Hook手法与工具,调式与定位技巧,砸壳,加固

还有你见或没见过的各种验证码: 滑块,点选,运算,图文,逻辑

爬虫的尽头无疑就是逆向,根本学不完!


分析目标

T1BQT+i9r+S7tuWVhuW6l++8jOiHquW3seS4i+i9vQ==

2. 抓包配置

  这个APP有一个证书校验,如果直接去抓包的话,就是下面这个情况:

在这里插入图片描述

这里的话咱们也是可以使用Frida去Hook掉证书验证,当然你需要反编译APP并且定位到验证部分

这里我使用的是Charles + Drony的方案去抓这个APP的包,用什么方案不是唯一的,也可以使用Postren

Android7.0之后默认不信任用户添加到系统的CA证书。所以再这里我们需要把Charles的证书放到手机的系统证书路径下,不然https协议数据包是失败的(保证手机已经root

/etc/security/cacerts #系统证书路径
/data/misc/user/0/cacerts-added #用户证书路径

把Charles证书保存到本地,使用如下命令进行计算:

openssl x509 -subject_hash_old -in wql.pem(文件名)

在这里插入图片描述

把上面计算出来的d27ccb05文件拷到手机系统证书下,后缀名的数字是为了防止文件名冲突的,推送到手机命令如下:

adb push d27ccb05.0 /sdcard

adb shell进入到命令行模式,将我们刚刚推送到/sdcard下面的d27ccb05.0证书移动系统中证书路径下去,如下所示:

su #切换权限
cd /sdcard # 切换目录
mv d27ccb05.0 /etc/security/cacerts # 移动证书

在这里插入图片描述

然后我们再到手机上看系统证书,就可以看到我们刚刚移动进去的证书文件了, 如下所示:

在这里插入图片描述

接下來,Drony配置如下,主要一个就是局域网IP地址加端口,这个端口就是Charles的端口,如下所示:

在这里插入图片描述
最后下拉点击规则配置,这里的话选择我们抓包的APP应用即可,如下所示:

在这里插入图片描述

3. 抓包分析

在完成上面配置准备之后,就可以开始抓包了,打开APP跟Charles还有Drony,APP内点击搜索一下关键词,抓一下搜索接口的请求,搜索接口抓包信息如下所示:

在这里插入图片描述

可以看到headers的请求参数很多,但是大部分都是固定值。动态的有sign、id

下面再抓一下请求信息接口,可以看到参数基本都是一样的,两个接口不一样的地方就是sign加密参数内容有变化
在这里插入图片描述

4. 接口测试

我们先把抓包请求拿出来放到Postman工具内测试验证一下,搜索接口测试如下所示:
在这里插入图片描述

详情接口测试如下所示:

在这里插入图片描述

证明接口都是没有问题的~

5. sign加密算法

sign加密生成主要通过多个参数id、ocs、oak、salt做md5计算实现的

然后就是URL也参与了加密,md5之前的加密明文如下:

在这里插入图片描述

salt是一串盐字符串,固定的几个参数,将APK反编译后全局搜索能够找到,由于我这里7+版本的app删掉了,就不再验证展示

直接上算法,核心加密生成算法如下所示:

const crypto = require('crypto');function getMd5(body) {return crypto.createHash('md5').update(body, 'utf8').digest('hex');
}function getSign(url, t) {const oak = "cdb09c43063ea6db";const oakRear = "08f4fe8a43775179bdc58acb383220bc";const idd = "867686020" + Math.floor(Math.random() * (999999 - 100000 + 1) + 100000) + "///";const ocs = "google%2FNexus+6P%2F23%2F6.0.1%2FUNKNOWN%2F2%2FMHC19Q%2F7902";const salt = "STORENEWMIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBANYFY/UJGSzhIhpx6YM5KJ9yRHc7YeURxzb9tDvJvMfENHlnP3DtVkOIjERbpsSd76fjtZnMWY60TpGLGyrNkvuV40L15JQhHAo9yURpPQoI0eg3SLFmTEI/MUiPRCwfwYf2deqKKlsmMSysYYHX9JiGzQuWiYZaawxprSuiqDGvAgMBAAECgYEAtQ0QV00gGABISljNMy5aeDBBTSBWG2OjxJhxLRbndZM81OsMFysgC7dq+bUS6ke1YrDWgsoFhRxxTtx/2gDYciGp/c/h0Td5pGw7T9W6zo2xWI5oh1WyTnn0Xj17O9CmOk4fFDpJ6bapL+fyDy7gkEUChJ9+p66WSAlsfUhJ2TECQQD5sFWMGE2IiEuz4fIPaDrNSTHeFQQr/ZpZ7VzB2tcG7GyZRx5YORbZmX1jR7l3H4F98MgqCGs88w6FKnCpxDK3AkEA225CphAcfyiH0ShlZxEXBgIYt3V8nQuc/g2KJtiV6eeFkxmOMHbVTPGkARvt5VoPYEjwPTg43oqTDJVtlWagyQJBAOvEeJLno9aHNExvznyD4/pR4hec6qqLNgMyIYMfHCl6d3UodVvC1HO1/nMPl+4GvuRnxuoBtxj/PTe7AlUbYPMCQQDOkf4sVv58tqslO+I6JNyHy3F5RCELtuMUR6rG5x46FLqqwGQbO8ORq+m5IZHTV/Uhr4h6GXNwDQRh1EpVW0gBAkAp/v3tPI1riz6UuG0I6uf5er26yl5evPyPrjrD299L4Qy/1EIunayC7JYcSGlR01+EDYYgwUkec+QgrRC/NstV";const middleBody = ocs + t + idd + url.split('.com').slice(-1)[0].replace("?", "");const length = (middleBody.length + 48).toString();const body = oak + oakRear + middleBody + length + salt;return getMd5(body);
}const url = "https://api-cn.store.heytapmobi.com/search/v1/search?start=0&tabId=&searchType=10&size=10&keyword=快手"
const timestamp = Math.floor(Date.now() / 1000); // 当前时间戳
console.log(getSign(url, timestamp));

在这里插入图片描述

6. 数据效果展示

搜索接口与详情接口请求headers:

在这里插入图片描述

详情页面数据内容:

在这里插入图片描述

  好了,到这里又到了跟大家说再见的时候了。创作不易,帮忙点个赞再走吧。你的支持是我创作的动力,希望能带给大家更多优质的文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/172644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通用电气调查网络攻击和数据盗窃指控

通用电气正在调查有关威胁行为者在网络攻击中破坏了公司开发环境并泄露据称被盗数据的指控。 通用电气 (GE) 是一家美国跨国公司,业务涉及电力、可再生能源和航空航天行业。 本月早些时候,一个名为 IntelBroker 的威胁行为者试图在黑客论坛上以 500 美…

C#多种类的调用(模拟银行管理系统)(存在bug)

前言: 大家一起学习进步,提出改进意见 代码实现: using System; using System.Reflection;namespace FIfthtest_banksystem {public class Program{static void Main(string[] args){Account[] accounts new Account[3];{new Account { C…

人工智能_机器学习051_支持向量机SVM概念介绍_理解support vector machine---人工智能工作笔记0091

在出现深度学习,神经网络算法之前,支持向量机已经可以解决很多问题了,我们自然界中的问题,无非就是可以转换为回归问题和分类问题. 然后从现在开始我们来看支持向量机,首先看一下这几个字 support 是支持 vector是向量的意思,然后 machine指的是机器 那么我们之前用到的模型…

常见树种(贵州省):021冬青、连香树、白辛树、香合欢、云贵鹅耳枥、肥牛树、杜英、格木、黄连木、圆果化香树、南天竹

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、冬青 …

AIGC ChatGPT 4 快速整理不规则数据

从业务系统中采集到的数据如下: 序号 省份 英文 2022年销售额 2021年销售额 增量 1 广东guangDOng129068.58 124319.67 4748.91 2 江苏 JiangSu 122825.6 116314.2 6511.4 3 山东ShAnDong 87385 83045.9 4339.1 4 浙江…

手把手教会你--Hack The Box的账号注册(HTB Labs部分)

有什么问题,请尽情问博主,QQ群796141573 前言1.1 一次注册正确的注册过程1.2 讲讲我在注册过程中遇到的两个问题(1)点击REGISTER后无反应(2)提示Error! reCaptcha validation failed 前言 请务必跟着博主复…

常见状态码

欢迎大家到我的博客浏览。常见状态码 | YinKais Blog 常见状态码<!--more--> 1、200 200&#xff1a;服务器已经接收了请求&#xff0c;但处理还没有完成。 204&#xff1a;服务器已经成功处理了请求&#xff0c;但相应中没有任何返回内容。比如 DELETE 请求。 206&…

Python多线程使用(一)

一、多线程使用 1.使用threading库 # 使用threading进行调用多线程 from threading import Thread 2.使用 (1)使用函数方法 thread Thread(target方法对象, #不要括号args(参数1, 参数2) #一个参数也需要加上逗号 ) # 创建一个线程对象 ​ thread.start(…

我的128天创作纪念日

嘿&#xff0c;大家好&#xff01;今天我想和大家聊一聊CSDN创作者128天纪念日的话题。 机缘 首先&#xff0c;让我们来谈谈机缘。作为CSDN创作者&#xff0c;我们都有自己的创作机缘。可能是因为对某个领域感兴趣&#xff0c;可能是因为想要分享自己的知识和经验&#xff0c…

网络爬虫(Python:Selenium、Scrapy框架;爬虫与反爬虫笔记)

网络爬虫&#xff08;Python&#xff1a;Selenium、Scrapy框架&#xff1b;爬虫与反爬虫笔记&#xff09; SeleniumWebDriver 对象提供的相关方法定位元素ActionChains的基本使用selenium显示等待和隐式等待显示等待隐式等待 Scrapy&#xff08;异步网络爬虫框架&#xff09;Sc…

【docker系列】docker高阶篇

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C语言:写一个函数,求字符串的长度,在main函数中输入字符串并输出其长度(指针)

分析&#xff1a; 在程序中&#xff0c;定义一个函数 fix&#xff0c;该函数使用指针变量来访问字符串中的每个字符&#xff0c;并计算出字符串的长度。fix 函数的参数为指向 char 类型的指针变量 p&#xff0c;表示需要计算长度的字符串。 在主函数 main 中&#xff0c;定义一…

【Dockerfile】将自己的项目构建成镜像部署运行

目录 1.Dockerfile 2.镜像结构 3.Dockerfile语法 4.构建Java项目 5.基于Java8构建项目 1.Dockerfile 常见的镜像在DockerHub就能找到&#xff0c;但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像&#xff0c;就必须先了解镜像的结构才行。 2.镜像结构 镜…

5G NSA注册解析及图标显示方案

5G NSA注册解析及图标显示方案 1. NSA注册流程解析1.1 NSA注册流程1.2 NAS消息信元变化1.3 UE能力信元变化1.3.1 第一次UE能力查询1.3.2 后续UE能力查询1.3.3 UE能力过滤器解析 1.4 UE测量配置1.5 SCG添加消息解析1.6 SCG添加成功1.7 Split Bearer承载的建立1.8 NR协议查询索引…

华为OD机试 - 围棋的气(Java JS Python C)

题目描述 围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19 x 19 = 361 个交点,对弈双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。 “气”是围棋中很重要的一个概念,某个棋子有几口气,是指其上下左右方向四个相邻的交叉点中,有几个交叉点没有棋子,由此可…

解决OSError: [Errno 28] No space left on device报错和搭建AIrtest无线配置手机集群

OSError: [Errno 28] No space left on device和搭建AIrtest无线配置手机集群 做手机无限集群控制时&#xff0c;常常遇到这种错误问题。表示您的设备上没有足够的可用磁盘空间来完成某个操作。我们遇到了还得重新开端口和输入ip&#xff0c;如果有几百台手机是不是中午就不吃…

【古诗生成AI实战】之五——加载模型进行古诗生成

回顾上一篇博客&#xff0c;我们已经成功地训练了我们的模型&#xff0c;并将其保存下来。这是一个重要的里程碑&#xff0c;因为训练好的模型是我们进行文本生成的基础。 现在&#xff0c;接下来的步骤是加载这个训练好的模型&#xff0c;然后使用它来生成古诗。 本章的内容属…

2023年网络安全比赛--综合渗透测试②(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.通过 PC 中的渗透测试平台 Kali 对服务器场景进行渗透测试,将扫描开放的所有端口当作flag提交(例:21,22,23); 2.通过 PC 中的渗透测试平台 Kali 对服务器场景进行渗透测试,将初…

人工智能-优化算法和深度学习

优化和深度学习 对于深度学习问题&#xff0c;我们通常会先定义损失函数。一旦我们有了损失函数&#xff0c;我们就可以使用优化算法来尝试最小化损失。在优化中&#xff0c;损失函数通常被称为优化问题的目标函数。按照传统惯例&#xff0c;大多数优化算法都关注的是最小化。…

计算机图形学-变换基础

坐标系转换历程模型坐标系 -> 世界坐标系 -> 摄像机坐标系 -> 视口&#xff08;屏幕&#xff09;坐标系 变换 仿射变换和线性变换线性&#xff1a;旋转 缩放 镜像 切变放射&#xff1a; 平移 平移 2D变换矩阵 3D变换矩阵 旋转 2D旋转矩阵 //2D 旋转private (float,…