本帖最后由 zxd13618567698 于 2023-10-14 15:26 编辑
对自考王者小程序的AES加密分析 前言 本人主要是报了自考在这个小程序上面做题,就研究了一下这个接口本文仅供学习交流使用,请勿随意传播。 如有侵犯你的权益及时联系我删除。
工具:主要用到这位小哥的 微信调试 工具 https://www.dslt.tech/article-3946-1.html 一、抓包分析 打开小程序,打开devtools 工具,这里就不啰嗦,直接上过程。 点击initiator,点击红框进入 。 一般的加解密的关键字都是decrypt,encrypt ,反正各种关键字使劲搜就完事了 。 我这里搜的是解密的关键词 decrypt 。。找到好多处。下断点测试 。 此处下断点 。可以看到加密方式是AES加密的 。其实他这里用到的是 CryptoJS 的前端解密的 。加密方式是 CBC-128 。
二、结束 CryptoJS 是一个三方的JS库。写一段代码证明一下。 function cryptoDecrypt_(e) { var t = n.crpytoConfig.AES_IV , o = n.crpytoConfig.AES_KEY , c = e.replace(/\_/g, "/").replace(/\-/g, "+") , a = CryptoJS.enc.Utf8.parse(o) , u = CryptoJS.enc.Utf8.parse(t) , p = CryptoJS.enc.Base64.parse(c) , f = CryptoJS.enc.Base64.stringify(p); return CryptoJS.AES.decrypt(f, a, { iv: u, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8).toString() } console.log(cryptoDecrypt_(str));
得到了明文。加密的方式也是一样的。整体来说还是比较简单的。
第一次发逆向JS的帖子。都不知道咋编辑的好。各位看官见谅哈。
如果有违规,可以删除。
|