python之app逆向破解data参数中的PassWord DES加密无填充
1.还是先抓包
首先下载app,登录入口
2.用jadx-gui打开
先脱壳,然后用jadx-gui打开
并搜索关键字PassWord
点击右键 跳到声明
从代码中可以看出key,iv 都是str
3.开始Hook
hook a方法
通过在线加密方法得出 是des 加密的结果
4.用python实现
整个js 代码
复制Java.perform(function () {
console.log('HOOK Start!!!');
var Des3Encrypt = Java.use("bef");
console.log(Des3Encrypt);
// 加密
Des3Encrypt.a.overload('java.lang.String', 'java.lang.String').implementation = function (args1,args2) {
console.log("Encrypt args1:",args1);
console.log("Encrypt args2:",args2);
//console.log("Encrypt args3:",args3);
//console.log("Encrypt args4:",args4);
var result = this.a(args1,args2);
console.log("Des3Encrypt.encode result:",args1,args2);
return result;
};
})
python DES加密无填充用0补全
复制import pyDes
import base64
Key = "8D54E5D0" #加密的key
Iv = '8D54E5D0' #偏移量
def bytesToHexString(bs):
'''
bytes转16进制
'''
return ''.join(['%02X ' % b for b in bs])
def hexStringTobytes(str):
'''16进制转bytes'''
str = str.replace(" ", "")
return bytes.fromhex(str)
# 加密
def encrypt_str(data):
# 加密方法
#padmode填充方式
#pyDes.ECB模式
method = pyDes.des(Key, pyDes.CBC, Iv, pad=None, padmode=pyDes.PAD_PKCS5)
# 执行加密码 hex输出
k = method.encrypt(data)
data = bytesToHexString(k).replace(' ','')
#bs64手粗
#data =base64.b64encode(k)
return data
# 解密
def decrypt_str(data):
method = pyDes.des(Key, pyDes.CBC, Iv, pad=None, padmode=pyDes.PAD_PKCS5)
k =hexStringTobytes(data)
#bs64
#k = base64.b64decode(data)
return method.decrypt(k)
Encrypt = encrypt_str("qwerrrtttt12233")
print(Encrypt)
Decrypt = decrypt_str(Encrypt)
print(Decrypt)
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~