jdz 政府网站webpack逆向和部分还原

有一个之前同事他们要一些政府网站的信息,做模型,结果有一个地区的网站要么加载慢,要么出问题就问了下。正好我最近研究webpack,其中一个就是webpack的。其实之前已经看了两周webpack相关的内容了。实在是不得要领,最基础的就是找到调用的地方,一行行补,一个方法一个方法的口,但是看到一个帖子好像webpack有通用的方式,于是研究了起来。可以别人的案例看着容易,自己不事件,始终用不起来。

webpack原理和逆向实战_webpack逆向-CSDN博客

基础理论可以看上面的帖子。

一.查找数据确认断点

进来有一个无限debug,小网站还这么复杂,不在停留就跳过去了。

网站打开后查找明文,没有又找到。

请求一个data,响应也是一个data。

在源代码中搜索 data,有好多,上面的打上断点就能断住。最后确定就是这个S。就是加密和解密的类。

二、判断webpack

看这个js 文件开头,有exports 这种导入方法,和大多数的webpack的导入基本相同。

再看下面n(数字)这种基本就是 webpack了。简单的话能确定算法就行了。这个网站有点没看明白,估计是二次封装了。

三、判断加密和代码确定

从S的方法和值来判断,可能是aes。但是prikey 是干嘛的不确定。

再看在控制太执行情况,看着很复杂的代码,执行结果拆分出来执行 就很清晰了。

S.encryptSessions(JSON.stringify(x))

还原完成后,就这么简单的一句话,可以是原始代码真的让人看不懂。后面还有好多这种。

通过这块知道,只要S 这个弄出来就行了。一点点抠,没搞过不得要领,n那个就 没搞明白。

四、webpack 还原

通过源代码发现,这个网站虽然看起来很麻烦,但是webpack的文件只有一个,入口和内容都在这一个js文件中。上面帖子找到了webpack_mixer.js 这个ast还原 webpack的库,看了下挺老了,但是还能用。于是用它试了下,

node webpack_mixer.js -l app.c8af4fa5.js  -o webpack_out.js

找到数据的文件,输出到一个文件。

目录大概就这样。调用

const n = require('./webpack_out');

调用基本这样可以了。

五、扣js代码了。

核心代码就是这个S和a方法,再往里就是写key

可能是我抠出来的代码不对,所以基本上所有的代码我都还原了,要不运行不过去。还原之后的东西 就可以看懂了主要就是aes 方式的加密。

但是代码初始化之后发现无法直接调用。要不的话没有秘钥返回空,秘钥是死的,iv每次加载后都不同。

S.getKey();#设置key
S.genrandomString();#随机一个iv

这就是运行的结果,发现有一段乱码,那个是因为iv的问题,请求用什么iv还原就用什么,要不最初那几行是乱码。

最终代码如下

const n = require('./webpack_out');

var document ={}
    , r = n(372)
    , o = n(10)
    , t = {}
    ,SS;
var i = o(n(425))
    , a = o(n(426))
    , s = o(n(9))
    , c = r(n(373));

function l() {
    var e = ["tmkPx0ZdRG", "W4BdSsi", "W6bGgSoliG", "uCoDW7/cRCkknbWH", "WRldHMnhBa", "bCowhmkxbq", "sslcMcvj", "WQmyW4pdNIe", "txW/W7m", "W5tdSsah", "ESkCW6Otqq", "WR4PW5H8W5K", "WQZdIMnh", "qupcImkgW7C", "nsuUWPxdHq", "FKRdRa", "sNy3", "WPZcL1pdKmk/", "zh/dG8obW4ynW5NcRSk+tM7dM10", "tSkhW4lcT8og", "bqpdMmodWOBcTr4HWQnjmIy", "W7JcH8kaWQ5i", "ceVdUr3dGa", "W5JcUtlcL8o5", "hCofbSktfW", "hmkNW63dNGe", "ymkPWOO1W6/cU8osq8oIzSoeWPO", "rNtdSXJdKq", "f8k5W4xdRqG", "s2ddVX7dUG", "oSkMgX3cJG", "WQauW4tdGG", "hSkzW6y2zG", "zLtdOCk4", "hHSPWPFdKa", "sxeZvq", "W47cOCk3WPdcQW", "q8k5WRBdIvm", "gXdcQGKj", "xMiyxtG", "WR3dJgjlCq", "BCkfgmk4", "y3/dICokW4ajWRtcVSkmAuZdMa", "waaQW6Ty", "z8kVrZep", "F8oBye5y", "sZZcVYDU", "qmo7WR/cJ0HEWPWkW5eAWQ7dOCog", "x2OvxY4", "F8kBW6qSyG", "WQ0sl8oGWRm", "EYe7W6Tz", "W6RdQrCPba", "u3KIW7FcNa", "WOxcJCkYW4ddTG", "ESolx0DJ", "mdpcLmkBWOi", "xCo3zNDA", "fJlcOryn", "ymkfqu7dNW", "dY7cQupdVG", "W4PlcCojiW", "W5hdLrOokG", "wSoXyhf0", "WOrsW6bHWQe", "W4tdSbmgla", "aSkcW5i6DG", "xbVcPSoKla", "WOeKiY/cKW", "rhGbW5iE", "h8k5W5NdStO", "W6JcPmkDW4Dl", "WP8khr4", "uCkbW6my", "W77dLSkAW6K", "W5tdLZz4qG", "vSk1aCkWBa", "W7NcP8kwW7P9", "Fce1W7fB", "fvldLtqZ", "ESkytW", "W7tcGmkWW6u", "WRxdGmoaoIq", "nmkJW5/dOmof", "WOhdH3roEq", "rMNdUaRdKq", "fSolWRVdO8kz", "iCoIW6ldPdG", "WRWwl8o2W6W", "qYJcKXbb", "W5NdLXW3iG", "W6RcLmkCWR8r", "u1xcMCk/W5m", "kSoxWQRdOG", "sM3dVXW", "z2WdztG", "gmkHW7ddKCox", "qMSJW63cNG", "lSkQerNcJa", "y8kfh8kZ", "WRRdL8oCja", "WQ4WWPRdRd0", "vMtcOSkNW5S", "WRNdHNLVBW", "dCkVW77cK8ki", "W5RcV8k4W6q", "W5ldMd7cJCoD", "x8oWBeHq", "F8k6wZHl", "DmktrLu", "W7/cImkqWRKh", "W4hdIsdcHCol", "W77dSd4Pla", "WOddNmodbcO", "WRyAkSoAWQS", "A0XRW4iU", "CvPAW5qP", "W5RcUCkKW7nf", "bmkqW5ZdJX8", "gWNcUJCb", "WQeKiY8", "DmouC8kRWQK", "W6NcG8khWPKB", "nSo/W6xdUsS", "gCkZW43dRrG", "sSkqW6FcTSov", "wuRdU210", "lCocWRpdPmkz", "WRFcNhNdISkS", "tmkKWQJdKeq", "WRaIW4HhW4e", "CMVdGcJdGG", "CSkfW5ddJSoeWP9B", "q8kQWQpdLq", "WOOylmoeWRm", "zCkTgmkhsG", "W53dVcm9pG", "WPddHCoYbXe", "th3cUSky
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值