python长房集团登陆j_password参数破解

本文详细解析了一篇关于Python中长房集团登录页面j_password参数的AES加密过程。通过分析源代码,找出了加密所用的key、iv和security参数,并提供了重写加密函数的代码示例,帮助读者理解并实现类似的加密解密操作。
摘要由CSDN通过智能技术生成

python长房集团登陆j_password参数破解

个人申明:本人只为用于学习使用,对于参考适用于不法用途,和本人无关,如果对本公司造成不必要麻烦,请联系本人删除

抓包

在这里插入图片描述
通过上面我们可以看出提交了post表单
在这里插入图片描述

观察参数我们可以看出j_username是我们的用户名,这个不必多说,主要是j_password这个参数是怎么生成的,这个是我们今天的重点。

通过关键字搜索j_password

在这里插入图片描述
这里有一个很明显的desencrpt函数,这个就是我们常见的aes,和des加密方式。

desencrpt这个函数点进去,我们可以看到下面

在这里插入图片描述
通过上面,我们基本就知道加密的所在地了,现在废话不多说,我们可以简单的改写一下这个函数。

我们改写的目的,就是要找到里面的key,iv和security这三个参数

function desEncrypt(password) {
    var keyObj = {};
    keyObj = SECURITYKEY.get();
    value = CryptoJS.AES.encrypt(password, CryptoJS.enc.Utf8.parse(keyObj.key), {
        iv: CryptoJS.enc.Utf8.parse(keyObj.iv)
    }).toString()
    return keyObj.security + value
}

要找到这三个参数,只需要找到keyObj这个对象就行了,我们可以搜索SECURITYKEY就可以看到
在这里插入图片描述
从这里我们就可以找到这个下面的这个keyObj这个值,我们抠出来然后改写一下

keyObj = SECURITYKEY.get();
get: function(encodeType) {   				这里传的参数要不是“”,要不是”des“
        var str = SECURITYKEY._2();         这里我们又需要找到SECURITYKEY._2()这个函数,但是我们观察这个函数,就是拿取getSessionId()这个东西跟cookie有关我们可以直接复制一个过来写死
        if (encodeType == null || encodeType == 'aes') {
            if (str.length < 32) {
                str += "abcdefghijklmnopqrstuvwxyz1234567890"
            }
            str = str.toUpperCase();
            var key = {};
            key.key = str.substring(0, 16);
            key.iv = str.substring(16, 32);
            key.security = "\u4435\u5320\u4d35"
        } else {
            if (str.length < 16) {
                str += "abcdefghijklmnopqrstuvwxyz"
            }
            str = str.toUpperCase();
            var key = {};
            key.key = SECURITYKEY.toHexString(str.substring(0, 8));  //改写成toHexString(str.substring(0, 8));   toHexString这个方法也在上面可以复制过来
            key.iv = SECURITYKEY.toHexString(str.substring(8, 16));   //这里同理
            key.security = "\u4445\u5320\u4d45"
        }
        return key
    }

通过上面的分析,我们现在思路就已经很清楚了,哈哈,直接上最终的代码

var CryptoJS = require("crypto-js")   //这里要导入模块,或者直接复制网站的CryptoJS这个函数,整体复制过来都行。

function toHexString(str) {
    var temp = "";
    for (i = 0; i < str.length; i++) {
        temp += str.charCodeAt(i).toString(16)
    }
    return temp
}

function get(encodeType) {
    var str = "CDAFDE400055E7263327948372";   //这里复制自己的getSessionId,我把我自己的也随便乱改了,为了安全起见,我不想去免费的饭。
    if (encodeType == null || encodeType == 'aes') {
        if (str.length < 32) {
            str += "abcdefghijklmnopqrstuvwxyz1234567890"
        }
        str = str.toUpperCase();
        var key = {};
        key.key = str.substring(0, 16);
        key.iv = str.substring(16, 32);
        key.security = "\u4435\u5320\u4d35"
    } else {
        if (str.length < 16) {
            str += "abcdefghijklmnopqrstuvwxyz"
        }
        str = str.toUpperCase();
        var key = {};
        key.key = toHexString(str.substring(0, 8));
        key.iv = toHexString(str.substring(8, 16));
        key.security = "\u4445\u5320\u4d45"
    }
    return key
}
//这个下面的是我的入口函数。
function desEncrypt(password) {
    var keyObj = {};
    keyObj = get("");  //这里也可以写成keyObj = get("des")根据网站实际情况
    var value = "";
    value = CryptoJS.AES.encrypt(password, CryptoJS.enc.Utf8.parse(keyObj.key), {
        iv: CryptoJS.enc.Utf8.parse(keyObj.iv)
    }).toString()
    return keyObj.security + value
}


aa = desEncrypt("123456")
console.log(aa)

打印结果

䑅匠䵅WzsW1tO3tApl84RgGz1QKg==
或者是
䐵匠䴵B5O7q53FmXSlj0eBunRVPw==

以上就是完整的分析过程,这类网站也是比较简单的,我不是为了后面我的职业发展,我他妈真不会来写博客,都是钱惹的祸,觉得对你有帮助,给个关注,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值