• 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)
    
    
  • 相关阅读:
    L2TP协议
    PPP协议
    centos 更新linux内核
    关于GRUB2
    误删除libc.so.6 恢复
    LVS DR模式 负载均衡服务搭建
    进程地址空间分布和可执行文件分布
    centos 开机启动服务
    【netcore基础】ConcurrentDictionary 使用字符串作为key给代码加锁且使用EF事物防止并发调用数据混乱的问题
    【年终总结】个人的2018年年终总结
  • 原文地址:https://www.cnblogs.com/gqv2009/p/14103015.html
Copyright © 2020-2023  润新知