zoukankan      html  css  js  c++  java
  • 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)
    
    
  • 相关阅读:
    html头部属性全接触
    js中的window.onload和jquery中的load区别
    关机时,自动清除运行框的记录的设置方法
    MVC问题小总结,不断更新中...
    iis6 元数据库与iis6 配置的兼容 出错问题
    MVC对异步 Controller 的支持
    SQL Server2008安装报错,解决方案
    JavaScript有5个原始类型
    ASP.NET MVC中的拦截器
    F5负载均衡
  • 原文地址:https://www.cnblogs.com/gqv2009/p/14103015.html
Copyright © 2011-2022 走看看