JS逆向 -- 某平台登录加密分析

一、打开网站,使用账号密码登录

账号:aiyou@123.com
密码:123456

二、通过F12抓包,抓到如下数据,发现密码加密了

三、加密结果是32位,首先考虑是md5加密。

四、全局搜索pwd,点击右上角,点击搜索

五、挨个文件查看,然后局部搜索“pwd:”,快捷键ctrl+f

六、找到给pwd赋值的语句,双击左边,下断,

七、重新点击登录按钮,会自动断下来

八、选中“m(n.pwd.substr(0, 16))”,鼠标放上去,自动提示加密结果,可以分析除,是m函数进行了加密

九、把鼠标放到m函数上,自动弹出下面的对话框,可以查看m函数所在的位置,点击进入该函数

十、这是一个匿名函数

十一、将该函数的同作用域范围的函数都复制到调试软件,并将该匿名函数改为aiyou函数,点击加载代码,成功加载

十二、调用该函数,双击该函数,输入参数,点击运行获取结果

十三、Python代码实现

1、将该JS代码复制jiami.js文件

function getpwd(pwd) {
    return pwd;
}function l(e, t) {
                var n = (65535 & e) + (65535 & t);
                return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n
            }
            function a(e, t, n, o, r, i) {
                return l((t = l(l(t, e), l(o, i))) << r | t >>> 32 - r, n)
            }
            function p(e, t, n, o, r, i, s) {
                return a(t & n | ~t & o, e, t, r, i, s)
            }
            function f(e, t, n, o, r, i, s) {
                return a(t & o | n & ~o, e, t, r, i, s)
            }
            function m(e, t, n, o, r, i, s) {
                return a(t ^ n ^ o, e, t, r, i, s)
            }
            function g(e, t, n, o, r, i, s) {
                return a(n ^ (t | ~o), e, t, r, i, s)
            }
            function s(e, t) {
                e[t >> 5] |= 128 << t % 32,
                e[14 + (t + 64 >>> 9 << 4)] = t;
                for (var n, o, r, d, i = 1732584193, s = -271733879, a = -1732584194, c = 271733878, u = 0; u < e.length; u += 16)
                    i = p(n = i, o = s, r = a, d = c, e[u], 7, -680876936),
                    c = p(c, i, s, a, e[u + 1], 12, -389564586),
                    a = p(a, c, i, s, e[u + 2], 17, 606105819),
                    s = p(s, a, c, i, e[u + 3], 22, -1044525330),
                    i = p(i, s, a, c, e[u + 4], 7, -176418897),
                    c = p(c, i, s, a, e[u + 5], 12, 1200080426),
                    a = p(a, c, i, s, e[u + 6], 17, -1473231341),
                    s = p(s, a, c, i, e[u + 7], 22, -45705983),
                    i = p(i, s, a, c, e[u + 8], 7, 1770035416),
                    c = p(c, i, s, a, e[u + 9], 12, -1958414417),
                    a = p(a, c, i, s, e[u + 10], 17, -42063),
                    s = p(s, a, c, i, e[u + 11], 22, -1990404162),
                    i = p(i, s, a, c, e[u + 12], 7, 1804603682),
                    c = p(c, i, s, a, e[u + 13], 12, -40341101),
                    a = p(a, c, i, s, e[u + 14], 17, -1502002290),
                    i = f(i, s = p(s, a, c, i, e[u + 15], 22, 1236535329), a, c, e[u + 1], 5, -165796510),
                    c = f(c, i, s, a, e[u + 6], 9, -1069501632),
                    a = f(a, c, i, s, e[u + 11], 14, 643717713),
                    s = f(s, a, c, i, e[u], 20, -373897302),
                    i = f(i, s, a, c, e[u + 5], 5, -701558691),
                    c = f(c, i, s, a, e[u + 10], 9, 38016083),
                    a = f(a, c, i, s, e[u + 15], 14, -660478335),
                    s = f(s, a, c, i, e[u + 4], 20, -405537848),
                    i = f(i, s, a, c, e[u + 9], 5, 568446438),
                    c = f(c, i, s, a, e[u + 14], 9, -1019803690),
                    a = f(a, c, i, s, e[u + 3], 14, -187363961),
                    s = f(s, a, c, i, e[u + 8], 20, 1163531501),
                    i = f(i, s, a, c, e[u + 13], 5, -1444681467),
                    c = f(c, i, s, a, e[u + 2], 9, -51403784),
                    a = f(a, c, i, s, e[u + 7], 14, 1735328473),
                    i = m(i, s = f(s, a, c, i, e[u + 12], 20, -1926607734), a, c, e[u + 5], 4, -378558),
                    c = m(c, i, s, a, e[u + 8], 11, -2022574463),
                    a = m(a, c, i, s, e[u + 11], 16, 1839030562),
                    s = m(s, a, c, i, e[u + 14], 23, -35309556),
                    i = m(i, s, a, c, e[u + 1], 4, -1530992060),
                    c = m(c, i, s, a, e[u + 4], 11, 1272893353),
                    a = m(a, c, i, s, e[u + 7], 16, -155497632),
                    s = m(s, a, c, i, e[u + 10], 23, -1094730640),
                    i = m(i, s, a, c, e[u + 13], 4, 681279174),
                    c = m(c, i, s, a, e[u], 11, -358537222),
                    a = m(a, c, i, s, e[u + 3], 16, -722521979),
                    s = m(s, a, c, i, e[u + 6], 23, 76029189),
                    i = m(i, s, a, c, e[u + 9], 4, -640364487),
                    c = m(c, i, s, a, e[u + 12], 11, -421815835),
                    a = m(a, c, i, s, e[u + 15], 16, 530742520),
                    i = g(i, s = m(s, a, c, i, e[u + 2], 23, -995338651), a, c, e[u], 6, -198630844),
                    c = g(c, i, s, a, e[u + 7], 10, 1126891415),
                    a = g(a, c, i, s, e[u + 14], 15, -1416354905),
                    s = g(s, a, c, i, e[u + 5], 21, -57434055),
                    i = g(i, s, a, c, e[u + 12], 6, 1700485571),
                    c = g(c, i, s, a, e[u + 3], 10, -1894986606),
                    a = g(a, c, i, s, e[u + 10], 15, -1051523),
                    s = g(s, a, c, i, e[u + 1], 21, -2054922799),
                    i = g(i, s, a, c, e[u + 8], 6, 1873313359),
                    c = g(c, i, s, a, e[u + 15], 10, -30611744),
                    a = g(a, c, i, s, e[u + 6], 15, -1560198380),
                    s = g(s, a, c, i, e[u + 13], 21, 1309151649),
                    i = g(i, s, a, c, e[u + 4], 6, -145523070),
                    c = g(c, i, s, a, e[u + 11], 10, -1120210379),
                    a = g(a, c, i, s, e[u + 2], 15, 718787259),
                    s = g(s, a, c, i, e[u + 9], 21, -343485551),
                    i = l(i, n),
                    s = l(s, o),
                    a = l(a, r),
                    c = l(c, d);
                return [i, s, a, c]
            }
            function c(e) {
                for (var t = "", n = 0; n < 32 * e.length; n += 8)
                    t += String.fromCharCode(e[n >> 5] >>> n % 32 & 255);
                return t
            }
            function u(e) {
                var t, n = [];
                for (n[(e.length >> 2) - 1] = void 0,
                t = 0; t < n.length; t += 1)
                    n[t] = 0;
                for (t = 0; t < 8 * e.length; t += 8)
                    n[t >> 5] |= (255 & e.charCodeAt(t / 8)) << t % 32;
                return n
            }
            function o(e) {
                for (var t, n = "0123456789abcdef", o = "", r = 0; r < e.length; r += 1)
                    t = e.charCodeAt(r),
                    o += n.charAt(t >>> 4 & 15) + n.charAt(15 & t);
                return o
            }
            function d(e) {
                return unescape(encodeURIComponent(e))
            }
            function r(e) {
                return c(s(u(e = d(e)), 8 * e.length))
            }
            function i(e, t) {
                var n, e = d(e), t = d(t), o = u(e), r = [], i = [];
                for (r[15] = i[15] = void 0,
                16 < o.length && (o = s(o, 8 * e.length)),
                n = 0; n < 16; n += 1)
                    r[n] = 909522486 ^ o[n],
                    i[n] = 1549556828 ^ o[n];
                return e = s(r.concat(u(t)), 512 + 8 * t.length),
                c(s(i.concat(e), 640))
            }
             function aiyou(e, t, n) {
                return t ? n ? i(t, e) : o(i(t, e)) : n ? r(e) : o(r(e))
            }

2、python调用js代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/17675.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ros2】ros melodic迁移到ros2 dashing过程中碰到的问题及解决方法

序言 总结踩坑经历&#xff0c;以利他人 1. error: forming pointer to reference type … & 报错原因&#xff1a; ros2回调函数的参数不能是引用形式 &&#xff0c;需要去除& 解决方法&#xff1a; 如果是指针引用&#xff0c;直接去除引用 void Callback(con…

javascript中的严格模式

认识严格模式&#xff1a; 在ECMAScript5标准中&#xff0c;JavaScript提出了严格模式的概念&#xff08;Strict Mode&#xff09;: 严格模式很好理解&#xff0c;是一种具有限制性的JavaScript模式&#xff0c;从而是代码隐式的脱离了“懒散&#xff08;sloppy&#xff09;模…

软件测试实战,Web测试详细总结 (覆盖所有测试点),你要的都有

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Web自动化测试&…

在技术圈超卷的当下,学历到底是敲门砖还是枷锁?

前言 最近&#xff0c;突然之间被“孔乙己文学”刷屏了&#xff0c;短时间内“孔乙己文学”迅速走红&#xff0c;孔乙己是中国文学中的一位经典人物&#xff0c;他的长衫被认为是他的象征之一&#xff0c;孔乙己的长衫折射出很多现象&#xff0c;既有社会的&#xff0c;也有教育…

Android平台播放透明视频

Android平台播放透明视频 思路 设计一种特殊的视频&#xff0c;它的一半内容存储alpha信息&#xff0c;另一半内容存储rgb信息&#xff0c;接着通过OpenGL获取每个像素点的alpha值和rgb值进行混合&#xff0c;最后出来的画面就是带有透明效果的视频了。 可以上下的分&#xf…

服务器中了勒索病毒,升级后的Malox勒索病毒特征,勒索病毒解密数据恢复

Mallox勒索病毒是网络上较为流行的勒索病毒&#xff0c;但是随着黑客加密技术的不断升级&#xff0c;Mallox勒索病毒的新升级版本Malox勒索病毒已经开始出现。Malox勒索病毒是一种最近在网络上广泛传播的恶意软件&#xff0c;其感染方式多种多样&#xff0c;主要以加密受害人的…

基于zookeeper实现分布式锁

目录 zookeeper知识点复习 相关概念 java客户端操作 实现思路分析 基本实现 初始化链接 代码落地 优化&#xff1a;性能优化 实现阻塞锁 监听实现阻塞锁 优化&#xff1a;可重入锁 zk分布式锁小结 zookeeper知识点复习 Zookeeper&#xff08;业界简称zk&#xff…

Zookeeper系统模型介绍

目录 一、数据模型 二、 节点的类型 &#xff08;1&#xff09;持久节点 &#xff08;2&#xff09;持久顺序节点 &#xff08;3&#xff09;临时节点 &#xff08;4&#xff09;临时顺序节点 三、客户端命令行 &#xff08;1&#xff09;创建节点 &#xff08;2&…

最新VUE面试题

前言 本文以前端面试官的角度出发&#xff0c;对 Vue 框架中一些重要的特性、框架的原理以问题的形式进行整理汇总&#xff0c;意在帮助作者及读者自测下 Vue 掌握的程度。 本文章节结构以从易到难进行组织&#xff0c;建议读者按章节顺序进行阅读&#xff0c;当然大佬级别的…

操作系统——进程管理

0.关注博主有更多知识 操作系统入门知识合集 目录 0.关注博主有更多知识 4.1进程概念 4.1.1进程基本概念 思考题&#xff1a; 4.1.2进程状态 思考题&#xff1a; 4.1.3进程控制块PCB 4.2进程控制 思考题&#xff1a; 4.3线程 思考题&#xff1a; 4.4临界资源与临…

【分布式技术专题】「授权认证体系」OAuth2.0协议的入门到精通系列之授权码模式

这里写目录标题 OAuth2.0是什么OAuth2.0协议体系的Roles角色OAuth定义了四个角色资源所有者资源服务器客户端授权服务器 传统的客户机-服务器身份验证模型的问题 协议流程认证授权授权码 OAuth2.0是什么 OAuth 2.0是用于授权的行业标准协议。OAuth 2.0专注于简化客户端开发人员…

一文介绍Linux EAS

能量感知调度&#xff08;Energy Aware Scheduling&#xff0c;简称EAS&#xff09;是目前Android手机中Linux线程调度器的基础功能&#xff0c;它使调度器能预测其决策对CPU能耗的影响。依靠CPU的能量模型&#xff08;Energy Model&#xff0c;简称EM&#xff09;&#xff0c;…

疑难问题定位案例复盘(三)

今天我们分享一个数据库被异常改写的案例&#xff0c;通过该案例我们可以学习总结出常规的文件被改写问题定位思路。 问题现象 1、测试环境在进行特定压力测试时发现页面登陆异常&#xff0c;且调试日志多个进程持续打印“数据库打开失败”日志。 2、测试环境在进行多个压力测…

【机器学习】决策树(实战)

决策树&#xff08;实战&#xff09; 目录 一、准备工作&#xff08;设置 jupyter notebook 中的字体大小样式等&#xff09;二、树模型的可视化展示1、通过鸢尾花数据集构建一个决策树模型2、对决策树进行可视化展示的具体步骤3、概率估计 三、决策边界展示四、决策树的正则化…

PyCharm2023.1下载、安装、注册以及简单使用【全过程讲解】

在使用PyCharm IDE之前&#xff0c;请确保自己的计算机里面安装了Python解释器环境&#xff0c;若没有下载和安装可以看看我之前的文章>>>Python环境设置>>>或者还可以观看视频讲解。 注意&#xff1a;本文软件的配置方式仅供个人学习使用&#xff0c;如有侵…

02- 目标检测基础知识及优化思路汇总 (目标检测)

要点&#xff1a; 参考综述&#xff1a;深度学习目标检测最全综述 - 爱码网参考表达&#xff1a;https://www.cnblogs.com/xjxy/p/13588772.html 一 发展历程 分类网络是目标检测的基础&#xff0c;必须熟练掌握。 1.1 传统算法 V.J Detector 19年前&#xff0c;P. Viola 和 …

【java】Java 异常处理的十个建议

文章目录 前言一、尽量不要使用e.printStackTrace(),而是使用log打印。二、catch了异常&#xff0c;但是没有打印出具体的exception&#xff0c;无法更好定位问题三、不要用一个Exception捕捉所有可能的异常四、记得使用finally关闭流资源或者直接使用try-with-resource五、捕获…

全注解下的SpringIoc 续4-条件装配bean

Spring Boot默认启动时会加载bean&#xff0c;如果加载失败&#xff0c;则应用就会启动失败。但是部分场景下&#xff0c;我们希望某个bean只有满足一定的条件下&#xff0c;才允许Spring Boot加载&#xff0c;所以&#xff0c;这里就需要使用Conditional注解来协助我们达到这样…

Java面试题总结 | Java面试题总结10- Feign和设计模式模块(持续更新)

文章目录 Feign项目中如何进行通信Feign原理简述 设计模式spring用到的设计模式项目的场景中运用了哪些设计模式写单例的时候需要注意什么工厂模式的理解设计模式了解么工厂设计模式单例设计模式代理设计模式策略模式**模板方法模式**观察者模式**适配器模式**观察者模式**适配…

HNU-操作系统OS-实验Lab2

OS_Lab2_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf &#xff08;学号 202108010XXX&#xff09; 前言 实验一过后大家做出来了一个可以启动的系统&#xff0c;实验二主要涉及操作系统的物理内存管理。操作系统为了使用内存&#xff0c;还需高效地管理…
最新文章