2023安卓逆向 -- 某合伙apk登录加密分析

news2024/10/6 16:16:26

接上节课内容

​​安卓逆向 -- 抓包环境设置(Charles+Postern)​​

一、分析登录的数据包,加密的数值是登录的密码,看着想md5加密,请求头中,x-sign也是加密的,看着也像md5。

POST /app/api/v1/partnerLogin/login HTTP/1.1
X-App: native
X-Noncestr: 123456
X-OS: partnerApp_android
X-Req-Time: 1685179539206
X-Sign: d5ff872d834ad9988d95ea8031b48107
X-Token: 
X-UserID: 
Content-Type: application/x-www-form-urlencoded
Content-Length: 59
Host: chinayltx.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.10.0


phone=15836353612&password=a2a07143c28b527f39cc4b1a9b41f639

二、反编译该apk

1、打开jadx,将apk拖进去分析,后台回复:课件666,获取

2、点击搜索,搜索数据包的部分url,这里搜索“partnerLogin/login”

3、双击进入第三个,这段代码的意思就是,通过submitLogin函数发起了一个POST请求

4、右击该函数,查找谁调用了submitLogin,双击进入该调用函数

5、 loginWithToken函数调用了submitLogin函数,我们继续查找谁调用了loginWithToken

6、看着下面出现了name和pwd,进入下面的调用

public class LoginUseCase extends UseCase<HttpResult<LoginInfo>> {
    private Repository mRepository;
    private String name;
    private String pwd;


    public String getName() {
        return this.name;
    }


    public void setName(String str) {
        this.name = str;
    }


    public String getPwd() {
        return this.pwd;
    }


    public void setPwd(String str) {
        this.pwd = str;
    }


    @Inject
    public LoginUseCase(Repository repository) {
        this.mRepository = repository;
    }


    @Override // com.yltx.oil.partner.mvp.domain.UseCase
    protected Observable<HttpResult<LoginInfo>> buildObservable() {
        return this.mRepository.loginWithToken(this.name, this.pwd);
    }
}

7、分析上面的代码,可以看到有个setPwd函数,这个就是加密函数,继续查看谁调用了该函数,进入一个md5的加密代码

8、继续搜索X-sign,双击进入该行代码

9、这行代码的意思就是将"X-Sign"赋值给PARAM_SIGN,并把他设置成了静态变量

private static final String PARAM_SIGN = "X-Sign";

10、局部搜索PARAM_SIGN,发现this.sign赋值给了PARAM_SIGN,而this.sign=sign(sb.toString())

11、按着ctrl键,点击上面a.b,进入到下面代码,代表一个&符号,requestBody请求体,初步判断sb.toString就是

phone=15836353612&password=a2a07143c28b527f39cc4b1a9b41f639

12、继续搜索sign函数,会看到下面一段声明代码

private String sign(String str) {
        return Md5.md5(this.token + this.reqTime + 
        this.noncestr.substring(2) + str).toLowerCase();
    }

12 、通过数据包发现token是空,reqTime是时间戳,noncestr是132456,最终就是将这些值进行md5处理。

13、验证代码

import hashlib
# md5加密=hashlib.md5()
# 密码="aiyou123"
# md5加密.update(密码.encode("utf8"))
# pwd=md5加密.hexdigest()
# print(pwd)


token=""
reqTime="1685346660611"
nnotallow="123456"[2:]
str="phnotallow=15836353612&password=a2a07143c28b527f39cc4b1a9b41f639"




md5加密=hashlib.md5()
要加密的字符串=f'{token}{reqTime}{non}{str}'
md5加密.update(要加密的字符串.encode("utf8"))
pwd=md5加密.hexdigest()
print(pwd)


运行结果:
9970affbcb8ee0d04eeb25d9020b3704

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

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

相关文章

2022 Kube-OVN开源社区年度报告

感谢各位社区小伙伴陪伴Kube-OVN又走过了快速发展的一年&#xff0c;随着Kubernetes技术的广泛应用&#xff0c;CNI网络插件的使用率逐步攀升&#xff0c;Kube-OVN社区也在不断成长。让我们一起跟随这篇文章&#xff0c;走进Kube-OVN的2022。 产品功能持续优化 2022年&#xff…

JavaScript高级教程(javascript实战进阶)

javascript高级、面试常问、必备知识点 1.数据类型2.引用变量赋值问题3. 对象和函数4.函数原型与原型链面试题一面试题二面试题一分析面试题二分析原型链注意点 5.执行上下文和执行上下文栈面试题一面试题二面试题一分析面试题二分析 6.作用域面试题一面试题二面试题一分析面试…

git(版本控制)详细解说【工作必备技能】

Git 1 什么是Git Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同&#xff0c;它采用…

轻松白嫖GPT-4,已经标星38K,不再害怕高昂的AI模型费用!

文章目录 白嫖GPT-4当前可白嫖站点 白嫖GPT-4 计算机专业学生xtekky在GitHub上发布了一个名为gpt4free的开源项目&#xff0c;该项目允许您免费使用GPT4和GPT3.5模型。这个项目目前已经获得了380000颗星。 开源地址&#xff1a;https://github.com/xtekky/gpt4free 简而言之&a…

软件开发:面向对象设计的七大原则!

七大原则 开闭原则、里氏代换原则、迪米特原则&#xff08;最少知道原则&#xff09;、单一职责原则、接口分隔原则、依赖倒置原则、组合/聚合复用原则。 开闭原则&#xff08;The Open-Closed Principle &#xff0c;OCP&#xff09; 开闭原则&#xff1a;软件实体&#xff…

隐马尔科夫模型

隐马尔可夫模型 隐马尔可夫模型(Hidden Markov Model, HMM)可以由观测序列推断出概率最大的状态序列. HMM中的变量可分为两组: 状态变量(隐变量): { y 1 , y 2 , . . . , y n } \left \{ y_{1},y_{2},...,y_{n}\right \} {y1​,y2​,...,yn​};序列标注问题中的标注. 观察变量…

《Python程序设计与算法基础教程(第二版)》江红 余青松 课后选择题 课后填空题答案

目录 第一章一、选择题二、填空题 第二章一、选择题二、填空题 第三章一、选择题二、填空题 第四章一、选择题二、填空题 第五章一、选择题二、填空题 第八章一、选择题二、填空题 第一章 一、选择题 Python语言属于 C A.机器语言 B.汇编语言 C.高级语言 D.以上都不是 在下列…

【python】数据预处理:分位数归一化 Quantile Normalization + INSCODE AI创作助手测试

文章目录 写在前面标准化/归一化python模块qnorm实现分位数归一化R代码实现分位数归一化分位数归一化 - NSCODE AI创作助手的回答*Q1&#xff1a;Quantile Normalization是什么&#xff1f;**Q2-1: 什么时候用Quantile normalization&#xff1f;**Q2-2: 什么时候做Quantile no…

VScode软件下载与中文设置

目录 一、下载软件 二、中文设置 一、下载软件 1.网站上下载 2.百度网盘链接下载 链接&#xff1a;https://pan.baidu.com/s/1PMhxaExwhurDVVPkkbbYmw?pwd507o 提取码&#xff1a;507o 就选择路径->同意许可->完成下载 二、中文设置 1.在左侧扩展图标中打开“EXT…

Linux - 第20节 - 网络基础(网络层)

1.IP协议 • IP协议全称为“网际互连协议&#xff08;Internet Protocol&#xff09;”&#xff0c;IP协议是TCP/IP体系中的网络层协议。 • 在主机通信的过程中&#xff0c;上层应用程序解决从应用层代码中获取数据并处理数据的问题&#xff0c;应用层解决的是读取完整报文、序…

Lion:Adversarial Distillation of Closed-Source Large Language Model

Lion:Adversarial Distillation of Closed-Source Large Language Model IntroductionMethodologyexperiment Introduction 作者表明ChatGPT、GPT4在各行各业达到很好的效果&#xff0c;但是它们的模型与数据都是闭源的。现在的主流的方案是通过一个老师模型把知识蒸馏到学生模…

明明开发薪资高,是这几点让我依旧选了测试...

不管是对刚毕业的大学生、工作几年的打工仔亦或者是久不入职场的老人来说&#xff0c;进入职场的方向都值得我们深思。 今天我就来解答下大家最常问的问题&#xff1a;开发和测试作为一个项目中很重要的角色&#xff0c;他们有什么区别呢&#xff1f; Python自动化测试&#x…

Benewake(北醒) 快速实现TFmini-S-IIC与电脑通信的操作说明

目录 1. 概述2. 测试准备2.1 工具准备2.2通讯协议转换 3. IIC通讯测试3.1 引脚说明3.2 测试步骤3.2.1 TFmini-S-IIC 与 PC 建立连接3.2.2 获取测距值3.2.3 更改 slave 地址 1. 概述 通过本文档的概述&#xff0c;能够让初次使用测试者快速了解测试 IIC 通信协议需要的工具以及…

Svn安装

目录 一. 软件环境 二. SVN服务端 1. yum安装svn 2. 查看安装的文件列表 3. 建立版本库 3.1 修改数据存储默认位置 3.2 使用svnadmin建立版本库 4. 配制 4.1 添加用户 4.2 配制读写权限 4.3 配制服务 5. 启动服务 5.1 停止服务 5.2 启动服务 5.3 拉取项目 三.…

Vivado下组合逻辑模块的仿真

文章目录 与门或门非门异或门同或门比较器半加器全加器乘法器数据选择器3-8 译码器三态门 组合逻辑电路的特点是任意时刻的输出仅仅取决于输入信号&#xff0c;输入信号变化&#xff0c;输出立即变化&#xff0c;其变化不依赖于时钟。 本文中的例子中模块名都是gate&#xff0c…

HSE健康安全环境管理,已成现代企业必备的一种管理工具

什么是HSE健康安全环境管理 HSE是英文单词Health&#xff0c;Safety&#xff0c;Environment的缩写&#xff0c;中文翻译就是健康、安全、环境管理的意思。HSE管理是一种科学、系统的企业管理方式&#xff0c;目的是为了以人为本&#xff0c;保障员工和环境的健康和安全&#…

express的使用(三) multer处理表单提交

个人博客 欢迎关注公众号:express的使用(三) multer处理表单提交 看前提示 本篇的主要流程是使用在前端提交一个文件&#xff0c;在nodejs编写的后端使用multer以及express进行接收&#xff0c;包括遇到的版本问题&#xff0c;如果是想要学习用body-parser、formidable、mul…

node.js版本与node-sass版本不一致解决

版本比较图 查看版本对比图&#xff1a; https://www.npmjs.com/package/node-sass node.js版本与node-sass版本不一致时npm install是可能会报错的。 安装对应版本 查看nodejs版本 CMD查看nodejs版本 node -v卸载不一致的node-sass npm uninstall node-sass安装指定版…

JAVA并发编程之锁应用

Java并发包是Java中提供的一个用于支持多线程编程的工具包。Java并发包提供了多种机制来控制线程的执行&#xff0c;保证线程的安全性和可靠性。下面我们将介绍Java并发包的使用方法&#xff0c;并给出示例。 synchronized public class SynchronizedDemo { ​private int v;…

华为云认证有什么?考试难不难?

最近几年华为云的市场占比越来越大&#xff0c;逐渐占据了我们生活中的方方面面&#xff0c;而且很多政企单位&#xff0c;也选择华为云作为合作伙伴&#xff0c;因此市场上也需要越来越多的华为云人才&#xff0c;早在几年前&#xff0c;华为云就已经推出了自己的人才认证系统…