逆向案例二十六——webpack自执行函数是完整的,但我们只需要加载器,某职业技术学校登陆密码逆向
网址:统一身份认证平台
找到登陆包,搜索找到加密位置。

找到加密位置,打上断点
分析,E就是加密结果
进入n.i函数,就是t.i,看一下这个函数,传一个值,然后不变的返回,所以没什么意义

因此直接看u.c,很明显的webpack,找到前面定义u的位置,打上断点,释放其他断点,然后刷新页面。

进入n,发现它是一个完整的自执行函数 。总共有7万多行,我们只复制加载器,导出加载器,删除初始化。改成字典格式。

补充细枝末节,接下来就是补充函数模块。

缺少45模块,回到初始n(45) ,找到函数复制。可以发现,这是在子文件中

整体结果展示。

完整代码:
var yangxin;
window=global;
!function(e) {function t(n) {console.log(n)if (r[n])return r[n].exports;var o = r[n] = {i: n,l: !1,exports: {}};return e[n].call(o.exports, o, o.exports, t),o.l = !0,o.exports}yangxin=tvar n = window.webpackJsonp;window.webpackJsonp = function(r, i, a) {for (var c, u, l, s = 0, f = []; s < r.length; s++)u = r[s],o[u] && f.push(o[u][0]),o[u] = 0;for (c in i)Object.prototype.hasOwnProperty.call(i, c) && (e[c] = i[c]);for (n && n(r, i, a); f.length; )f.shift()();if (a)for (s = 0; s < a.length; s++)l = t(t.s = a[s]);return l};var r = {}, o = {1: 0};t.e = function(e) {function n() {c.onerror = c.onload = null,clearTimeout(u);var t = o[e];0 !== t && (t && t[1](new Error("Loading chunk " + e + " failed.")),o[e] = void 0)}var r = o[e];if (0 === r)return new Promise(function(e) {e()});if (r)return r[2];var i = new Promise(function(t, n) {r = o[e] = [t, n]});r[2] = i;var a = document.getElementsByTagName("head")[0], c = document.createElement("script");c.type = "text/javascript",c.charset = "utf-8",c.async = !0,c.timeout = 12e4,t.nc && c.setAttribute("nonce", t.nc),c.src = t.p + "" + e + "." + {0: "9cb4f940d5df451f543d"}[e] + ".js";var u = setTimeout(n, 12e4);return c.onerror = c.onload = n,a.appendChild(c),i},t.m = e,t.c = r,t.i = function(e) {return e},t.d = function(e, n, r) {t.o(e, n) || Object.defineProperty(e, n, {configurable: !1,enumerable: !0,get: r})},t.n = function(e) {var n = e && e.__esModule ? function() {return e.default}: function() {return e};return t.d(n, "a", n),n},t.o = function(e, t) {return Object.prototype.hasOwnProperty.call(e, t)},t.p = "/",t.oe = function(e) {throw console.error(e),e}
}({45: function(e, t, n) {"use strict";function a(e) {U = e,R = new Array(U);for (var t = 0; t < R.length; t++)R[t] = 0;q = new i,F = new i,F.digits[0] = 1}function i(e) {this.digits = "boolean" == typeof e && 1 == e ? null : R.slice(0),this.isNeg = !1}function r(e) {var t = new i(!0);return t.digits = e.digits.slice(0),t.isNeg = e.isNeg,t}function o(e) {var t = new i;t.isNeg = e < 0,e = Math.abs(e);for (var n = 0; e > 0; )t.digits[n++] = e & X,e = Math.floor(e / j);return t}function s(e) {for (var t = "", n = e.length - 1; n > -1; --n)t += e.charAt(n);return t}function c(e, t) {var n = new i;n.digits[0] = t;for (var a = C(e, n), r = H[a[1].digits[0]]; 1 == k(a[0], q); )a = C(a[0], n),digit = a[1].digits[0],r += H[a[1].digits[0]];return (e.isNeg ? "-" : "") + s(r)}function l(e) {for (var t = "", n = 0; n < 4; ++n)t += J[15 & e],e >>>= 4;return s(t)}function u(e) {for (var t = "", n = (h(e),h(e)); n > -1; --n)t += l(e.digits[n]);return t}function p(e) {return e >= 48 && e <= 57 ? e - 48 : e >= 65 && e <= 90 ? 10 + e - 65 : e >= 97 && e <= 122 ? 10 + e - 97 : 0}function d(e) {for (var t = 0, n = Math.min(e.length, 4), a = 0; a < n; ++a)t <<= 4,t |= p(e.charCodeAt(a));return t}function m(e) {for (var t = new i, n = e.length, a = n, r = 0; a > 0; a -= 4,++r)t.digits[r] = d(e.substr(Math.max(a - 4, 0), Math.min(a, 4)));return t}function _(e, t) {var n = "-" == e.charAt(0), a = n ? 1 : 0, r = new i, o = new i;o.digits[0] = 1;for (var s = e.length - 1; s >= a; s--) {r = f(r, b(o, p(e.charCodeAt(s)))),o = b(o, t)}return r.isNeg = n,r}function f(e, t) {var n;if (e.isNeg != t.isNeg)t.isNeg = !t.isNeg,n = g(e, t),t.isNeg = !t.isNeg;else {n = new i;for (var a, r = 0, o = 0; o < e.digits.length; ++o)a = e.digits[o] + t.digits[o] + r,n.digits[o] = a % j,r = Number(a >= j);n.isNeg = e.isNeg}return n}function g(e, t) {var n;if (e.isNeg != t.isNeg)t.isNeg = !t.isNeg,n = f(e, t),t.isNeg = !t.isNeg;else {n = new i;var a, r;r = 0;for (var o = 0; o < e.digits.length; ++o)a = e.digits[o] - t.digits[o] + r,n.digits[o] = a % j,n.digits[o] < 0 && (n.digits[o] += j),r = 0 - Number(a < 0);if (-1 == r) {r = 0;for (var o = 0; o < e.digits.length; ++o)a = 0 - n.digits[o] + r,n.digits[o] = a % j,n.digits[o] < 0 && (n.digits[o] += j),r = 0 - Number(a < 0);n.isNeg = !e.isNeg} elsen.isNeg = e.isNeg}return n}function h(e) {for (var t = e.digits.length - 1; t > 0 && 0 == e.digits[t]; )--t;return t}function v(e) {var t, n = h(e), a = e.digits[n], i = (n + 1) * B;for (t = i; t > i - B && 0 == (32768 & a); --t)a <<= 1;return t}function E(e, t) {for (var n, a, r, o = new i, s = h(e), c = h(t), l = 0; l <= c; ++l) {n = 0,r = l;for (var u = 0; u <= s; ++u,++r)a = o.digits[r] + e.digits[u] * t.digits[l] + n,o.digits[r] = a & X,n = a >>> K;o.digits[l + s + 1] = n}return o.isNeg = e.isNeg != t.isNeg,o}function b(e, t) {var n, a, r, o = new i;n = h(e),a = 0;for (var s = 0; s <= n; ++s)r = o.digits[s] + e.digits[s] * t + a,o.digits[s] = r & X,a = r >>> K;return o.digits[1 + n] = a,o}function y(e, t, n, a, i) {for (var r = Math.min(t + i, e.length), o = t, s = a; o < r; ++o,++s)n[s] = e[o]}function w(e, t) {var n = Math.floor(t / B), a = new i;y(e.digits, 0, a.digits, n, a.digits.length - n);for (var r = t % B, o = B - r, s = a.digits.length - 1, c = s - 1; s > 0; --s,--c)a.digits[s] = a.digits[s] << r & X | (a.digits[c] & V[r]) >>> o;return a.digits[0] = a.digits[s] << r & X,a.isNeg = e.isNeg,a}function T(e, t) {var n = Math.floor(t / B), a = new i;y(e.digits, n, a.digits, 0, e.digits.length - n);for (var r = t % B, o = B - r, s = 0, c = s + 1; s < a.digits.length - 1; ++s,++c)a.digits[s] = a.digits[s] >>> r | (a.digits[c] & Y[r]) << o;return a.digits[a.digits.length - 1] >>>= r,a.isNeg = e.isNeg,a}function S(e, t) {var n = new i;return y(e.digits, 0, n.digits, t, n.digits.length - t),n}function x(e, t) {var n = new i;return y(e.digits, t, n.digits, 0, n.digits.length - t),n}function O(e, t) {var n = new i;return y(e.digits, 0, n.digits, 0, t),n}function k(e, t) {if (e.isNeg != t.isNeg)return 1 - 2 * Number(e.isNeg);for (var n = e.digits.length - 1; n >= 0; --n)if (e.digits[n] != t.digits[n])return e.isNeg ? 1 - 2 * Number(e.digits[n] > t.digits[n]) : 1 - 2 * Number(e.digits[n] < t.digits[n]);return 0}function C(e, t) {var n, a, o = v(e), s = v(t), c = t.isNeg;if (o < s)return e.isNeg ? (n = r(F),n.isNeg = !t.isNeg,e.isNeg = !1,t.isNeg = !1,a = g(t, e),e.isNeg = !0,t.isNeg = c) : (n = new i,a = r(e)),new Array(n,a);n = new i,a = e;for (var l = Math.ceil(s / B) - 1, u = 0; t.digits[l] < G; )t = w(t, 1),++u,++s,l = Math.ceil(s / B) - 1;a = w(a, u),o += u;for (var p = Math.ceil(o / B) - 1, d = S(t, p - l); -1 != k(a, d); )++n.digits[p - l],a = g(a, d);for (var m = p; m > l; --m) {var _ = m >= a.digits.length ? 0 : a.digits[m], E = m - 1 >= a.digits.length ? 0 : a.digits[m - 1], y = m - 2 >= a.digits.length ? 0 : a.digits[m - 2], x = l >= t.digits.length ? 0 : t.digits[l], O = l - 1 >= t.digits.length ? 0 : t.digits[l - 1];n.digits[m - l - 1] = _ == x ? X : Math.floor((_ * j + E) / x);for (var C = n.digits[m - l - 1] * (x * j + O), N = _ * z + (E * j + y); C > N; )--n.digits[m - l - 1],C = n.digits[m - l - 1] * (x * j | O),N = _ * j * j + (E * j + y);d = S(t, m - l - 1),a = g(a, b(d, n.digits[m - l - 1])),a.isNeg && (a = f(a, d),--n.digits[m - l - 1])}return a = T(a, u),n.isNeg = e.isNeg != c,e.isNeg && (n = c ? f(n, F) : g(n, F),t = T(t, u),a = g(t, a)),0 == a.digits[0] && 0 == h(a) && (a.isNeg = !1),new Array(n,a)}function N(e, t) {return C(e, t)[0]}function I(e) {this.modulus = r(e),this.k = h(this.modulus) + 1;var t = new i;t.digits[2 * this.k] = 1,this.mu = N(t, this.modulus),this.bkplus1 = new i,this.bkplus1.digits[this.k + 1] = 1,this.modulo = P,this.multiplyMod = A,this.powMod = W}function P(e) {var t = x(e, this.k - 1), n = E(t, this.mu), a = x(n, this.k + 1), i = O(e, this.k + 1), r = E(a, this.modulus), o = O(r, this.k + 1), s = g(i, o);s.isNeg && (s = f(s, this.bkplus1));for (var c = k(s, this.modulus) >= 0; c; )s = g(s, this.modulus),c = k(s, this.modulus) >= 0;return s}function A(e, t) {var n = E(e, t);return this.modulo(n)}function W(e, t) {var n = new i;n.digits[0] = 1;for (var a = e, r = t; ; ) {if (0 != (1 & r.digits[0]) && (n = this.multiplyMod(n, a)),r = T(r, 1),0 == r.digits[0] && 0 == h(r))break;a = this.multiplyMod(a, a)}return n}function M(e, t, n) {this.e = m(e),this.d = m(t),this.m = m(n),this.chunkSize = 2 * h(this.m),this.radix = 16,this.barrett = new I(this.m)}function D(e, t, n) {return new M(e,t,n)}function L(e, t) {for (var n = new Array, a = t.length, r = 0; r < a; )n[r] = t.charCodeAt(r),r++;for (; n.length % e.chunkSize != 0; )n[r++] = 0;var o, s, l, p = n.length, d = "";for (r = 0; r < p; r += e.chunkSize) {for (l = new i,o = 0,s = r; s < r + e.chunkSize; ++o)l.digits[o] = n[s++],l.digits[o] += n[s++] << 8;var m = e.barrett.powMod(l, e.e);d += (16 == e.radix ? u(m) : c(m, e.radix)) + " "}return d.substring(0, d.length - 1)}function Q(e, t) {var n, a, i, r = t.split(" "), o = "";for (n = 0; n < r.length; ++n) {var s;for (s = 16 == e.radix ? m(r[n]) : _(r[n], e.radix),i = e.barrett.powMod(s, e.d),a = 0; a <= h(i); ++a)o += String.fromCharCode(255 & i.digits[a], i.digits[a] >> 8)}return o.charCodeAt(o.length - 1),o}t.a = a,t.b = D,t.c = L,t.d = Q;var U, R, q, F, K = 16, B = K, j = 65536, G = j >>> 1, z = j * j, X = j - 1;a(20);var H = (o(1e15),new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")), J = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"), V = new Array(0,32768,49152,57344,61440,63488,64512,65024,65280,65408,65472,65504,65520,65528,65532,65534,65535), Y = new Array(0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535)},
})u = yangxin(45)
u.a(131);
var password = '123456';
var b = u.b("010001", "", "00b5eeb166e069920e80bebd1fea4829d3d1f3216f2aabe79b6c47a3c18dcee5fd22c2e7ac519cab59198ece036dcf289ea8201e2a0b9ded307f8fb704136eaeb670286f5ad44e691005ba9ea5af04ada5367cd724b5a26fdb5120cc95b6431604bd219c6b7d83a6f8f24b43918ea988a76f93c333aa5a20991493d4eb1117e7b1")
function encrypted_pwd(b,password){E = u.c(b, password)return E
}console.log(encrypted_pwd(b,password))
相关文章:
逆向案例二十六——webpack自执行函数是完整的,但我们只需要加载器,某职业技术学校登陆密码逆向
网址:统一身份认证平台 找到登陆包,搜索找到加密位置。 找到加密位置,打上断点 分析,E就是加密结果 进入n.i函数,就是t.i,看一下这个函数,传一个值,然后不变的返回,所以没什么意义 …...
容器安全最佳实践和工具
容器安全最佳实践和工具 什么是容器安全 容器安全是指保护容器化应用程序和基础设施免受潜在威胁和攻击的措施和策略。容器化技术(如Docker、Kubernetes)使得应用程序能够在隔离的环境中运行,这既提供了灵活性,也引入了新的安全…...
牛客周赛 Round 51
目录 A.小红的同余 B.小红的三倍数 C.小红充电 D.小红的gcd E.小红走矩阵 F.小红的数组 这次周赛题目比较简单,算法题也基本上是板子题,出得很好(~ ̄▽ ̄)~ A.小红的同余 思路:签到题&am…...
【Linux】详解加锁实现线程互斥
一、多线程不加线程互斥可能会引发的问题 下面是一个抢标逻辑。抢票为什么会抢到负数:假设当票数为1时,此时四个进程的判断条件tickets都大于0,都会进入抢票操作,第一个进程抢完票以后tickets0并写回内存,第二个进程再…...
Java学习高级四
JDK8开始,接口新增了三种形式的方法 接口的多继承 内部类 成员内部类 静态内部类 局部内部类 匿名内部类 import javax.swing.*; import java.awt.event.ActionEvent;public class Test {public static void main(String[] args) {// 扩展 内部类在开发中的真实使用…...
mmc-utils 的 MMC 测试工具
MMC 工具介绍 有一个名为 mmc-utils 的 MMC 测试工具,由 Ulf Hansson 维护,您可以在以下公共 git 存储库中找到它: mmc/mmc-utils.git - Unnamed repository; edit this file description to name the repository. 功能 mmc-utils 工具可以…...
使用Python Turtle绘制圣诞树和装饰
简介(❤ ω ❤) 在这篇文章中,我们将探索如何使用Python的Turtle模块来绘制一个充满节日气氛的圣诞树,以及一些可爱的装饰品。Turtle是一个受Logo语言启发的图形库,非常适合初学者学习编程和创建图形。 码农不是吗喽(大学生版&…...
非常好的新版网盘系统,是一款PHP网盘与外链分享程序,支持文件预览
这是一款PHP网盘与外链分享程序,支持所有格式文件的上传, 可以生成文件外链、图片外链、音乐视频外链,生成外链同时自动生成相应的UBB代码和HTML代码, 还可支持文本、图片、音乐、视频在线预览,这不仅仅是一个网盘&a…...
针对【module_or_function】的单元测试,全面覆盖可能的【edge_cases】
针对【module_or_function】的单元测试,全面覆盖可能的【edge_cases】 编写单元测试是为了验证代码模块或函数的正确性和鲁棒性。对于module_or_function,首先需要确定这个模块或函数的具体功能和预期输入范围。一个好的单元测试应该包括以下几个步骤&a…...
OTA测试!
OTA测试,全称“Over-The-Air Testing”,是一种无线通信设备的性能测试方法,主要用于评估设备在无线传输环境中的性能表现。以下是关于OTA测试的详细介绍: 一、定义与目的 OTA测试着重进行整机辐射性能方面的测试,以评…...
[H最短路] lc2959. 关闭分部的可行集合数目(Floyd最短路+二进制枚举+模板题)
文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:2959. 关闭分部的可行集合数目 2. 题目解析 看了看题好像还没啥思路,结果一看数据范围,好家伙…n 最大就 10 啊,那不直接闭眼直接 Floyd枚举所有情况即可吗?&…...
pyinstaller用法详解3
本文使用创作助手。 大家好,时隔多日,我又更新了pyinstaller的用法详解! 当然,这一次要比之前更详细,十分详细。 谢谢大家的支持,我们现在开始! 一、快速开始使用pyinstaller 我之前的文章…...
养猫新手不会挑智能猫砂盆?2024最新挑选干货分享!
不得不说智能猫砂盆真的帮了我很大的忙,四年以来我陆陆续续养了很多的猫咪,但是因为需要上班,所以有时候也对铲屎的工作有些力不从心,后面听了朋友的建议,去入手了智能猫砂盆,不得不说买智能猫砂盆也非常的…...
上海理工大学24计算机考研考情分析!初复试分值比55:45,复试逆袭人数不算多!
上海理工大学(University of Shanghai for Science and Technology),位于上海市,是一所以工学为主,工学、理学、经济学、管理学、文学、法学、艺术学等多学科协调发展的应用研究型大学;是上海市属重点建设大…...
Pandas库学习之DataFrame.drop()函数
Pandas库学习之DataFrame.drop()函数 一、简介 DataFrame.drop 是 Pandas 库中一个非常实用的函数,用于删除 DataFrame 中的行或列。通过指定列名或行索引,可以灵活地从数据集中移除不需要的数据。这对于数据清洗和预处理非常有用。 二、语法和参数 D…...
WHAT - 介绍一个不太一样的 UI 组件库 shadcn/ui
目录 一、介绍主要特点核心组件示例代码社区和支持总结 二、copy/paste1. 高度可定制性2. 避免依赖锁定3. 学习和理解4. 简化调试5. 项目需求变化 官方文档:https://ui.shadcn.com/docs 一、介绍 ShadCN (ShadCN/UI) 是一个现代的 React 组件库,旨在提…...
python--实验 11 模块
目录 知识点 模块基础 模块使用方式 自定义模块示例 模块的有条件执行 Python包结构 定义和导入包 常用第三方库及安装 实例代码 第三方库自动安装脚本 Python标准库介绍 PyInstaller 小结 实验 1.(基础题)制作文本进度条。 2.(基础题) 蒙特卡罗方法计算圆周率…...
Vue3+Vite+TS+Axios整合详细教程
1. Vite 简介 Vite是新一代的前端构建工具,在尤雨溪开发Vue3.0的时候诞生。类似于Webpack Webpack-dev-server。其主要利用浏览器ESM特性导入组织代码,在服务器端按需编译返回,完全跳过了打包这个概念,服务器随起随用。生产中利用…...
【深度学习入门篇 ⑨】循环神经网络实战
【🍊易编橙:一个帮助编程小伙伴少走弯路的终身成长社群🍊】 大家好,我是小森( ﹡ˆoˆ﹡ ) ! 易编橙终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…...
宝塔安装RabbitMq教程
需要放开15672端口,默认账号密码为guest/guest...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
