【JS 逆向百例】你没见过的社会主义核心价值观加密
关注微信公众号:K哥爬虫,持续分享爬虫进阶、JS/安卓逆向等技术干货!
声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
逆向目标
- 目标:社会主义核心价值观加密原理分析
- 主页:
aHR0cHM6Ly93d3cuYXBwbWl1LmNvbS9rZXkv
逆向分析
K哥的同事今天发来一个比较有趣的加密,不管你输入什么字符串,加密后的结果都是由 24 个字的社会主义核心价值观随机组合而成,如下图所示:
首先我们尝试抓包,看看是否有网络上的发包操作,实际上是没有的,这说明加密解密的逻辑都在已加载完毕的 JavaScript 代码里,这里介绍三种方法去定位加密入口:
1、我们注意到加密结果始终由社会主义核心价值观组成,肯定是在原 24 字的基础上做了一些操作,也就是说在某个地方肯定定义了这 24 个字,我们任意全局搜索其中一个词即可,如下图所示:
2、加密解密的结果都是点击了按钮才生成的,那么这个按钮肯定绑定了某些事件,比如鼠标点击事件,我们可以通过 DOM 事件断点的方式定位加密入口,如下图所示:
3、我们注意到加密解密的 button 都有一个 id,那么有可能 JavaScript 里会获取到这个 id 后,使用 addEventListener()
方法向这个元素添加鼠标点击事件句柄,所以也可以全局搜索其 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
,也就是显示在密文的文本区域(encoded-area)。
解密过程:变量 p 通过元素 id(encoded-area)拿到密文文本区域(textarea),点击解密按钮(decode-btn)会触发事件,进入后面的函数,p.value
就是密文值,经过 s()
函数解密后赋值给 n,然后再把 n 赋值给 v.value
,也就是显示在明文的文本区域(decoded-area)。
整个代码逻辑比较简单,用到的这些函数也都在一起,直接全部 copy 下来即可。
完整代码
GitHub 关注 K 哥爬虫,持续分享爬虫相关代码!欢迎 star !https://github.com/kgepachong/
JavaScript 加密解密代码
var e = function () {for (var t = arguments.length, n = Array(t), r = 0; r < t; r++)n[r] = arguments[r];var e = n.length, i = "string" == typeof n[e - 1] ? n[e - 1] : "Assert Error", o = !0, u = !1, c = void 0;try {for (var f, a = n[Symbol.iterator](); !(o = (f = a.next()).done); o = !0) {if (!f.value)throw new Error(i)}} catch (t) {u = !0,c = t} finally {try {!o && a.return && a.return()} finally {if (u)throw c}}
}, i = function () {return Math.random() >= .5
}, o = function (t) {var n = /[A-Za-z0-9\-\_\.\!\~\*\'\(\)]/g, r = t.replace(n, function (t) {return t.codePointAt(0).toString(16)});return encodeURIComponent(r).replace(/%/g, "").toUpperCase()
}, u = function (t) {e("string" == typeof t, "utfs Error");var n = t.length;e(0 == (1 & n));for (var r = [], i = 0; i < n; i++)0 == (1 & i) && r.push("%"),r.push(t[i]);return decodeURIComponent(r.join(""))
}, c = function (t) {e("string" == typeof t);var n = [], r = !0, o = !1, u = void 0;try {for (var c, f = t[Symbol.iterator](); !(r = (c = f.next()).done); r = !0) {var a = c.value, s = Number.parseInt(a, 16);s < 10 ? n.push(s) : i() ? (n.push(10),n.push(s - 10)) : (n.push(11),n.push(s - 6))}} catch (t) {o = !0,u = t} finally {try {!r && f.return && f.return()} finally {if (o)throw u}}return n
}, f = function (t) {e(t instanceof Array);for (var n = [], r = t.length, i = 0; i < r;)t[i] < 10 ? n.push(t[i]) : 10 === t[i] ? (i++,n.push(t[i] + 10)) : (i++,n.push(t[i] + 6)),i++;return n.map(function (t) {return t.toString(16).toUpperCase()}).join("")
}, a = function (t) {return t.map(function (t) {return h[2 * t] + h[2 * t + 1]}).join("")
}, s = function (t) {var n = [], r = !0, i = !1, o = void 0;try {for (var c, a = t[Symbol.iterator](); !(r = (c = a.next()).done); r = !0) {var s = c.value, l = h.indexOf(s);-1 !== l && (1 & l || n.push(l >> 1))}} catch (t) {i = !0,o = t} finally {try {!r && a.return && a.return()} finally {if (i)throw o}}var v = f(n);e(0 == (1 & v.length));var p = void 0;try {p = u(v)} catch (t) {throw t}return p
}, h = "富强民主文明和谐自由平等公正法治爱国敬业诚信友善"function encrypt(t) {return a(c(o(t)))
}function decrypt(t) {return s(t)
}// 测试样例
// console.log(encrypt("1234"))
// console.log(decrypt("和谐民主和谐文明和谐和谐和谐自由"))
【JS 逆向百例】你没见过的社会主义核心价值观加密相关推荐
- 【JS 逆向百例】X球投资者社区 cookie 参数 acw_sc__v2 加密分析
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 抓包分析 加密查找 参数逆向 完整代码 JavaScript 加密代码 Python 测试代码 声明 ...
- 【JS 逆向百例】层层嵌套,某加速商城 RSA 加密
文章目录 声明 逆向目标 逆向过程 抓包分析 参数逆向 逻辑总结 完整代码 参数 JS 加密关键代码 Python 登录关键代码 声明 本文章中所有内容仅供学习交流,敏感网址.数据接口均已做脱敏处理, ...
- 【JS 逆向百例】层层嵌套!某加速商城 RSA 加密
文章目录 声明 逆向目标 逆向过程 抓包分析 参数逆向 逻辑总结 完整代码 参数 JS 加密关键代码 Python 登录关键代码 关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫 ...
- 【JS 逆向百例】webpack 改写实战,G 某游戏 RSA 加密
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...
- 【JS逆向百例】某音乐网分离式 webpack 非 IIFE 改写实战
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 逆向过程 抓包分析 参数逆向 webpack 改写 IIFE 传数组 ...
- 【JS 逆向百例】吾爱破解2022春节解题领红包之番外篇 Web 中级题解
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 逆向目标 本次逆向的目标来源于吾爱破解 2022 春节解题领红包之番外篇 Web 中级题,吾爱破解每年都会有派送红包活动(送吾爱 ...
- 【JS 逆向百例】反混淆入门,某鹏教育 JS 混淆还原
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...
- 【JS 逆向百例】Fiddler 插件 Hook 实战,某创帮登录逆向
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...
- 【JS 逆向百例】如何跟栈调试?某 e 网通 AES 加密分析
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...
最新文章
- ASP.Net中的TreeView控件中对节点的上移和下移操作
- [密码学] 公钥密码基础与RSA
- 【BZOJ2437】【codevs1949】兔兔与蛋蛋游戏,博弈+二分图匹配
- 2021款iPad Pro跑分曝光:远超安卓阵营产品
- linux查看文件时显示行号,linux中查看文件时显示行号
- c++ time.h 用法
- 连接服务器用xshell还是linux,【linux☞5】xshell 连接服务器的简单介绍
- Java -- 在Eclipse上使用Spring
- 基于cygwin构建u-boot(三)make错误忽视
- ubuntu 安装、卸载重装mysql 8.0
- 在ubuntu下安装openjdk
- perl 5.10.0安装包下载
- 【2022年更新】手把手教你去除 WinRAR 的弹窗广告
- mysql分区 seect_实战mysql分区(PARTITION)
- 微信小程序样式padding理解
- Excel 绘制 人口年龄结构树状图
- 如何压缩Word文档大小?这个方法太简单啦!
- Windows环境下使用UHD PythonAPI开发USRP X310
- 利用TLF给文本加样式
- jawbone app for android,jawbone手环app