多次加密

照常使用fiddle抓登录请求,发现传的参数被加密:

于是使用提交的参数在fiddler中全局搜索,经过反复查找,看见加密提示:

 直接有提示说这是密码加密部分,于是全局搜索setPwdValue,找到加密部分:

经过分析发现加密部分只使用了下面部分:

    encodeMd5Pwd: function(e) {
        var t = hex_md5, n = "";
        return e += "",
        LOGIN.timeseed || LOGIN.getTimeseedById_(),
        n = LOGIN.timeseed,
        n + t(e + n)
    },
    
    encodePwd: function(e) {
        var t = hex_md5, n = "";
        return e += "",
        LOGIN.timeseed || LOGIN.getTimeseedById_(),
        n = LOGIN.timeseed,
        n + t(t(e) + n)
    },
    
    timeseed: "",
    setPwdValue: function(e, t) {
        if (LOGIN.isSimplePwd(t)) {
            var n = e.url.value;
            e.url.value += n.indexOf("?") > -1 ? "&simple=1" : "?simple=1"
        }
        var i, r, o = 32 === t.length;
        i = o ? LOGIN.encodeMd5Pwd(t) : LOGIN.encodePwd(t),
        r = e.pwd,
        iptPwd_ = e.pwd_,
        (r && ("" != r.id || "hidden" != r.type) || !r) && (r = document.createElement("input"),
        r.name = "pwd",
        r.type = "hidden",
        e.appendChild(r)),
        r.value = i,
        LOGIN.setOldPwdValue(e, t)
    },
    setOldPwdValue: function(e, t) {
        var n, i, r = e.pwd_, o = 32 === t.length;
        o ? i = t : (n = hex_md5, i = n(t)), r && (r.maxLength = 32, r.value = i)
    },

 其中encodeMd5Pwd方法只是对传入的参数进行MD5加密,而encodePwd则是timeseed + md5(md5(self.pass_word) + timeseed,timeseed是其他请求获取的,如此就可以根据已有数据进行尝试,发现果真如此,请求参数构造

dataform = {
    'userName': self.user_name,
    'pwd_': md5(self.pass_word),
    'loginType': 'ENTERPRISE',
    'url': 'http://www.***********.net',
    'x': '82',
    'y': '32',
    'monitor': '0',
    'pwd': str(ts) + md5(md5(self.pass_word) + str(ts))
}

这样就可以登录了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值