webpack js 逆向 --- 個人記錄

  1. 網站
    aHR0cDovL2FlcmZheWluZy5jb20v
  2. 加密參數
    在這里插入圖片描述
  3. 參數加密位置
    在這里插入圖片描述

方法:

1. 構造自執行函數

!function(e) {// 加載器
}(// 模塊1;// 模塊2
)

2. 找到js的加載器
在這里插入圖片描述
3. 把上述代碼放入第一步構造的自執行函數(完整扣取一整個加載器里的代碼),并用一個全局參數接收加載器,比如window.zzz = i;
自執行代碼如下:

var window=global;
!function(e) {function t(t) {for (var r, i, l = t[0], s = t[1], u = t[2], f = 0, p = []; f < l.length; f++)i = l[f],Object.prototype.hasOwnProperty.call(o, i) && o[i] && p.push(o[i][0]),o[i] = 0;for (r in s)Object.prototype.hasOwnProperty.call(s, r) && (e[r] = s[r]);for (c && c(t); p.length; )p.shift()();return a.push.apply(a, u || []),n()}function n() {for (var e, t = 0; t < a.length; t++) {for (var n = a[t], r = !0, l = 1; l < n.length; l++) {var s = n[l];0 !== o[s] && (r = !1)}r && (a.splice(t--, 1),e = i(i.s = n[0]))}return e}var r = {}, o = {0: 0}, a = [];function i(t) {if (r[t])return r[t].exports;var n = r[t] = {i: t,l: !1,exports: {}};return e[t].call(n.exports, n, n.exports, i),n.l = !0,n.exports}window.zzz = i; // 定義一個參數window.zzz接收加載器;var l = window.webpackJsonp = window.webpackJsonp || [], s = l.push.bind(l);l.push = t,l = l.slice();for (var u = 0; u < l.length; u++)t(l[u]);var c = s;
}({// 模塊1;// 模塊2
})

4. 把加密位置的代碼扣取下來,放入自執行函數的模塊里,然后定義一個模塊名給,比如jsencrypt,自執行函數代碼如下:

var window=global;
!function(e) {function t(t) {for (var r, i, l = t[0], s = t[1], u = t[2], f = 0, p = []; f < l.length; f++)i = l[f],Object.prototype.hasOwnProperty.call(o, i) && o[i] && p.push(o[i][0]),o[i] = 0;for (r in s)Object.prototype.hasOwnProperty.call(s, r) && (e[r] = s[r]);for (c && c(t); p.length; )p.shift()();return a.push.apply(a, u || []),n()}function n() {for (var e, t = 0; t < a.length; t++) {for (var n = a[t], r = !0, l = 1; l < n.length; l++) {var s = n[l];0 !== o[s] && (r = !1)}r && (a.splice(t--, 1),e = i(i.s = n[0]))}return e}var r = {}, o = {0: 0}, a = [];function i(t) {if (r[t])return r[t].exports;var n = r[t] = {i: t,l: !1,exports: {}};return e[t].call(n.exports, n, n.exports, i),n.l = !0,n.exports}window.zzz = i; // 定義一個參數window.zzz接收加載器;var l = window.webpackJsonp = window.webpackJsonp || [], s = l.push.bind(l);l.push = t,l = l.slice();for (var u = 0; u < l.length; u++)t(l[u]);var c = s;}({// 模塊名:jsencryptjsencrypt:function(e, t, n) {"use strict";Object.defineProperty(t, "__esModule", {value: !0});t.default = function(e, t) {var n = (new Date).getTime() + 2592e6 + (t || 3e4), r = (e || "") + "&t=" + n;return {t: n,s: Sha1.hash(r)}}
}},
)

5. 對上述代碼new一下,然后執行jsencrypt方法,運行代碼,發現報錯

result = new window.zzz("jsencrypt").default()
console.log(result)

報錯:
在這里插入圖片描述
6. 然后去源碼里扣取Sha1的代碼

最后所有js代碼如下:

var window=global;function Sha1() {}
Sha1.hash = function(n, t) {var w = Object.assign({msgFormat: "string",outFormat: "hex"}, t), b, i, f, u, e, r, p, k, h, d;switch (w.msgFormat) {default:case "string":n = Sha1.utf8Encode(n);break;case "hex-bytes":n = Sha1.hexBytesToString(n)}b = [1518500249, 1859775393, 2400959708, 3395469782];i = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];n += String.fromCharCode(128);var g = n.length / 4 + 2, o = Math.ceil(g / 16), s = new Array(o);for (u = 0; u < o; u++)for (s[u] = new Array(16),f = 0; f < 16; f++)s[u][f] = n.charCodeAt(u * 64 + f * 4) << 24 | n.charCodeAt(u * 64 + f * 4 + 1) << 16 | n.charCodeAt(u * 64 + f * 4 + 2) << 8 | n.charCodeAt(u * 64 + f * 4 + 3);for (s[o - 1][14] = (n.length - 1) * 8 / Math.pow(2, 32),s[o - 1][14] = Math.floor(s[o - 1][14]),s[o - 1][15] = (n.length - 1) * 8 & 4294967295,u = 0; u < o; u++) {for (e = new Array(80),r = 0; r < 16; r++)e[r] = s[u][r];for (r = 16; r < 80; r++)e[r] = Sha1.ROTL(e[r - 3] ^ e[r - 8] ^ e[r - 14] ^ e[r - 16], 1);var c = i[0], l = i[1], a = i[2], v = i[3], y = i[4];for (r = 0; r < 80; r++)p = Math.floor(r / 20),k = Sha1.ROTL(c, 5) + Sha1.f(p, l, a, v) + y + b[p] + e[r] >>> 0,y = v,v = a,a = Sha1.ROTL(l, 30) >>> 0,l = c,c = k;i[0] = i[0] + c >>> 0;i[1] = i[1] + l >>> 0;i[2] = i[2] + a >>> 0;i[3] = i[3] + v >>> 0;i[4] = i[4] + y >>> 0}for (h = 0; h < i.length; h++)i[h] = ("00000000" + i[h].toString(16)).slice(-8);return d = w.outFormat == "hex-w" ? " " : "",i.join(d)
}
;
Sha1.f = function(n, t, i, r) {switch (n) {case 0:return t & i ^ ~t & r;case 1:return t ^ i ^ r;case 2:return t & i ^ t & r ^ i & r;case 3:return t ^ i ^ r}
}
;
Sha1.ROTL = function(n, t) {return n << t | n >>> 32 - t
}
;
Sha1.utf8Encode = function(n) {return unescape(encodeURIComponent(n))
}
;
Sha1.hexBytesToString = function(n) {var i, t;for (n = n.replace(" ", ""),i = "",t = 0; t < n.length; t += 2)i += String.fromCharCode(parseInt(n.slice(t, t + 2), 16));return i
}
!function(e) {function t(t) {for (var r, i, l = t[0], s = t[1], u = t[2], f = 0, p = []; f < l.length; f++)i = l[f],Object.prototype.hasOwnProperty.call(o, i) && o[i] && p.push(o[i][0]),o[i] = 0;for (r in s)Object.prototype.hasOwnProperty.call(s, r) && (e[r] = s[r]);for (c && c(t); p.length; )p.shift()();return a.push.apply(a, u || []),n()}function n() {for (var e, t = 0; t < a.length; t++) {for (var n = a[t], r = !0, l = 1; l < n.length; l++) {var s = n[l];0 !== o[s] && (r = !1)}r && (a.splice(t--, 1),e = i(i.s = n[0]))}return e}var r = {}, o = {0: 0}, a = [];function i(t) {if (r[t])return r[t].exports;var n = r[t] = {i: t,l: !1,exports: {}};return e[t].call(n.exports, n, n.exports, i),n.l = !0,n.exports}window.zzz = i;   // 定義一個參數window.zzz接收加載器;var l = window.webpackJsonp = window.webpackJsonp || [], s = l.push.bind(l);l.push = t,l = l.slice();for (var u = 0; u < l.length; u++)t(l[u]);var c = s;}({// 模塊名:jsencryptjsencrypt:function(e, t, n) {"use strict";Object.defineProperty(t, "__esModule", {value: !0});t.default = function(e, t) {var n = (new Date).getTime() + 2592e6 + (t || 3e4), r = (e || "") + "&t=" + n;return {t: n,s: Sha1.hash(r)}}
}},)result = new window.zzz("jsencrypt").default()
console.log(result)

最后運行結果:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75896.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75896.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75896.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用HTML.CSS.JavaScript實現一個貪吃蛇小游戲

目錄 一、引言二、實現思路1. HTML 結構2. CSS 樣式3. JavaScript 邏輯 三、代碼實現四、效果展示 一、引言 貪吃蛇是一款經典的小游戲&#xff0c;曾經風靡一時。今天&#xff0c;我們將使用 HTML、CSS 和 JavaScript 來實現一個簡單的貪吃蛇小游戲。通過這個項目&#xff0c…

基于α-β剪枝的含禁手AI五子棋

前言&#xff1a; 正常的五子棋應當設有禁手規則&#xff0c;否則先手黑棋必贏&#xff0c;基于此點設計出一款包含禁手的AI五子棋項目&#xff0c;該項目代碼已在github開源&#xff0c;感興趣的友友可以自取試玩:ace-trump-tech/AI-Gomoku-with-Prohibition-Moves: 含禁手的A…

Spring Boot 集成 Redis中@Cacheable 和 @CachePut 的詳細對比,涵蓋功能、執行流程、適用場景、參數配置及代碼示例

以下是 Cacheable 和 CachePut 的詳細對比&#xff0c;涵蓋功能、執行流程、適用場景、參數配置及代碼示例&#xff1a; 1. 核心對比表格 特性CacheableCachePut作用緩存方法的返回結果&#xff0c;避免重復計算執行方法并更新緩存&#xff0c;不覆蓋原有緩存執行流程緩存命中…

可以使用費曼學習法閱讀重要的書籍

書本上畫了很多線&#xff0c;回頭看等于沒畫出任何重點。 不是所有的觸動都是有效的。就像你曾經看過很多好文章&#xff0c;當時被觸動得一塌糊涂&#xff0c;還把它們放進了收藏夾&#xff0c;但一段時間之后&#xff0c;你就再也記不起來了。如果讓你在一本書上畫出令自己…

Nginx之https重定向為http

為了將Nginx中443端口的請求重定向到80端口&#xff0c;你可以按照以下步驟進行操作&#xff1a; ?確認Nginx已經正確安裝并運行?&#xff1a; 確保Nginx服務已經在你的系統上安裝并運行。你可以通過運行以下命令來檢查Nginx的狀態&#xff08;具體命令可能因操作系統而異&a…

【ARTS】【LeetCode-2873】有序三元組中的最大值!

前言 僅做學習使用&#xff0c;侵刪 什么是ARTS&#xff1f; 算法(Algorithm): 每周至少一道LeetCode算法題&#xff0c;加強編程訓練和算法學習 閱讀(Review)&#xff1a; 閱讀并點評至少一篇英文技術文章&#xff0c;提高英文水平 技巧 (Tip)&#xff1a;學習至少一個技…

基于spring boot 鮮花銷售系統PPT(源碼+lw+部署文檔+講解),源碼可白嫖!

課題意義 隨著網絡不斷的普及發展&#xff0c;鮮花銷售系統依靠網絡技術的支持得到了快速的發展&#xff0c;首先要從用戶的實際需求出發&#xff0c;通過了解用戶的需求開發出具有針對性的信息管理系統&#xff0c;利用目前網絡給用戶帶來的方便快捷這一特點對系統進行調整&am…

Redis常用的數據結構及其使用場景

字符串(String) string 是 redis 最基本的類型&#xff0c;你可以理解成與 Memcached 一模一樣的類型&#xff0c;一個 key 對應一個 value。 string 類型是二進制安全的。意思是 redis 的 string 可以包含任何數據&#xff0c;比如jpg圖片或者序列化的對象。 string 類型是 R…

設計模式簡述(五)建造者模式

建造者模式 描述基本要素協調類使用 描述 建造者模式屬于創造型設計模式。 通常用于構建一系列復雜對象&#xff0c;這些對象有一定的共性。 我們可以通過不同的建造者&#xff0c;組裝不同的對象 與工廠模式的區別&#xff0c;建造者模式更側重與基于基礎構件組裝而非直接創…

Java基礎 4.6

1.成員方法練習 //編寫類A&#xff1a;判斷一個數是奇數還是偶數&#xff0c;返回boolean //根據行、列、字符打印對應行數和列數的字符&#xff0c;比如&#xff1a;行4 列4 字符# 則打印相應的效果 public class MethodExercise01 {public static void main(String[] args) …

前端快速入門學習4——CSS盒子模型、浮動、定位

一、盒子模型 所有HTML元素可以看作盒子&#xff0c;在CSS中&#xff0c;"box model"這一術語是用來設計和布局時使用。 CSS盒模型本質上是一個盒子&#xff0c;封裝周圍的HTML元素&#xff0c;它包括&#xff1a;邊距&#xff0c;邊框&#xff0c;填充&#xff0c…

瑞數信息發布《BOTS自動化威脅報告》,揭示AI時代網絡安全新挑戰

近日&#xff0c;瑞數信息正式發布《BOTS自動化威脅報告》&#xff0c;力求通過全景式觀察和安全威脅的深度分析&#xff0c;為企業在AI時代下抵御自動化攻擊提供安全防護策略&#xff0c;從而降低網絡安全事件帶來的影響&#xff0c;進一步增強業務韌性和可持續性。 威脅一&am…

Docker設置代理

目錄 前言創建代理文件重載守護進程并重啟Docker檢查代理驗證 前言 拉取flowable/flowable-ui失敗&#xff0c;用DaoCloud源也沒拉下來&#xff0c;不知道是不是沒同步。索性想用代理拉鏡像。在此記錄一下。 創建代理文件 創建docker代理配置 sudo mkdir -p /etc/systemd/s…

Debezium嵌入式連接postgresql封裝服務

文章目錄 1.項目結構&#xff1a;2.依賴&#xff1a;3.application.properties4.DebeziumConnectorConfig類5.TableEnum類6.TableHandler接口&#xff08;表處理抽象&#xff09;7.DefaultTableHandler默認實現類8.UserTableHandler處理類9.TableHandlerFactory工廠10.Debezium…

ER-圖,詳情和畫法

一、E-R圖的核心元素 1.實體 表示現實中對象或概念&#xff0c;用矩形表示 示例&#xff1a;用戶、老師、學生 2.屬性 描述實體的特征&#xff0c;用橢圓表示。 分為主鍵&#xff08;用戶id&#xff09; 和非主鍵&#xff08;用戶昵稱&#xff09; 3.關系 表示實體間的…

Windows Flip PDF Plus Corporate PDF翻頁工具

軟件介紹 Flip PDF Plus Corporate是一款功能強大的PDF翻頁工具&#xff0c;也被稱為名編輯電子雜志大師。這款軟件能夠迅速將PDF文件轉換為具有翻頁動畫效果的電子書&#xff0c;同時保留原始的超鏈接和書簽。無論是相冊、視頻、音頻&#xff0c;還是Flash、視頻和鏈接&#…

Linux文件系統中的Page Cache和內存管理中的Page之間的關系

Linux文件系統中的Page Cache和內存管理中的Page之間有密切的關聯&#xff0c;兩者在底層機制上緊密結合&#xff0c;共同實現高效的內存和文件系統管理。以下是它們的關系和關鍵點&#xff1a; 核心關系 Page Cache的底層是內存Page Page Cache是由內存管理中的物理內存頁&…

每日一個小病毒(C++)EnumChildWindows+shellcode

這里寫目錄標題 1. `EnumChildWindows` 的基本用法2. 如何利用 `EnumChildWindows` 執行 Shellcode?關鍵點:完整 Shellcode 執行示例3. 為什么 `EnumChildWindows` 能執行 Shellcode?4. 防御方法5. 總結EnumChildWindows 是 Windows API 中的一個函數,通常用于枚舉所有子窗…

AI爬蟲?爬!

1.你是否還在為大模型的key而感到憂傷和囊中羞澀&#xff0c;openrouter.ai&#xff0c;目前可免費白嫖多個大模型&#xff0c;代碼如下 from openai import OpenAIclient OpenAI(base_url"https://openrouter.ai/api/v1",api_key"", )completion clien…

洛谷題單3-P5720 【深基4.例4】一尺之棰-python-流程圖重構

題目描述 《莊子》中說到&#xff0c;“一尺之棰&#xff0c;日取其半&#xff0c;萬世不竭”。第一天有一根長度為 a a a 的木棍&#xff0c;從第二天開始&#xff0c;每天都要將這根木棍鋸掉一半&#xff08;每次除 2 2 2&#xff0c;向下取整&#xff09;。第幾天的時候木…