安卓逆向之oppo应用商店协议sign加密字段分析

news/2024/11/22 11:41:02/

实验室最近想要分析下oppo软件商店的协议写爬虫,记录下分析sign加密字段的流程,比较简单。
应用商店的搜索、详情页以及类别请求用的sign的构成与加密方式都相同:
在这里插入图片描述
反编译搜索关键字段:
在这里插入图片描述
可以看到最后的加密方法为HashUtil.md5Hex,那么参数肯定是加密前的明文了,对md5Hex进行hook:

# -*- coding: utf-8 -*-
import frida, sys
def on_message(message, data):if message['type'] == 'send':print("[*] {0}".format(message['payload']))else:print(message)
jscode = """Java.perform(function(){var temp = Java.use('com.nearme.common.util.HashUtil');temp.md5Hex.implementation = function(arg1) { send("Hook start....");var result = this.md5Hex(arg1);send("***arg1***:" + arg1);send("***result***" + result);return result;};   
});
"""
process = frida.get_usb_device().attach('com.oppo.market')
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()

得到加密前的明文:
在这里插入图片描述
Sign字段构成:标黄部分为固定值,绿色部分为GET请求Header中ocs字段,为设备信息不同设备不一样,蓝色部分为Header中t字段,固定部分。红色部分为Header中id字段,设备IMEI号码。紫色部分为查询的url,keyword为搜索字。之后蓝色字段为前面ocs字段到url的string的length()值。之后为固定字段。
在这里插入图片描述
加密方法:先将上述字符串md5加密,再转换为十六进制。加密方法如下:
在这里插入图片描述

hook结果:
在这里插入图片描述


http://www.ppmy.cn/news/734444.html

相关文章

OPPO R9S 锁屏手势密码,应用加密

system/gesture.key 锁屏手势密码 system/password.key 锁屏数字密码 安卓的解锁图案一共有九个点,按顺序设定值为000-008(注意这里是十六进制),这九个值依据设定好的解锁图案的顺序,依次排列,排列结果以hex的形式进行SHA1加密,然后以byte形式存储于gesture.key中。 安卓解锁…

python接口自动化(十八)--重定向(Location)(详解)

简介 在实际工作中,有些接口请求完以后会重定向到别的url,而你却需要重定向前的url。URL主要是针对虚拟空间而言,因为不是自己独立管理的服务器,所以无法正常进行常规的操作。但是自己又不希望通过主域名的二级目录进行访问&#…

自动驾驶OS市场的现状及未来

站在车企的角度看,QNX有点像Mobileye——尽管“易用”,但限制了车企的自主性;而Linux则有点像英伟达——比较“难用”,但赋予了车企很大的自主权及面向未来的兼容性。 随着车企对软件技术投入的加大和能力的提升,Linux…

分布式事务与数据一致性

文章目录 一、分布式全局id1、分库分表引发的id问题2、解决id问题(1)UUID(2)统一ID序列生成(使用mycat生成id)(3)雪花算法 二、分布式事物1、基本理论(1)CAP原…

接口与自动化测试

一、什么是接口? 接口就是API,意思是应用程序编程接口 接口本质上程序开发的函数和方法,提供参数和返回值 二、接口组成的要素什么? 接口访问的地址、请求的方法、参数、返回值 接口访问的地址 协议://IP地址或域名:端口号/应用名/功能名 请…

[架构之路-118]-《软考-系统架构设计师》-软架构设计-11-可靠性相关设计

第11节 可靠性相关设计 11.1 可靠性基本概念 可靠性工程是研究产品生命周期中故障的发生、发展规律,达到预防故障,消灭故障,提高产品可用性的工程技术。 信息系统的可靠性是指系统在满足一定条件的应用环境中能够正常工作的能力,可…

前端面试-高级篇

一、JavaScript进阶 #1 内置类型 JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object)。基本类型有六种: null,undefined,boolean,number,strin…