美文网首页
Python爬虫进阶之JS逆向混淆加密和AES加密的破解

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

作者: GoPython | 来源:发表于2019-12-25 14:01 被阅读0次

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

    aHR0cHM6Ly9ob3RlbC5iZXN0d2Vob3RlbC5jb20vTmV3TG9naW4v
    

    浏览器输入上方解密后的地址,F12 打开浏览器开发者工具,随意输入一个账号和密码。这里密码输入我一般用的 123456,抓包之后如下图:

    抓包

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

    这里提供两种定位加密代码的方法:
    1、search 栏搜索上述两个加密参数;
    2、这是个 xhr 的请求,可以通过下 xhr 断点来定位

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

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

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

    看到这些奇奇怪怪的变量,而且所有变量名看起来都长的差不多。你心里肯定在想,这是什么鬼。别慌!这就是 JS 混淆后的代码。直接拉到最上面,可以看到有很多变量的定义

    所以这部分代码,我们是需要扣出来的。如果你觉得混淆的代码看起来非常的难受,你可以选择写个脚本用正则或者 replace() 来做替换,比如你可以在 Conlose 输出查看它的庐山真面目

    当然,在这里不替换也可以执行。无论你选择了何种方法,前提条件都需要找到完整代码,不能有遗漏,否则执行不了。

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

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

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

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

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

    可以看到,在对 black_box 加密之前,password 就已经完成加密了。所以我们根据调用栈往前找

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

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

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

    欢迎关注公众号 [Python编程与实战] 了解更多!


    相关文章

      网友评论

          本文标题:Python爬虫进阶之JS逆向混淆加密和AES加密的破解

          本文链接:https://www.haomeiwen.com/subject/ptqqoctx.html