关注微信公众号: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 逆向百例】你没见过的社会主义核心价值观加密相关推荐

  1. 【JS 逆向百例】X球投资者社区 cookie 参数 acw_sc__v2 加密分析

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 抓包分析 加密查找 参数逆向 完整代码 JavaScript 加密代码 Python 测试代码 声明 ...

  2. 【JS 逆向百例】层层嵌套,某加速商城 RSA 加密

    文章目录 声明 逆向目标 逆向过程 抓包分析 参数逆向 逻辑总结 完整代码 参数 JS 加密关键代码 Python 登录关键代码 声明 本文章中所有内容仅供学习交流,敏感网址.数据接口均已做脱敏处理, ...

  3. 【JS 逆向百例】层层嵌套!某加速商城 RSA 加密

    文章目录 声明 逆向目标 逆向过程 抓包分析 参数逆向 逻辑总结 完整代码 参数 JS 加密关键代码 Python 登录关键代码 关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫 ...

  4. 【JS 逆向百例】webpack 改写实战,G 某游戏 RSA 加密

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...

  5. 【JS逆向百例】某音乐网分离式 webpack 非 IIFE 改写实战

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 逆向过程 抓包分析 参数逆向 webpack 改写 IIFE 传数组 ...

  6. 【JS 逆向百例】吾爱破解2022春节解题领红包之番外篇 Web 中级题解

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 逆向目标 本次逆向的目标来源于吾爱破解 2022 春节解题领红包之番外篇 Web 中级题,吾爱破解每年都会有派送红包活动(送吾爱 ...

  7. 【JS 逆向百例】反混淆入门,某鹏教育 JS 混淆还原

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...

  8. 【JS 逆向百例】Fiddler 插件 Hook 实战,某创帮登录逆向

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...

  9. 【JS 逆向百例】如何跟栈调试?某 e 网通 AES 加密分析

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...

最新文章

  1. ASP.Net中的TreeView控件中对节点的上移和下移操作
  2. [密码学] 公钥密码基础与RSA
  3. 【BZOJ2437】【codevs1949】兔兔与蛋蛋游戏,博弈+二分图匹配
  4. 2021款iPad Pro跑分曝光:远超安卓阵营产品
  5. linux查看文件时显示行号,linux中查看文件时显示行号
  6. c++ time.h 用法
  7. 连接服务器用xshell还是linux,【linux☞5】xshell 连接服务器的简单介绍
  8. Java -- 在Eclipse上使用Spring
  9. 基于cygwin构建u-boot(三)make错误忽视
  10. ubuntu 安装、卸载重装mysql 8.0
  11. 在ubuntu下安装openjdk
  12. perl 5.10.0安装包下载
  13. 【2022年更新】手把手教你去除 WinRAR 的弹窗广告
  14. mysql分区 seect_实战mysql分区(PARTITION)
  15. 微信小程序样式padding理解
  16. Excel 绘制 人口年龄结构树状图
  17. 如何压缩Word文档大小?这个方法太简单啦!
  18. Windows环境下使用UHD PythonAPI开发USRP X310
  19. 利用TLF给文本加样式
  20. jawbone app for android,jawbone手环app

热门文章

  1. OSChina 周六乱弹 ——养了一只孙红雷
  2. 详解三种Menu——通俗易懂
  3. javaJsoup爬取LOL英雄联盟全皮肤
  4. 家庭记账小账本(二)
  5. 简谈Xilinx Zynq-7000嵌入式系统设计与实现
  6. 国自然往年基金信息检索网站收录-(持续更新)
  7. 手机自身内存和手机存储卡的区别?
  8. 这个男人坚持了八年,撑起了无数人的IT之梦!
  9. 想成为一名成功的UX设计师吗?做好这13件事情吧
  10. 2022中国大模型发展白皮书(附下载)