QQ空间的解密思路整理
本篇文章只是提供解密思路,不提供代码。
找了一圈发现越是大厂加密越是简单,安全防护之类的完全不靠js加密,扫码登陆才是关键。比如微信公众号平台的登陆加密就是简单的MD5,但人家有扫码登陆,此类情况比比皆是,所以爬虫越来越难做了。
老规矩先找加密位置,相比于上一次的XXTEA加密,这次的加密参数是p
,这个关键字太过常见,我们不以这个作为检索条件,否则干扰项太多。先检索其他加密的参数看看能不能发现什么。
按照上图断点的位置,发现了类似加密的位置,像此类带关键字的很容易就可以发现目标代码,我们先打个断点测试一下。
成功进入断点,说明判断没错。接下来我们这要把关键加密的代码抠出来补全即可。
理清参数
扣代码不仅仅是复制粘贴,需要先理清楚加密思路,像这里的$.Encryption.getEncryption(n, pt.plogin.salt, i.verifycode, pt.plogin.armSafeEdit.isSafe)
这种一个加密函数的还是比较清晰,我们先要把参数补齐,再找关键的加密函数。
经过检索可以发现,这里的n
就是我们传入的密码。
pt.plogin.salt
是传入的用户名加密后的结果。
i.verifycode
获取的是验证码的值。
pt.plogin.armSafeEdit.isSafe
找了半天,打上断点发现是个空值。
现在所有的参数已经找齐了,我们直接进入关键加密的函数就可以了,打上断点把鼠标放在关键函数的位置在出现的蓝色链接上点击即可跳转。
把上面找的代码和关键加密的方法组装就可以得到加密后的参数了。
总结
以上加上前面的两篇就是js基础解密的部分了,基础的方法用三篇概述只能说个大概,之后会继续写基础部分的文章就是没有这三篇这么详细,没有动手自己走一遍流程永远只能停留在基础。
实战案例浅析JS加密 - DES与Base64
实战案例浅析JS加密 - RSA与XXTEA
总的来说这三篇文章核心就是是下面这个流程。
基本流程的复述
- 如果网页有跳转,必须勾选 preservelog 防止丢包
- 看一下有没有框架 右键查看框架源代码(弹出式登陆界面)
- 登陆尽量使用错误密码 防止跳转
- 查看关键登陆包 分析哪些参数是加密的
- 使用别的浏览器分析哪些参数是固定的值
- 初步猜测加密方法
- 搜索
- 直接搜索参数
- pwd=
- pwd =
- pwd:
- pwd :
- 密码框地方右键 检查 查看 id name type
- 找到加密的地方(重点)
- 调试
- 找出所有的加密代码
- 从最后一步开始写起,缺啥找啥
- 如果找的是函数的话 search 要带上 function xxx
- 如果看到加密的地方有个类,并且之后是用 prototype 把方法加在原生对象上的话,要把 所有加在原生对象上的方法都找出来
- 函数找多了没关系,只要不报错不会影响结果,但是不能找少了
基础的解密其实很简单了,只要自己动手去练习基本不会有太大问题。
流程捋清楚之后就是关于JS的学习,可以去B站上面看看。
https://www.bilibili.com/video/av34087791
最后就是心态问题,耐心在js调试上很关键,一直报错心态很容易崩,一烦躁反而调不出来了。
以上