JS加密/解密之XX数据后台列表JS加密

news2025/4/13 3:28:36

在这里插入图片描述

目标地址

ZHkuZmVpZ3VhLmNu

需求

老朋友联系到我,希望能自己做一个方便读取的小工具给公司内部用,承诺绝不外传。但是获取接口数据的最后一步遇到了问题,响应回来的数据做了大量加密,无法识别。

代码分析

该站代码做了大量的Promise异步处理,webpack打包的格式。追踪比较困难,最后花了很大功夫才跟到关键函数。(关于Promise的特性原理可以看我之前写的文章,写的有不对的地方欢迎指出)

// 全是类似于这种格式的函数 中间掺杂了大量的异步方法,根本没法跟进
function T(e, o, t, a) {
    var n = C(e);
    if (!n)
        return "function" == typeof o && o(p),
        void 0;
    var r = t && t.cdn
      , i = t && t.sync
      , m = t && t.timeout || 5e3;
    if (0 !== n.depends.length)
        for (var s = 0; s < n.depends.length; s++) {
            var l = n.depends[s];
            t && (delete t.sync,
            delete t.timeout,
            delete t.cdn),
            M(l, void 0, t)
        }
    var c = a || {};
    c.module = n,
    c.name = e,
    c.state = b,
    c.callbacks = c.callbacks || [],
    c.options = t,
    o && c.callbacks.push(o),
    c.timeoutTimer = setTimeout(function() {
        c.state = g,
        W(c, t && t.throwExceptionInCallback)
    }, m),
    a || u.push(c);
    var f = n.sync;
    i && (f = i);
    var h = d(n.name, r);
    S(h, "AWSC_" + n.name, f)
}

结果

最后找到了代码,是一个变种的AES加密+自定义的字符串转码加密,相关逻辑一步步手工复原。中间还有用到jsjiami官网类似的加密逻辑。

ggnsh = '',  _0x4aec=['w71Uw6fCsGg=','6L2C5puu5Lqs5Li/5LqF57O/5Yi/w4ou5pKI5L6h44Km','56m96Ze05o646aqX57mjNeKDnm7DmOKjuWvkeKDk1blkqLCuOKBs8Oyw6TopK7lrpTigobDru+8nOS+hOWMl+S+peeaksOww7Av44Oh','w61VwrbDuA==','wqPDr8OcBGHClw==','QjLDk8K7dQ==','wo3CqXZrYWRc','diLDmQ==','B8OgHA==','wrfDpcORD2HCkcO/w4HCuQ==','b8O4XsOCwpXDocOPw4sVI2LDg8KLYw==','5aSG5p6n5oG455iTfsKV6Yej5bSk5aah5Lm8wrQcwq3vvoJlNcOD5qCN56+177+3566q56+35YWW5LiE6Z6swoAxwoPDonbChETDm8OVw5LnmJDkurbnopLvvLXorIjmjoPljJTlhL/mnqzlhrzli5XlrbXjg7fovLvku57ltbnlhYfkuZXogpDliJLlrLQCUnLjgIZFc8Kq566b5qid54i15YaS5a+r','5YmT6Zus54mi5p+w5YyJ77+yZU/kvZ/lroDmno3lv6Pnq44=','w67Dt145VA==','azMQw55U','w6rCrcOPYsKl','w5DCgMOWf8KM','w7F/w73CrGI=','w5LChcK4wonDtsKh','FcOzGm7CvxDChg==','w4g8w6pGOA=='];(function(_0xf49075,_0x43a770){var _0x452f8c=function(_0x38b3d2){while(--_0x38b3d2){_0xf49075['push'](_0xf49075['shift']());}};_0x452f8c(++_0x43a770);}(_0x4aec,0xa9));var _0x3f46=function(_0x14f8df,_0x5b5bda){_0x14f8df=_0x14f8df-0x0;var _0x45b4b0=_0x4aec[_0x14f8df];if(_0x3f46['initialized']===undefined){(function(){var _0x1e077d=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x2edf07='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x1e077d['atob']||(_0x1e077d['atob']=function(_0x3a4810){var _0x5bf5a1=String(_0x3a4810)['replace'](/=+$/,'');for(var _0x305cfd=0x0,_0x22fa5b,_0x2dea49,_0x381f3f=0x0,_0x1afedf='';_0x2dea49=_0x5bf5a1['charAt'](_0x381f3f++);~_0x2dea49&&(_0x22fa5b=_0x305cfd%0x4?_0x22fa5b*0x40+_0x2dea49:_0x2dea49,_0x305cfd++%0x4)?_0x1afedf+=String['fromCharCode'](0xff&_0x22fa5b>>(-0x2*_0x305cfd&0x6)):0x0){_0x2dea49=_0x2edf07['indexOf'](_0x2dea49);}return _0x1afedf;});}());var _0x8b5ca2=function(_0x1f3132,_0x92107a){var _0x216991=[],_0x1faf0e=0x0,_0x1af4ca,_0x3fb046='',_0x27048e='';_0x1f3132=atob(_0x1f3132);for(var _0x51ad13=0x0,_0x21236d=_0x1f3132['length'];_0x51ad13<_0x21236d;_0x51ad13++){_0x27048e+='%'+('00'+_0x1f3132['charCodeAt'](_0x51ad13)['toString'](0x10))['slice'](-0x2);}_0x1f3132=decodeURIComponent(_0x27048e);for(var _0x53b9f8=0x0;_0x53b9f8<0x100;_0x53b9f8++){_0x216991[_0x53b9f8]=_0x53b9f8;}for(_0x53b9f8=0x0;_0x53b9f8<0x100;_0x53b9f8++){_0x1faf0e=(_0x1faf0e+_0x216991[_0x53b9f8]+_0x92107a['charCodeAt'](_0x53b9f8%_0x92107a['length']))%0x100;_0x1af4ca=_0x216991[_0x53b9f8];_0x216991[_0x53b9f8]=_0x216991[_0x1faf0e];_0x216991[_0x1faf0e]=_0x1af4ca;}_0x53b9f8=0x0;_0x1faf0e=0x0;for(var _0xfdc631=0x0;_0xfdc631<_0x1f3132['length'];_0xfdc631++){_0x53b9f8=(_0x53b9f8+0x1)%0x100;_0x1faf0e=(_0x1faf0e+_0x216991[_0x53b9f8])%0x100;_0x1af4ca=_0x216991[_0x53b9f8];_0x216991[_0x53b9f8]=_0x216991[_0x1faf0e];_0x216991[_0x1faf0e]=_0x1af4ca;_0x3fb046+=String['fromCharCode'](_0x1f3132['charCodeAt'](_0xfdc631)^_0x216991[(_0x216991[_0x53b9f8]+_0x216991[_0x1faf0e])%0x100]);}return _0x3fb046;};_0x3f46['rc4']=_0x8b5ca2;_0x3f46['data']={};_0x3f46['initialized']=!![];}var _0x5b32d9=_0x3f46['data'][_0x14f8df];if(_0x5b32d9===undefined){if(_0x3f46['once']===undefined){_0x3f46['once']=!![];}_0x45b4b0=_0x3f46['rc4'](_0x45b4b0,_0x5b5bda);_0x3f46['data'][_0x14f8df]=_0x45b4b0;}else{_0x45b4b0=_0x5b32d9;}return _0x45b4b0;};var a={},b={};(function(_0x506b2e,_0x58d7e0){var _0x19e8e1={'rRNLz':_0x3f46('0x0','1s0Z'),'BgIBC':_0x3f46('0x1','8!@M')};_0x506b2e[_0x3f46('0x2','w1o8')]=_0x19e8e1['rRNLz'];_0x58d7e0[_0x3f46('0x3','*!GJ')]=_0x19e8e1[_0x3f46('0x4','USRf')];_0x58d7e0[_0x3f46('0x5','U$Z9')]='如果您的JS里嵌套了PHP,JSP标签,等等其他非JavaScript的代码,请提取出来再加密。这个工具不能加密php、jsp等模版内容';}(a,b));;(function(_0x4bdcfe,_0x4fbc37,_0x225d65){var _0xa570a3={'cKiRe':function _0x4524a2(_0x28244c,_0x3e739a){return _0x28244c===_0x3e739a;},'OatFh':_0x3f46('0x6','dutS'),'JiHQK':_0x3f46('0x7','1BqD'),'pDQLb':function _0x21f4e0(_0x1041c5,_0x24bbc1){return _0x1041c5!==_0x24bbc1;},'HmQGk':_0x3f46('0x8','*!GJ'),'pdbgu':_0x3f46('0x9','09i)'),'bdJmK':'版本号,js会定期弹窗,还请支持我们的工作','mwSYx':'站长接高级\x20“JS加密”\x20和\x20“JS解密”\x20,保卫你的\x20js。','noQRJ':_0x3f46('0xa','w1o8'),'nOPqA':_0x3f46('0xb','^WDP')};_0x225d65='al';try{if(_0xa570a3['cKiRe'](_0xa570a3[_0x3f46('0xc','4GGL')],_0xa570a3[_0x3f46('0xd','y]bZ')])){_0x225d65+=_0xa570a3[_0x3f46('0xe','%Li]')];_0x4fbc37=encode_version;if(!(_0xa570a3[_0x3f46('0xf','%Li]')](typeof _0x4fbc37,_0xa570a3['HmQGk'])&&_0xa570a3['cKiRe'](_0x4fbc37,_0xa570a3['pdbgu']))){_0x4bdcfe[_0x225d65]('删除'+_0xa570a3[_0x3f46('0x10','r5C!')]);}}else{_0x4bdcfe['info']='这是一个一系列js操作。';d[_0x3f46('0x11','1H)L')]=_0xa570a3['mwSYx'];d[_0x3f46('0x12','1BqD')]=_0xa570a3[_0x3f46('0x13','w@A#')];}}catch(_0x433f0a){_0x4bdcfe[_0x225d65](_0xa570a3[_0x3f46('0x14','r5C!')]);}}(window));

算法还原后的代码就不贴了,尊重网站作者隐私。需要的可以联系jsjiami官方客服。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MS-VS C# 简单开发记录(GUI)1 -从一个菜单点击打开新窗口

前言&#xff1a; C# 的使用&#xff0c;似乎在机器视觉的集成项目里面变得越来越多了&#xff0c;笔者无奈的熟悉起来这个环境&#xff0c;不过&#xff0c;据说&#xff0c;如果做界面的设计&#xff0c;C#的使用是异常方便的&#xff0c;有的不行了&#xff0c;做几个实例看…

如何在Linux命令行界面愉快进行性能测试?

本人在做性能测试的过程中&#xff0c;遇到一个问题&#xff0c;测试机选了一台Linux服务器&#xff0c;只有命令行界面。执行测试用例不是非常的灵活&#xff0c;有时候我需要改一两个参数添加一些日志&#xff0c;都需要重新打包部署&#xff0c;虽然自动化构建比较方便&…

坚持#第420天~阿里云轻量服务器内存受AliYunDunMonito影响占用解决方法

阿里云轻量服务器内存受AliYunDunMonito影响占用解决方法&#xff0c;亲测有效&#xff1a; Mobax好卡啊&#xff0c;那就直接在阿里云后台操作即可&#xff0c;阿里云后台也可以上传文件。 Navicat mysql好卡啊&#xff0c;那就直接在阿里云后台最上面帮助的右边有个数据库&…

vscode插件安装

Error Lens错误提示 One Dark Pro代码颜色主题

区块链与教育:颠覆传统,引领未来

区块链与教育&#xff1a;颠覆传统&#xff0c;引领未来 摘要&#xff1a;本文将探讨区块链技术在教育领域的应用及其潜在影响。通过介绍区块链技术的基本原理、教育领域的现状&#xff0c;以及区块链技术在教育中的实际应用案例&#xff0c;我们将展望一个去中心化、安全可信…

NI-9219 100 S/s/ch国产化4通道C系列通用多功能模拟输入模块,支持多种传感器

100 S/s/ch&#xff0c;4通道C系列通用模拟输入模块 NI-9219专为多功能测试而设计。NI-9219可用于测量来自多种传感器&#xff08;如应变计&#xff0c;电阻温度检测器(RTD)&#xff0c;热电偶&#xff0c;测压元件和其他有源传感器等&#xff09;的信号&#xff0c;以及制作1…

如何确认目标期刊被SCI或EI收录?

原创内容&#xff0c;仅供参考&#xff0c;欢迎大家批评指正&#xff01; 目录 通过Web of Science查询SCI期刊1. 登录Web of Science2. 查找目标期刊3. 查看期刊信息 通过Scopus查询EI期刊1. 登录Scopus2. 查找目标期刊3. 查看期刊信息 参考 通过Web of Science查询SCI期刊 1…

518年会抽奖软件,支持超高的照片滚动速度

518抽奖软件简介 518抽奖软件&#xff0c;518我要发&#xff0c;超好用的年会抽奖软件&#xff0c;简约设计风格。 包含文字号码抽奖、照片抽奖两种模式&#xff0c;支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 照片缓存&#xff0c;支持高速滚动 1. 支持…

05 # 手写 bind

bind 干了什么&#xff1f; 改变 this 指向没有让函数执行&#xff0c;返回一个改变 this 指向后的函数 bind 难点在于参数的收集 手写 bind 简单实现如下&#xff1a; <script>Function.prototype.kaimoBind function (content) {// 获取到 bind 里的剩余参数let …

「软件设计师」 2023年上半年上午真题解析

「软件设计师」 2023年上半年上午真题解析 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &…

echarts的图表立体感——实现立体柱状图和立体饼图的详细教程

&#x1f602;博主&#xff1a;小猫娃来啦 &#x1f602;文章核心&#xff1a;使用echarts实现立体柱状图和立体饼图的详细教程 文章目录 简单介绍立体柱状图和立体饼图环境配置实现立体柱状图实现立体饼图总结 简单介绍立体柱状图和立体饼图 立体柱状图和立体饼图是数据可视化…

MySQL Error 1215: Cannot add foreign key constraint

首先确保中介表中被设置外键的字段不能被设置为主键 第二步确保外键字段的属性与要连接的表的字段属性相同 第三步&#xff0c;设置表的选项 修改引擎为 InnoDB 三个表的引擎都要修改 最后就是运行代码 SET OLD_FOREIGN_KEY_CHECKSFOREIGN_KEY_CHECKS; SET FOREIGN_KEY_…

Python之循环语句

循环普遍存在于日常生活中&#xff0c;同样&#xff0c;在程序中&#xff0c;循环功能也是至关重要的基础功能。 循环在程序中同判断一样&#xff0c;也是广泛存在的&#xff0c;是非常多功能实现的基础 while循环的基础语法 生活中的循环 程序中的循环 只要条件满足 会无限循…

6-2 二叉树求结点数 分数 10

int NodeCountOfBiTree(BiTree T) {if (T nullptr)return 0;return 1 NodeCountOfBiTree(T->lchild) NodeCountOfBiTree(T->rchild); }

亚马逊卖家有必要自己养号?

亚马逊是非常注重用户体验的跨境电商平台&#xff0c;所以亚马逊的用户评论和点星对店铺权重的提升非常高&#xff0c;平台对评论的审核也极度严格 可以毫不夸张的说&#xff0c;在亚马逊平台上&#xff0c;用户的点星和评论是决定listing生死的关键因素 如果用户好评多&…

面试官:说一下你工作中发现的最有价值的bug

这个问题&#xff0c;基本95%的面试都会遇到。究竟面试官想要知道什么呢&#xff1f;让我们回到这个面试场景来看看。 “说一下你印象最深的bug" 你的脑子里拼命的回想过去遇到的印象深刻或有价值的bug。 “我就是做测试的&#xff0c;每天那么多bug&#xff0c;累计下…

10.31日模拟赛总结

文章目录 考试时间及策略考试结果考试反思题解A.进步科学B.吉吉没急C.老杰克哒D.季积晓淆 考试时间及策略 没啥好说的&#xff0c;因为好像都不会。所以全场感觉都在罚坐&#xff0c;很痛苦。 考试结果 30 0 50 5 85 考试反思 T1&#xff1a;T1是个神奇状压&#xff0…

友思特分享|不用3D点云,如何实现精准的物体识别与抓取?

摘要 面对技术变革的挑战&#xff0c;友思特 IDS相机以其卓越的图像识别和高速处理技术&#xff0c;为制造业提供了前沿的自动化解决方案。即使在复杂的光线条件下&#xff0c;友思特 IDS相机也始终保持稳定高效的表现。选择友思特&#xff0c;让您的生产力迈向更高峰&#xf…

Redis常见的全局命令

Redis中最核心的两个命令set和get 两个最核心的命令就是get和set. redis是按照键值对的方式来存储数据的,所以set就表示把key-value存储进去,get表示根据key来查询对应的value. 需要注意的是,必须进入redis客户端才能输入redis命令. 此处的key和value都是字符串类型.对于上述…

速谈 Beyond Compare 使用步骤

相信很多从事校对工作的工作者都听说过Beyond Compare软件。这是一款专业级的文件夹和文件对比工具&#xff0c;使用它可以很方便地对比出两个文件夹或文件的不同之处。很大程度上提高校对的准确率。但是一些初级使用者可能对Beyond Compare不是很了解&#xff0c;不知道该如何…