日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

webpack打包后引用cdn的js_JS逆向:Webpack打包后的代码怎么搞?猿人学爬虫比赛第十六题详细题解...

發布時間:2023/12/10 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 webpack打包后引用cdn的js_JS逆向:Webpack打包后的代码怎么搞?猿人学爬虫比赛第十六题详细题解... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實戰地址

http://match.yuanrenxue.com/match/16

抓包分析

地址欄輸入 地址,按下F12并回車,發現數據在這里:

查看cookie,無加密相關的字段。請求的接口倒是有個m的加密參數,看來這題的主要目的就是?看看m參數怎么進行加密的吧。

切換 Initiator,這請求也太明顯了,點擊下面所示的js文件:

跟進去并美化后,來到這里:

不用過多分析,m加密在這里:

r.m = n[e(528)](btoa, p_s),r.t = p_s;

而這個實參 p_s 是由上面的這行代碼生成的:

p_s = Date[e(496)](new Date)[e(517)]();

在?r.m 賦值的這行打上斷點,請求第二頁,控制臺輸入 btoa 并回車,雙擊跟進,來到這里:

看這個混淆,很明顯的?obfuscator 混淆,直接將整個 732?copy下來保存到文件,并寫出AST插件進行反混淆:

進行反混淆和刪除垃圾代碼,優化后的btoa函數:

function btoa(e) { var f = "U9876543210zyxwvutsrqpomnlkjihgfdecbaZXYWVUTSRQPONABHICESQWK2Fi+9876543210zyxwvutsrqpomnlkjihgfdecbaZXYWVUTSRQPONABHICESQWK2Fi"; for (var o, a, s, l = 0, c = []; l < e["length"];) { a = e["charCodeAt"](l), s = l % 6; switch (s) { case 0: c["push"](f["charAt"](a >> 2)); break; case 1: c["push"](f["charAt"]((2 & o) << 3 | a >> 4)); break; case 2: c["push"](f["charAt"]((15 & o) << 2 | a >> 6)), c["push"](f["charAt"](a & 63)); break; case 3: c["push"](f["charAt"](a >> 3)); break; case 4: c["push"](f["charAt"]((o & 4) << 6 | a >> 6)); break; case 5: c["push"](f["charAt"]((o & 15) << 4 | a >> 8)), c["push"](f["charAt"](a & 63)); } o = a, l++; } c["push"](f["charAt"]((o & 3) << 4)), c["push"]("FM"); return d(15) + md5(c["join"]("")) + d(10);}

這里可以看到還有 d?函數 和 md5 函數,分別進行摳取和優化。

優化后的d函數:

function d(e) { e = e ||32; var l = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678"; var s = l["length"]; var c = ""; for (i = 0; i < e; i++) c += l["charAt"](Math["floor"](Math["random"]() * s)); return c;}

優化后的md5函數:

function md5(e) { function o(e, n) { e[n >> 5] |= 128 << n % 32; e[(n + 64 >>> 9 << 4) + 14] = n; var b = 1732584193; var x = -271733879; var T = -1732584194; var w = 271733878; for (var d = 0; d < e["length"]; d += 16) { var m = b; var y = x; var v = T; var g = w; b = s(b, x, T, w, e[d + 0], 7, -680976936); w = s(w, b, x, T, e[d + 1], 12, -389564586); T = s(T, w, b, x, e[d + 2], 17, 606105819); x = s(x, T, w, b, e[d + 3], 22, -1044525330); b = s(b, x, T, w, e[d + 4], 7, -176418897); w = s(w, b, x, T, e[d + 5], 12, 1200080426); T = s(T, w, b, x, e[d + 6], 17, -1473231341); x = s(x, T, w, b, e[d + 7], 22, -45705983); b = s(b, x, T, w, e[d + 8], 7, 1770035416); w = s(w, b, x, T, e[d + 9], 12, -1958414417); T = s(T, w, b, x, e[d + 10], 17, -42063); x = s(x, T, w, b, e[d + 11], 22, -1990404162); b = s(b, x, T, w, e[d + 12], 7, 1804550682); w = s(w, b, x, T, e[d + 13], 12, -40341101); T = s(T, w, b, x, e[d + 14], 17, -1502002290); x = s(x, T, w, b, e[d + 15], 22, 1236531029); b = l(b, x, T, w, e[d + 1], 5, -165796510); w = l(w, b, x, T, e[d + 6], 9, -1069501632); T = l(T, w, b, x, e[d + 11], 14, 643717713); x = l(x, T, w, b, e[d + 0], 20, -373897302); b = l(b, x, T, w, e[d + 5], 5, -701520691); w = l(w, b, x, T, e[d + 10], 9, 38016083); T = l(T, w, b, x, e[d + 15], 14, -660478335); x = l(x, T, w, b, e[d + 4], 20, -405537848); b = l(b, x, T, w, e[d + 9], 5, 568446438); w = l(w, b, x, T, e[d + 14], 9, -1019803690); T = l(T, w, b, x, e[d + 3], 14, -187363961); x = l(x, T, w, b, e[d + 8], 20, 1163531501); b = l(b, x, T, w, e[d + 13], 5, -1444681467); w = l(w, b, x, T, e[d + 2], 9, -51403784); T = l(T, w, b, x, e[d + 7], 14, 1735328473); x = l(x, T, w, b, e[d + 12], 20, -1921207734); b = u(b, x, T, w, e[d + 5], 4, -378558); w = u(w, b, x, T, e[d + 8], 11, -2022574463); T = u(T, w, b, x, e[d + 11], 16, 1839030562); x = u(x, T, w, b, e[d + 14], 23, -35311556); b = u(b, x, T, w, e[d + 1], 4, -1530992060); w = u(w, b, x, T, e[d + 4], 11, 1272893353); T = u(T, w, b, x, e[d + 7], 16, -155497632); x = u(x, T, w, b, e[d + 10], 23, -1094730640); b = u(b, x, T, w, e[d + 13], 4, 681279174); w = u(w, b, x, T, e[d + 0], 11, -358537222); T = u(T, w, b, x, e[d + 3], 16, -722881979); x = u(x, T, w, b, e[d + 6], 23, 76029189); b = u(b, x, T, w, e[d + 9], 4, -640364487); w = u(w, b, x, T, e[d + 12], 11, -421815835); T = u(T, w, b, x, e[d + 15], 16, 530742520); x = u(x, T, w, b, e[d + 2], 23, -995338651); b = c(b, x, T, w, e[d + 0], 6, -198630844); w = c(w, b, x, T, e[d + 7], 10, 11261161415); T = c(T, w, b, x, e[d + 14], 15, -1416354905); x = c(x, T, w, b, e[d + 5], 21, -57434055); b = c(b, x, T, w, e[d + 12], 6, 1700485571); w = c(w, b, x, T, e[d + 3], 10, -1894446606); T = c(T, w, b, x, e[d + 10], 15, -1051523); x = c(x, T, w, b, e[d + 1], 21, -2054922799); b = c(b, x, T, w, e[d + 8], 6, 1873313359); w = c(w, b, x, T, e[d + 15], 10, -30611744); T = c(T, w, b, x, e[d + 6], 15, -1560198380); x = c(x, T, w, b, e[d + 13], 21, 1309151649); b = c(b, x, T, w, e[d + 4], 6, -145523070); w = c(w, b, x, T, e[d + 11], 10, -1120210379); T = c(T, w, b, x, e[d + 2], 15, 718787259); x = c(x, T, w, b, e[d + 9], 21, -343485551); b = f(b, m); x = f(x, y); T = f(T, v); w = f(w, g); } return Array(b, x, T, w); } function a(e, n, r, o, a, s) { return f(d(f(f(n, e), f(o, s)), a), r); } function s(e, n, r, o, s, l, u) { return a(n & r | ~n & o, e, n, s, l, u); } function l(e, n, r, o, s, l, u) { return a(n & o | r & ~o, e, n, s, l, u); } function u(e, n, r, o, s, l, u) { return a(n ^ r ^ o, e, n, s, l, u); } function c(e, n, r, o, s, l, u) { return a(r ^ (n | ~o), e, n, s, l, u); } function f(e, n) { var o = (65535 & e) + (n & 65535), a = (e >> 16) + (n >> 16) + (o >> 16); return a << 16 | o & 65535; } function d(e, n) { return e << n | e >>> 32 - n; } function p(e) { for (var r = Array(), o = 65535, a = 0; a < e["length"] * 16; a += 16) r[a >> 5] |= (e["charCodeAt"](a / 16) & o) << a % 32; return r; } function h(e) { for (var r = "0123456789abcdef", o = "", a = 0; a < e["length"] * 4; a++) o += r["charAt"](15 & e[a >> 2] >> a % 4 * 8 + 4) + r["charAt"](15 & e[a >> 2] >> a % 4 * 8); return o; } return function (e) { return h(o(p(e), 16 * e["length"])); }(e);}

代碼合并后,運行不再報錯。很快就寫出了?Python代碼:

# -*- coding: utf-8 -*-import timeimport execjsimport requestsdef main(): sums = 0 headers = {"User-Agent": "yuanrenxue.project",} with open("decode_16.js","r",encoding = "utf-8") as fp: jscode = fp.read() ctx = execjs.compile(jscode) for i in range(1, 6): t = str(int(time.time()*1000)) m = ctx.call("btoa",t) params = { "m":m, "page":i, "t":t, } response = requests.get(url="http://match.yuanrenxue.com/api/match/16",params = params,headers=headers).json() for each in response["data"]: sums += each["value"] print(sums) # 287383if __name__ == "__main__": main()

對于這個webpack打包的網站來說,基本沒啥難度吧,先優化一波,去混淆,刪除垃圾代碼,再缺啥補啥就好,瀏覽器相關的都不用補。

當然,webpack也有技巧,不過很少用的,無腦摳就好,然后缺啥補啥

我也不喜歡一大坨代碼搞在一起,簡單點,事情簡單點,心情或許會好很多。

總結

以上是生活随笔為你收集整理的webpack打包后引用cdn的js_JS逆向:Webpack打包后的代码怎么搞?猿人学爬虫比赛第十六题详细题解...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女扒开尿口给男人桶 | 久久精品久久99 | 一本色道久久综合精品婷婷 | 狠狠干天天爱 | 国产香蕉在线 | 人妻视频一区 | 91精品小视频 | 亚洲视频黄色 | 少妇性生活视频 | 亚洲国产激情 | 亚洲男同视频 | 秋霞一区| 国产正在播放 | 99综合视频 | 福利精品在线 | 久久国产二区 | 91一区二区三区在线 | 91无限观看 | 中文字幕成人在线视频 | 91精品福利在线 | 久久精品视频无码 | 精品一区二区三区免费毛片 | 精品久久久久一区二区 | 91麻豆一区二区三区 | 色婷婷视频网 | 亚洲欧美精品在线观看 | 亚洲精品一区在线 | 奇米影视一区二区 | 操极品女神 | 日韩视频一区在线观看 | 中国白嫩丰满人妻videos | 91久久国产精品 | 一级片中文 | 亚洲欧洲综合av | 免费观看视频一区 | 草久久| 91午夜在线| 久久综合伊人77777麻豆 | 国产色图视频 | 久久成人毛片 | 久久高清无码电影 | 国产看真人毛片爱做a片 | www.国产视频 | 韩国女主播一区二区 | 久月婷婷 | 夜色成人| 亚洲国产中文字幕在线观看 | 日韩精品视频在线免费观看 | 日本国产一区 | 免费在线观看不卡av | 日韩欧美的一区二区 | 午夜有码 | 少妇久久久久久被弄到高潮 | 99精品一区| 日韩黄色小视频 | 欧美日韩免费一区二区三区 | 日韩成人av电影 | 91成人天堂久久成人 | 欧美成人做爰猛烈床戏 | www.中文字幕| 日韩免费影视 | 天天草天天干 | 韩国三级hd中文字幕 | 蜜桃视频日韩 | 九色视频偷拍少妇的秘密 | 欧美高清另类 | 蝌蚪自拍网站 | 女优视频在线观看 | 天天舔天天操天天干 | 误杀1电影免费观看高清完整版 | 五月天中文字幕mv在线 | 久久亚 | 国产女人18毛片水真多18精品 | 男人狂揉女人下部视频 | xxx.国产| 很黄很黄的网站 | 高h调教冰块play男男双性文 | 日本中文字幕高清 | 欧洲一区二区在线 | 日韩欧美一 | 一区二区三区黄色录像 | 久久免费资源 | 奇米中文字幕 | 久操国产在线 | 麻豆视频国产 | 午夜视频在线观看免费视频 | av在线专区 | 国产又粗又黄又爽又硬的视频 | 性盈盈影院中文字幕 | 天天躁日日躁aaaa视频 | 久操久操 | 欧美特黄一级 | 红色假期黑色婚礼2 | 午夜免费在线观看 | 日韩黄色影院 | 色中文在线 | 欧美精品亚洲一区 | 国产精品一区二区久久 | 欧美亚洲日本在线 |