某政银行APP登陆逆向

news2024/12/23 13:10:37

版本 V10.0.0

环境检测

{
    "xposed": {
        "action": "warn_and_exit",
        "msg": {
            "zh_CN": "检测到您的设备安装有Xposed框架,存在非法攻击风险!"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "waiting_time": 2000,
        "title": {
            "zh_CN": "Xposed框架提醒"
        }
    },
    "integrity": {
        "action": "warn_and_exit",
        "msg": {
            "zh_CN": "检测到您当前应用有被二次打包风险,请下载官方版本!"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "waiting_time": 2000,
        "title": {
            "zh_CN": "完整性校验提醒"
        }
    },
    "emu": {
        "action": "warn_and_exit",
        "msg": {
            "zh_CN": "检测到应用正在模拟器上运行,存在隐私信息泄露和被非法攻击等风险!"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "waiting_time": 2000,
        "title": {
            "zh_CN": "模拟器运行提醒"
        }
    },
    "hook": {
        "action": "warn_and_exit",
        "msg": {
            "zh_CN": "检测到您的应用进程内有HOOK框架特征,存在非法攻击风险!"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "waiting_time": 2000,
        "title": {
            "zh_CN": "HOOK框架提醒"
        }
    },
    "inject": {
        "action": "warn_and_exit",
        "msg": {
            "zh_CN": "检测到您的应用被注入攻击,有非法攻击风险!"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "waiting_time": 2000,
        "title": {
            "zh_CN": "防注入提醒"
        }
    },
    "polling": {
        "action": "warn_and_exit",
        "msg": {
            "zh_CN": "检测到您的应用正在被调试,存在非法攻击风险!"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "waiting_time": 2000,
        "title": {
            "zh_CN": "防调试提醒"
        }
    },
    "frida": {
        "action": "warn_and_exit",
        "msg": {
            "zh_CN": "检测到您的应用已经被Frida注入,有非法攻击风险!"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "waiting_time": 2000,
        "title": {
            "zh_CN": "Frida框架提醒"
        }
    },
    "root": {
        "action": "warn_and_exit",
        "msg": {
            "zh_CN": "检测到您的设备已ROOT,存在隐私信息泄露和被非法攻击等风险!"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "waiting_time": 2000,
        "title": {
            "zh_CN": "设备已被ROOT"
        }
    },
    "proxy": {
        "title": {
            "zh_CN": "网络代理提醒"
        },
        "button": {
            "zh_CN": "我已明白此风险,依然继续"
        },
        "msg": {
            "zh_CN": "检测到您正在使用网络代理功能,存在隐私信息泄露和被非法攻击等风险!"
        },
        "action": "warn_and_exit",
        "waiting_time": 2000
    }
}

一般就是 XPosed检测 root检测 frida检测 代理检测(2层)直接hook掉
逻辑上是。 登陆接口---->触发验证码---->校验验证码 3个接口完成 即可发现登陆返回200

例如登陆验证包接口

 请求地址 https://login-service.mobile-bank.psbc.com/sn00/api/route/loginOrRegister/T000003
 请求方式 POST
 请求参数 
 {
        "isNeedEncrypt": False,
        "mobileno": PhoneNumber,
        "deviceInfo": {
            "curEnvName": "release",
            "isRoot": "0",
            "display": "width:1080,height:2028",
            "ip": "",
            "gps": "",
            "phoneMemorySize": "4",
            "uuid": uuidString, # uuid 自己生成
            "platform": "android",
            "errorAbstract": "isPrivacyAgreed",
            "uuidOldVersion": "",
            "h5Env": "{\"h5Container\":\"mPaas\",\"updateEnv\":\"mPaas\"}",
            "cityName": "北京市",
            "osVersion": "12",
            "imei": "",
            "isH5BindCard": "1",
            "model": "Google Pixel 3",
            "sdk": "31",
            "networkType": "2",
            "brand": "google",
            "board": "blueline",
            "suptNfcFlag": "1"
        },
        "tokenInfo": {
            "appVersion": "10.0.0",
            "custNo": "",
            "versionNum": "178",
            "reqTime":  "",
            "ecifCustNo": "",
            "pageName": "LoginPswActivity",
            "appChannel": "youbank",
            "crowdVersion": "default",
            "isInner": "0",
            "reqMsgId": "",
            "token": ""
        }
    }
请求头 
{
    "version": "v1",
    "reqMsgId": "20241217000003195086501300921001",
    "reqTime": "20241217090654",
    "transCode": "T000003", # 业务代码
    "language": "0",
    "systemAppNo": "xxx",
    "WorkspaceId": "product",
    "Content-Type": "application/json; charset=utf-8",
    "Content-Length": "1950",
    "Host": "login-service.mobile-bank.psbc.com",
    "Connection": "Keep-Alive",
    "Accept-Encoding": "gzip",
    "User-Agent": "okhttp/3.12.13"
} 
charles 测试删除参数能过(但没固定)
响应数据
{
	"data": "a5f1d3cd718c94d279d276d5cfa489755f5909365d9182201b3317c84a4b9f76dccf317c422f63bb4f882156f7627b8a6e6141efeb68f9d4af5acd6096fe2268b41ee8db6d245373b87a7b753cb99390d1dad6a2a9a27b07fdb36673df88d34bd274edd619f1ca623c0fa98affe082ed78b7bada53504de8f35c0db5246af2e1319f4695304159546ddde25640585b8470e598860cc5029882f903058faa761256c5f2c76024199ceb6d43ae23dea4b259d0008dcd307111b8d2541eefc9c4acd352275c0a0481ab4b7f8a68aa7a9908b2383d77395438441d0cf41eb5cde1fb35650d6a6896ab34579d2315728ac4eafdbddb8eae563c4ceed575b4a10fd25acd5653e3684bfd69a69aabb9916188099c6ab674077f5c3aa371725a2a137da9b1740d956a0c99d9069d528fcf6b2bcb0755069075d29cf1ae8a5b708bee63cc061f6972cd61450f196c24b3f479d72042c46088f897d56a1b3981921eca87b24b77922aa9afb2402cab9ee45c569506ed8c8c430ca0778d731dcd773fe0027fe606c5cee03c363e8f0f5646839d3bd42fc5b925c4eca0e90712229bbb5268e65712624af5dc6d37f5fe7dd108a34ba7f8134e3c99fa871ac3f72d29e954d323e20cbb73fae8a506ffac7d6c17f144feeb902c224b86acffdf30c234d1daff88006beb67bb21879fc2d5e7a0394a83176d72e3a33b98813996ef09386b206b56752d261d0eae447246e4d80306e607bd76ff9de75dd48d8a00208990f32b6a0665efd1e47236298ddfcc631cf5c57245d80f3573458c32824386dfbf93be811a1517bc0b2da2da0390d9f46d121619379949f02165478981640263a22117d2e3cad15b1b200555d6805fef3db65a0f9444b59879796a73bf6c77dfd4b01f72e3011805badaf7907e22dc70cf43bcfc33d83a2cfb8196afd0742aab91cef7724adf0925b57cd9bcfef87621f608967d40038f86495e25b2d0fc519b6a8ce2779afd1af5daef5e3f900a11d775a430df99b17a5217b10e909317c9ecbedaabdc4682d8c7a8e36cb771de303d9809d2b7cf2a28a5c2a21d267a0e875ed55808e44b7dc98830bb5529aaca2aed2916e57d2c0736ae967ffd444b5d434ab427cb5a1b26fd6f52883d3609f16bb18b76ae712182c944bedb7e9b70e623c26e675c6d",
	"sign": "1436670208882a1d6b035a33d78d8974ea55a9edfaf79a1a3e972a1c022d294",
	"key": "c4994cfc3e96e047e670964857b68346bdeb18767a2aa8bd3ff97ed6971e09b7de9c956988b91c0f37928cf4e85917dbccd08c7ef663742944465ca14262d2ec1690bfb60106b232bdc3d15ff89a4751b9437f336ec4f8ad0663db9826307bdb162bcc37d852730a42df583d686a39"
}




其他接口一样 ,这里只拿这一个举例子,主要逆向 data sign key(data 被加密的都是请求体,key加密16位字符串 sign就是 data+key)

data破解

byte[] bytes4 = genRandomKey2.getBytes(Charsets.UTF_8);
jSONObject.put("data", (Object) HexUtil.encode(SM4Util.encrypt_ECB_Padding(bytes, bytes2)));

加密已经看到了 python还原即可

key破解

key的生成代码

def genRandomKey(i2, i3):
    """
    :key
    :param i2:
    :param i3:
    :return:
    """
    # 定义 CHARS_ALL 中可能包含的字符(大写字母、小写字母和数字)
    CHARS_ALL = string.ascii_letters + string.digits  # 包含 A-Z, a-z, 0-9

    # 创建一个空的字符列表来保存生成的随机字符
    key_str = []

    # 循环生成随机字符,直到达到指定长度
    for _ in range(i3):
        if i2 == 0:
            # 如果 i2 == 0,从 CHARS_ALL 中随机选择一个字符
            key_str.append(random.choice(CHARS_ALL))
        else:
            # 否则,生成一个随机数字
            key_str.append(str(random.randint(0, 9)))

    # 将字符列表合并成一个字符串并返回
    return ''.join(key_str)

生成16位 传参0,16就行

jSONObject.put("key", (Object) SM2Util.encryptReturnHex(SM2Util.PUBLIC_KEY, genRandomKey2));

直接gpt生成即可 定位过去 key 实际就是数字和字母混合16位 通过加密

sign破解

String str17 = String.valueOf(jSONObject.get("data")) + String.valueOf(jSONObject.get("key"));
byte[] bytes6 = str17.getBytes(charset5)
jSONObject.put("sign", (Object) HexUtil.encode(SM3Util.hash(bytes6)));

最终返回效果解密后的

# login
{"code":"000000","data":{"custNo":"","mobileRegStatus":"0","serverNodeUrl":"https://mobile-bank.psbc.com/sn11/"},"msg":"交易成功","showType":"0","reqMsgId":"20241218171532000003161977293440032001"}
# send_sms
{"code":"020253","msg":"获取次数过多,请明日再试或前往网点办理。","showType":"1","reqMsgId":"2024121817153202100335951101129896001"}
# check_sms
{"code":"000008","msg":"交易超时,请您稍后重试","showType":"2","reqMsgId":"2024121817153202100427977756507953001"}

效果图

在这里插入图片描述

在这里插入图片描述

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!

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

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

相关文章

51c自动驾驶~合集42

我自己的原文哦~ https://blog.51cto.com/whaosoft/12888355 #DriveMM 六大数据集全部SOTA!最新DriveMM:自动驾驶一体化多模态大模型(美团&中山大学) 近年来,视觉-语言数据和模型在自动驾驶领域引起了广泛关注…

算法题(12): 特殊年份

审题: 需要输出特殊年份的个数 思路: 获取数据:用字符串获取,然后全部加到总字符串s上判断 使用for循环对每一个四位数年分进行判断,如果是特殊年份就让负责记录的cou变量 解题: 注意:为什么我们…

RuoYi-Vue 数据权限控制示例nvliz (作业机器版)

目录 需求分析 ​编辑建表 代码编写 service层 Mapper层 测试 修改数据权限 添加数据 需求分析 建表 在若依的数据库中建立设备表:equipment 代码编写 使用代码生成,设备管理信息界面,如下图: 使用RuoYi的代码生成的功…

汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发

手机投屏轻松实现手机与汽车的无缝连接,导航、音乐、通话等功能应有尽有,还支持更多第三方应用,让车载互联生活更加丰富多彩。 HiCar在兼容性和开放性上更具优势。 手机投屏可以说是车机的杀手级应用,大大拓宽了车机的可用性范围。其中华为推出的HiCar就是非常好用的一种。…

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空,意味着结束遍…

PID 控制算法理论背景:飞控领域的核心调控机制(1)

在飞控工程领域,PID 控制算法占据着极为关键的地位,是实现飞行器精确稳定控制的基石。PID 作为比例(P)、积分(I)、微分(D)的集成代表,构建起了控制系统的核心架构&#x…

插入排序与计数排序详解

在 C 编程中,排序算法是非常基础且重要的知识。今天我们就来深入探讨两种常见的排序算法:插入排序和计数排序,包括它们的代码实现、时间复杂度、空间复杂度、稳定性分析以及是否有优化提升的空间。 一、插入排序 插入排序(Inser…

示波器--UNI-T 优利德 UT4102C 使用介绍

示波器--UNI-T 优利德 UT4102C 使用介绍 1 介绍图示特点 2 UTP04示波器探头(100M带宽)3 功能介绍4 示例RS232 电平信号测试 参考 1 介绍 图示 特点 2GS/s的实时采样率:设备能够以每秒2吉萨(Giga Samples per second)…

【Mybatis-Plus】连表查询 逻辑删除 多租户

文章目录 连表查询逻辑删除多租户 连表查询 引入 mybatis-plus-join-boot-starter 依赖 <dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId><version>1.5.1</version>…

【java面向对象编程】第七弹----Object类、类变量与类方法

笔上得来终觉浅,绝知此事要躬行 &#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;javase &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 一、Object类 1.1equa…

【常微分方程讲义1.1】方程的种类发展与完备

方程在数学历史中不断发展&#xff0c;逐步趋于完备。从最初的简单代数方程到包含函数、算子甚至泛函的更复杂方程&#xff0c;数学家通过不断的扩展和深化&#xff0c;逐渐建立起更为丰富和多元的方程类型体系。方程的种类之所以不断演变&#xff0c;部分是因为解决实际问题的…

《庐山派从入门到...》板载按键启动!

《庐山派从入门到...》板载按键启动&#xff01; 《庐山派从入门到...》板载按键启动&#xff01; 视频内容大致如下 我们之前了解了GPIO的输出模式使用方法&#xff0c;并且成功点灯&#xff0c;很明显本篇要来分享的自然是GPIO的输入模式 正好回顾一下之前学的python基础包…

Android笔试面试题AI答之Android基础(3)

文章目录 1.谈一谈 Android 的安全机制一、系统架构层面的安全设计二、核心安全机制三、其他安全机制与措施 2.Android 的四大组件是哪四大&#xff1f;3.Android 的四大组件都需要在清单文件中注册吗&#xff1f;4.介绍几个常用的Linux命令一、文件和目录管理二、用户和权限管…

黑马商城项目—服务调用

使用起因 之前我们完成了拆分购物车模块,但当我们进行测试查询时: 我们注意到&#xff0c;其中与商品有关的几个字段中:最新状态和库存为默认值,最新价格为空&#xff01;这就是因为我们注释掉了查询购物车时&#xff0c;查询商品信息的相关代码。 那么&#xff0c;我们该如何…

RK356x bsp 5 - 海华AW-CM358SM Wi-Fi/Bt模组调试记录

文章目录 1、环境介绍2、目标3、海华AW-CM358SM3.1、基本信息3.2、支持SDIO3.03.3、电气特性 4、适配流程步骤5、让SDIO控制器工作&#xff0c;且可以扫到WIFI卡5.1、dts配置5.2、验证 6、Wi-Fi 适配6.1、dts配置6.2、驱动移植6.2.1、kernel menuconfig6.2.2、传统驱动移植6.2.…

VBA编程:自定义函数 - 字符串转Hex数据

目录 一、自定义函数二、语法将字符串转换为hex数据MID函数:返回一个字符串中指定位置和长度的子串LEN函数:返回一个字符串的长度(字符数)Asc函数三、定义变量和数据类型变量声明的基本语法常见的数据类型四、For循环基本语法五、&运算符一、自定义函数 定义:用户定义…

工业大数据分析算法实战-day12

文章目录 day12时序分解STL&#xff08;季节性趋势分解法&#xff09;奇异谱分析&#xff08;SSA&#xff09;经验模态分解&#xff08;EMD&#xff09; 时序分割ChangpointTreeSplitAutoplait有价值的辅助 时序再表征 day12 今天是第12天&#xff0c;昨天主要是针对信号处理算…

基于Python Scrapy的豆瓣Top250电影爬虫程序

Scrapy安装 Python实现一个简单的爬虫程序&#xff08;爬取图片&#xff09;_python简单扒图脚本-CSDN博客 创建爬虫项目 创建爬虫项目&#xff1a; scrapy startproject test_spider 创建爬虫程序文件&#xff1a; >cd test_spider\test_spider\spiders >scrapy g…

【Linux系统编程】:信号(2)——信号的产生

1.前言 我们会讲解五种信号产生的方式: 通过终端按键产生信号&#xff0c;比如键盘上的CtrlC。kill命令。本质上是调用kill()调用函数接口产生信号硬件异常产生信号软件条件产生信号 前两种在前一篇文章中做了介绍&#xff0c;本文介绍下面三种. 2. 调用函数产生信号 2.1 k…