微信公众号登录密码参数加密详解

微信公众号登录密码pwd参数加密详解


前言

此参数的加密没有任何难度,适合小白练手学习。
网址:https://mp.weixin.qq.com/


一、打开浏览器开始抓包

在这里插入图片描述输入错误的账号密码,登录。然后找到login字眼的发送包,可以看到密码pwd参数被加密了,我们要找到加密这个字符串的js方法

二、通过搜索定位方法,快速找到关键位置

在这里插入图片描述
底部搜索栏输入关键参数,搜索到js文件,点击后定位到目标js文件,格式化代码,然后在代码也继续搜索关键参数,可以看到以下代码

 pwd: c(n.pwd.substr(0, 16)),

这里就是pwd的赋值地方了。很显然是调用了c方法,我们在这行打上断点,重新点击登录,断点就会断到这个位置,然后进入c方法,查看
在这里插入图片描述

三、找到关键加密位置,扣下代码,分析代码,自己构造然后运行在这里插入图片描述

可以直接定位到这个方法,传入密码t参数,返回结果,那么在return这行打上断点,点击运行到下一个断点。此时就会运行到当前return断点的位置,就可以看到各参数和方法的内容了,分析return代码

return e ? n ? a(e, t) : o(a(e, t)) : n ? r(t) : o(r(t))

很明显就是嵌套的三元表达式,简单拆分下就能看明白了

e ? 
n ? a(e, t) : o(a(e, t))

 : 

n ? r(t) : o(r(t))

判断e的值,e为undefined,所以跳到第二个,然后判断n的值,n也是undefined,所以密码加密的关键代码就是o(r(t)) 调用了两个方法。

然后往上翻代码或者点击r方法就可以看到加密的位置了,
在这里插入图片描述复制相关的加密代码到js调试工具,
在这里插入图片描述然后自己构造个方法,返回结果就可以了
全部代码如下:

function f(t, e) {
   
    var n = (65535 & t) + (65535 & e);
    return (t >> 16) + (e >> 16) + (n >> 16) << 16 | 65535 & n
}

function s(t, e, n, o, i, r) {
   
    return f((a = f(f(e, t), f(o, r))) << (s = i) | a >>> 32 - s, n);
    var a, s
}

function d(t, e, n, o, i, r, a) {
   
    return s(e & n | ~e & o, t, e, i, r, a)
}

function p(t, e, n, o, i, r, a) {
   
    return s(e & o | n & ~o, t, e, i, r, a)
}

function m(t, e, n, o, i, r, a) {
   
    return s(e ^ n ^ o, t, e, i, r, a)
}

function h(t, e, n, o, i, r, a) {
   
    return s(n ^ (e | ~o), t, e, i, r, a)
}

function c(t, e) {
   
    t[e >> 5] |= 128 << e % 32,
    t[14 + (e + 64 >>> 9 << 4)]
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值