Python爬虫进阶之JS逆向混淆加密和AES加密的破解

圣诞节到了, 这不,我来送 "礼物" 了,X江酒店登陆页面的参数加密破解。地址以下:python

aHR0cHM6Ly9ob3RlbC5iZXN0d2Vob3RlbC5jb20vTmV3TG9naW4v

浏览器输入上方解密后的地址,F12 打开浏览器开发者工具,随意输入一个帐号和密码。这里密码输入我通常用的 123456,抓包以后以下图:编程

抓包

有两个加密的参数 black_box 和 password.浏览器

这里提供两种定位加密代码的方法: 一、search 栏搜索上述两个加密参数; 二、这是个 xhr 的请求,能够经过下 xhr 断点来定位函数

经过 “black_box” 搜索,结果只有一个 JS 文件。工具

点击左下角的大括号美化 JS,定位到加密位置。打上断点加密

重发请求,请求会在断点处停下来. 这个 fmOpt.getinfo() 函数就是咱们要找的 black_box,断点停下后,能够点进去3d

看到这些奇奇怪怪的变量,并且全部变量名看起来都长的差很少。你内心确定在想,这是什么鬼。别慌!这就是 JS 混淆后的代码。直接拉到最上面,能够看到有不少变量的定义调试

因此这部分代码,咱们是须要扣出来的。若是你以为混淆的代码看起来很是的难受,你能够选择写个脚本用正则或者 replace() 来作替换,好比你能够在 Conlose 输出查看它的庐山真面目code

固然,在这里不替换也能够执行。不管你选择了何种方法,前提条件都须要找到完整代码,不能有遗漏,不然执行不了。对象

咱们主要扣取的代码是 oO00oo 对象中的 OOQo0o 函数。

因此里面定义变量或对象都须要扣取。扣完以后,经过调试来判断还缺乏哪些变量,这里经过浏览器来进行调试,点击 sources,选择 +New snippet,粘贴上咱们刚扣取的代码

文件名称能够随意命名,以后右键选择运行

运行完以后在下方 conlose 进行调试!通常都要通过反复调试添加代码后,才能正常运行。这里直接出结果了。

black_box 参数完成了,接下来是 password ! 重发请求,断点继续停在了 black_box 加密处!

能够看到,在对 black_box 加密以前,password 就已经完成加密了。因此咱们根据调用栈往前找

前面两步就能找到 password 的加密代码,看到这个 encryptAES 有没有很熟悉,没错就是 AES 加密!遇到这种加密都不用扣代码...

好了,一切都解开了!密钥 n,偏移量 a,咱们直接用 crypto-js 来执行!

完美!和抓包的结果一致,能够睡觉了..下次再见~

了解更多内容,烦请关注本人公众号, Python编程与实战

相关文章
相关标签/搜索