当前位置: 首页 > 后端技术 > Python

【JS逆向工程100例】你没见过的社会主义核心价值观加密

时间:2023-03-26 19:24:17 Python

关注微信公众号:K爬虫小哥,继续分享爬虫进阶、JS/Android逆向等技术干货!声明本文所有内容仅供学习交流。抓拍内容、敏感网址、数据接口均已脱敏处理,严禁用于商业或非法用途。否则,由此产生的一切后果与作者无关。侵权请联系我立即删除!逆向标靶:社会主义核心价值观加密原理分析首页:aHR0cHM6Ly93d3cuYXBwbWl1LmNvbS9rZXkv逆向分析K哥的同事今天发了个有趣的加密,不管你输入什么字符串,加密后的结果都是24个字符的社会主义核心价值观是随机组合,如下图所示:首先,我们尝试抓包,看看网络上有没有发包操作。实际上并没有,这说明加解密的逻辑在加载的JavaScript代码中。这里介绍三种定位加密入口的方法:1、我们注意到加密结果总是由社会主义核心价值观组成,肯定是在原来的24个字符的基础上做了一些操作,也就是说这24个字符必须定义somewhereWord,我们可以全局搜索任意一个词,如下图:2.加解密的结果是点击按钮后才会产生的,所以这个按钮必须绑定一些事件,比如鼠标点击事件,我们可以通过DOM事件断点定位到加密入口,如下图所示:3、我们注意到加解密的按钮有一个id,所以有可能JavaScript中获取到这个id后,使用addEventListener()method给这个元素添加一个鼠标点击事件处理器,所以你也可以全局搜索它的id,即encode-btn和decode-btn,你也可以搜索getElementById("encode-btn")或者getElementById("decode-btn"),当然你也可以搜索方法键addEventListener这个词。如下图所示:定位到加密位置后,埋下断点调试。我们看一下加密逻辑:加密过程:变量v通过元素id(decoded-area)获取明文区域(textarea),点击加密按钮(encode-btn)会触发一个事件,进入下面函数.v.value是明文值。通过l()函数加密后赋值给n,再将n赋给p.value,在密文中显示。文本区域(编码区域)。解密过程:变量p通过元素id(encoded-area)获取密文区域(textarea),点击解密按钮(decode-btn)触发事件,进入如下函数,p.value为密文value,经过s()函数解密后给n赋值,然后把n赋给v.value,显示在明文文本区(decoded-area)。整个代码逻辑比较简单,用到的函数都放在一起,全部copy即可。完整代码GitHub关注K哥的爬虫,持续分享爬虫相关代码!欢迎加星!https://github.com/kgepachong/JavaScript加解密代码vare=function(){for(vart=arguments.length,n=Array(t),r=0;r=.5},o=function(t){varn=/[A-Za-z0-9\-\_\.\!\~\*\'\(\)]/g,r=t.replace(n,function(t){returnt.codePointAt(0).toString(16)});返回encodeURIComponent(r).replace(/%/g,"").toUpperCase()},u=function(t){e("string"==typeoft,"utfsError");varn=t.length;e(0==(1&n));对于(varr=[],i=0;i>1))}}catch(t){i=!0,o=t}finally{try{!r&&a.return&&a.return()}最后{if(i)throwo}}varv=f(n);e(0==(1&v.length));变种p=无效0;try{p=u(v)}catch(t){throwt}returnp},h="富强、民主、文明、和谐、自由、平等、公正、法治、爱国、敬业、诚信、友善"functionencrypt(t){returna(c(o(t)))}functiondecrypt(t){returns(t)}//测试示例//console.log(encrypt("1234"))//console.log(decrypt("和谐、民主、和谐、文明、和谐、和谐、自由"))