粉丝3117获赞1.9万

都说小程序调试比较难,不仅容易被封,还不能做动态调试,那么今天教大家一招,让小程序调试啊,变得像咱们 yippo 多一样的简单牛逼。 我们首先我们先来看一下我们的第一个点啊,就是来如何把小程序的调试来变得像 yippo 一 样简单。目前在市场的话,其实有很多的关于某程序的他的一个调试的一个功能啊,但是我们会发现,你看目前市场大多数,对吧?有一种,第一种静态分级, 我们先了解一下静态分析,静态分析的逻辑就是来找到小程序的,对吧? a p k g 进行解密,然后反编密,然后反编密进行调试,然后其次还有一种的话,就是目前在市场的,呃,最常见的就是强开,对吧?我们的调试工具 啊,但是他会封号对不对?他会封号啊,目前很多人就用这个账号都被封了,对吧?所以说他有点问题。那么像今天的话第三种,我今天给大家来推荐一个。第三种也是属于动态调试,他也是启动,也是来打开 调试,但是的话他不是强开,而是通过协议监听的方式来进行实践,他不存在封号的问题。 ok, 这个就是我今天将带大家来重点来讲的一个内容,是吧?我们来看一下啊。 ok, 那 么首先的话,目前是在一个 hack 上面是一个开源的一个项目啊,叫做 v m, 是 啊, w m, 不好意思啊, w m p d, 然后是我们的 bug, 这个的话是干嘛的嘞?它就是基于一种协议的一种调试方式,能够让我们来快速的来捕获我们的小程序,它的一个数据的一个传输,并且来进行它的直接调试,就像变成我们的外部浏览器一样的一个简单。 ok, 我 们首先可以看一下当前这个是 cap 的 一个项目,咱们朋友们可以自己去 cap 上面去搜索当前的这个项目,然后把它 get 到我们的本地,目前是支持我们的最新版的啊,记住啊,它是支持它是支持最新版的啊, 好,那么像在这里我们来看一下啊,我们到底要该怎么做,然后才能来完成它。 ok 啊,首先我们把当前的项目啊,把它 get 到我们的一个本地来,我们来看啊,我们在这里的话,我是已经提前的把它 get 好 了啊,来,已经提前把它 get 好 了啊,我把它 get 了下来, 然后我们来看一下当前的这个项目啊,首先我们先打开当前项目,这个就是当前的在一个 half 上面的它的一个,呃,我们的这个 wmpf bug 的 一个项目。 ok, 呃,老何,为什么我内核观测了还是给我提供假数据?呃,你是不是哪个地方没搞?对啊?右右这同学, 我刚看你好像你是,你刚有加了我 w x 刚,你说有些环境没补是吧?你环境没有排查出来是吧?呃,环境是个小问题啊,等一下,我,今天我今天的直播会稍微长一点,我也会教大家,因为你们都是休息日吧,今天应该,然后我今天也会教大家来通过 ai 来完成我们的一个补环境,对吧?我们可以慢慢的学,明白吗?今天我们讲两个重点。 好,那么首先我们先从当把这个项目概念下来之后啊,我们在它的终端来,我们通过它的导航栏目啊,我把它放大一点, 我们打开我们的终端。好,那么你看一下啊,我这个路径啊,就是属于我们当前 get 下来的项目啊,你看就是我们当前这个项目,我们把它 get 下来,然后把它 get 下来之后,我们需要来进行它的一些安装。那么在这个地方的话,我们首先啊,我们就可以使用 npm i s t l 来安装它里面的最基本的一些关于 node js 的 一些相关的一些模块, 然后安装完成之后,我们在这个地方,你看我们现在就可以直接用了,不需要做任何额外的配置,记住啊,他不需要做额外的配置,那么我们上在这里我们该怎么用呢?你看啊,首先我们在这个地方,我今天的话可以 给你们看一下啊,我们来试一下啊,来,我们首先打开我们的某信的搜一搜啊,某信搜一搜,那么比如说我在这个地方啊,我就随便点一个,好吧,比如说一个朝王社的一个小程序, 然后我们先随机的先点开一个小程序啊,星巴克是吧?也可以,好吧,但是我们现在我们先测试一下啊,预约抢购项目一般也多吧?是的,来我们先试一下啊,就是在这个地方我们先尝试先打开一个绘画啊,你要记住啊,这个叫做这个是小程序的一个绘画,对不对? 然后我们在我们的端口里面,记住啊,这个是我们的终端,在终端里面去进行我们当前的启动,来启动我们的调试服务器和 cdp 代理服务。记住啊,这个地方我也给大家重点讲一下,因为当前它使用的它在里面,它会使用到我们的 cdp 的 一个代理, 然后基于协议的一个监听来进行调试,所以我们在本地的话,就是我们本地的代理,我们一定要关闭,因为如果不关闭的话,它会 导致我们的本地的循环走不通,明白吗?就会本地,因为我们本地大多数都是走幺二七点零点零点一的一个端接口,对不对?但是我们如果说我们的代理没有关闭的话,那么他会导致我们在本地卡死了,就是本地循环会出现问题,明白吗?所以啊,我们一般正常来做的话,我们首先需要把我们的机场或者代理等相关的逻辑把它进行关闭, 你看都需要关闭,把它断开,然后把它断开之后啊,我们在这里,你看我们在这里去启动当前的这个命令看把它启动, 这个启动的话是相当于我们启动的一个服务,这个服务里面的话分别是会有我们的饭的看没有,他会由他来进行我们的一个注入,然后在这个地方还会出现一个地址,看没有这个地址就是我们当前所访问的地址,可以基于他来直接进行我们的某小程序他的一个调试 来,那么在这里我们可以看一下啊,我们可以直接去浏览器里面去访问当前的这个地址啊,你看我们直接可以打开我们的浏览器,你看啊,直接打开 直接使用 npm 自动安装的啊,这个包的话你们自己装就可以了,使用 npm 直接安装,明白吗?直接安装我们不用去呃,单独的去安装我们的饭的, 明白吗?那如果是 wis, 那 么咋整?呃,你看嘛。好吧,你看嘛,等一下你就清楚我是怎么调试的了,对吧?它就是完完整整的基于协议的方式来监听,不管是 wsm 还是说我们的 web socket, 它都可以搞定。 看啊,我们来看啊,那么我们像在这里启动监听之后啊,你看我们在这里会打开一个窗口,对不对?但是我们要记住当前的绘画,它是基于当前的这个窗口来进行它的一个连接,这是小程序的窗口,对不对?那么这个小程序是我们不要调试的,我们现在可以新开一个需要来调试的,比如说刚有同学讲到的星巴克, 对吧?那我们就打开一个星巴克的一个小程序,你看我们打开星巴克的小程序,我们点进去,然后我们在星巴克的小程序里面啊,我们在这个地方,呃,我们可以直接快速的同一授权啊,你看啊,然后我们来看一下,在这里的话它会有。呃,它有商品吗?商品在哪里啊? 我是随便点一个还是看一下啊? 来,我直接自己手动选择一个门店啊?我手动选择一个门店。 来,我们来看啊,这是星巴克的一个小程序,对不对啊?我已经 ok 了。那么 ok 之后我们现在需要做一些事情,首先我们看在页面当中刷新一下,刷新一下的时候大家有没看到我们当前的星巴克是已经被进行监听的?看,没有, 是已经被进行监听了啊,你看是已经被监听了,那么在这里我们需要我这个地方,因为我是已经调好的,但是你们你们打开的时候他其实可能不会进行监听,你们需要注意一下,就是在这个地方啊,我们还需要做一些设置,怎么设置呢?首先打开我们的这个设置面板看啊,打开设置面板,在设置面板当中有个实验, 这个实验我们需要去把这个进行勾选,这个叫做协议监听器,因为我们很多朋友们就是你如果没有开启的话,那么他的协议监听会出现问题, 明白吗?我们需要把它勾选,把它勾选完成之后,然后打开这三个点,自定义,我们的自定义,对吧?打开里面有个更多工具选择我们的协议监听器 一定要先勾选啊,如果你没有勾选的话,那你就没有这个功能,明白吗?然后打开协议监听器,在协议监听器当中我们需要做两个操作,第一个操作进行捕获,对吧?你看怎么操作呢?首先第一个操作,他在这个地方啊,他会,你看在 top 上面是有说明的啊,当然了,我们可以呀,我这里我用谷歌啊, 你看啊,他在这里需要做两个操作,首先第一个操作来进行我们的我们的基本的指令,你看,怪不得我就说这个地方没有出现链接,是啊,所以说你们不要搞错了,对吧? 我们首先先把这个指令进行输入,为什么要输入这个指令呢?这个指令它的主要逻辑是用来获取我们当前需要来调试的它的一个 id 的, 你看在这里有个原始的 c d p 的 命令,看到没有?在下面这个框框这里,我们把它进行输出, 输出之后你看它会在这里有个监听,这个监听里面它会出现我们当前的,比如说我们要搞到什么星巴克,对不对?是不是星巴克?那我们把星巴克的这个打开,然后再打开之后啊,它这里会有个我们的呃, type gate 和 id, 看到没有, 是吧?会有个 id, 看到没有这个 id 是 非常重要的。然后这个 id 的 话我们再做第二个监听,就是让它来完整地来监听我们当前的这个对应的 id, 我 们把它全部,你看通过 cdp 命令来替换,把当中的这个替换替换成对应的 id。 哎呀,这个我这个窗口窗口太小了,它有点不好调试, 那我手动动一下来,我们来看啊,我们把当前的这个 id 把它替换成星巴克的啊,替换成星巴克的, ok, 替换完成之后直接执行注入,然后我们执行注入之后啊,在这里我们现在就可以把它关掉了啊,可以把它关掉了,然后我们可以打开我们的控制台。 为什么要打开控制台呢?我们可以来测试一下我们当前的这个小程序的他的调试是否 ok, 你 看啊怎么做?首先我们在这里可以去执行一个对应的指令,我们可以在这个地方你看,我们可以让他去显示一下我们当前的标题,也就是我们的态度,看他是否能够正常显示。你看回车, 你看,那么回车之后,我们可以看到在目前的星巴克的小程序当中会给我们显示一个 apple index, 看到没有?我们点击确定。那么现在我们可以来尝试一下,看一下我们是否能够正常调试啊?打开我们的网络页面,也就是监听,在监听界面当中进行我们的小程序的商品切换,比如切换星级套餐, 对吧?我们可以往下滑,他数据应该都已经加载了,你看数据都已经加载了,看没有,那么在这里我们就能够看到在这个里面他就会有包含我们的一些信息啊,但是他这个数据已经加载了,是吧?如果他已经加载的话,我们可以让他重新进一下啊。你看我们可以切换一个店铺你看我们可以切换一个店铺,看没有,我们比如说我换一个, 哎,还没开门是吧?哈哈,我找个开门的啊,来,我点击开始下单,然后点过去之后你看在这里,你看我们的数据的监听是否都是正常的监听的,并且可以成功的来得到他数据, 看没有如何用 ai 逆向,等一下我会教你们。来我们来看,那么像,目前你看像这里的话,我们就能够很明显的可以看到,你看星巴克的数据是不是全部都在这个接口里面,我们可以看到它加密啊?星巴克就一个签名对不对?是吧?就一个签名,一个晒的,一个加密,然后的话我们可以看一下啊,这个是星巴克的,我看下有没有数据啊? 这个数据我们可以自己去搜索一下啊,自己去搜索一下,比如说,呃,我当前我想去搜索一个标签,对吧?比如说这个叫做什么?育心装想,对吧?我们搜索一下关键词,好吧?美式咖啡是吧?搜索一下美式咖啡,美式咖啡,嗯?美式咖啡, 嗯?怎么没有啊?可以找得到,对吧?你看是不是在这里,是吧?可以找到点过去,然后点过去之后我们定位到它的接口啊,那么它接口是在这里看,没有,这就是当前的美式咖啡的一个接口,我们点击复制它里面的 c o l, 一个 base, 一个格式, 然后我们在这里我们可以快速地去把它构建成一个 python request, 你 看啊,我们直接把它转成我们的 python request。 好, 我们打开我们的写代码的页面啊,我在这里面去创建一个文件夹啊,新建一个文件夹叫做星巴克, 对吧?二百 x, 然后去创建一个 python 的 文件来,我们新建一个文件来创建一个 demo, 一 点 b y 点 p y, 创建一个 python 文件。好,那么我们现在我们可以把刚刚的代码给它 copy 过来,你看,我们可以看一下,这个就是星巴克的, 对吧?你看,首先我们可以看到像星巴克的话,它里面的加密其实还是比较多的啊,首先我们是能够看到它在这个地方是有什么 呃, open id, 对 吧?然后有个呃赛,其次下面的话有个赛,然后还有个 in trap 的 一个加密,加密参数还是挺多的,对不对?那么我们现在可以来调试它,但是我们如果想调试它的话,给大家讲一下,就是有的同学刚问到我们能否通过 ai 来完成小程序的逆向分析呢?我可以告诉各位是可以的, 是可以的,但是的话我们要更换一下,就是,呃,这里我给大家讲个问题,什么问题呢?就是我们现在目前我相信看过我以往的直播后,同样的同学应该清楚,就是我教大家来完成 ai 的 web 逆向啊, 我们用 ai 来完成 ai 的 web 逆向,域谱环境什么的,我们是不是会用到一个叫做 chrome 杠 e e v t o l s 的 杠 m c p 的 一个工具,对不对? 我们是不是会用到这么一个工具来进行我们的浏览器的动态调试?动态调试对不对?呃,但如果说我们想通过 ai 来完成小程序的逆向分析的话,它们两个会起冲突,就是我们当前所开的这个 c t p 的 这个服务, 这个 c d p 的 这个服务会跟我们的这个 chrome m c p 工具,它们两个会出现时列的问题,就是它们所调用的同时都是调的是谷歌的啊, 掉的都是谷歌的 problem, 就 会导致他们起冲突,明白吗?就会冲突,对吧?就会冲突。那么如果说我们想来用 ai 来完成小程序逆向的话,我们可能就要更换一下它里面的内核,不能两个都使用谷歌的。如果两个都使用谷歌的,那你说实话啊,那就凉凉了 啊,一首凉凉送给你,是吧?所以各位要注意,明白吗?好吧,我们先不管他,我先给你们看一下,那么我们当前在页面当中已经正确的找到了加密,那么我们现在可以来调试它,其实现在的调试就跟我们的 web 一 样的简单呢?为什么说跟 web 一 样简单呢?因为我们现在你看我们可以直接去调它的什么,调它的堆栈, 各位请看我当前我是可以直接去调它的堆栈,看到没有?是不是跟 webo 一 模一样的?我可以直接在这里去点过去,你看我点过去,然后跳转到它的对应的 js 代码里面去,然后进行断点,然后进行调试,是不是跟 webo 一 模一样? 而且它不会封号,因为这个地方它其实是基于它做了一个映射,它其实基于一个协议的方式来进行监听的,它不会封号。我这个不是属于在小程序里面强开它的调试工具栏目哦,你们仔细看, 我不是通过咱们的小程序强开的哦,所以其实 w x 它是没有检测到我们是在调试的,它是检测不到我们在调试的,因为我们是基于它的协议程。 看没有跟你学习两年拍成会如何。呃,那我怎么知道你会跟如何呢?这要看你自己能学多少啊。好吧,那么我们现在我们可以来尝试调试,那么我们如果想调试它,我是否可以在这个地方?你看我直接可以打断点给他,对不对?我可以直接打断点给他,然后我们打断点之后,然后在页面当中它会进入一个调试状态,看到没有? 看到没有?这个也能 ai 调?可以啊, ai 调我们只是说要结合一下嘛,对不对?好,那么在这里这个调试的这个步骤的话,你们自己去学哦。今天因为我不讲调试啊,因为像调试这个东西说实话是非常简单的啊,我在之前讲过很多关于这种调用堆蛋分析,或者说我们甚至可以直接用关键字搜索,其实也是可行的。 比如说我在这个地方我可以直接去搜索我们的赛方法,对吧?我们可以尝试直接用关键字搜索,或者你们想调对战的,那也可以去调对战,是吧?反正方式方法有很多种,这个看你们自己,我们搜索赛方法,那么我们去搜索的话,我们也是能够直接去尝试一下,看能不能搜得到,对不对?你看可以看到还是有的,只是说挺多的, 对吧?挺多的,或者加个冒号试一下。好像挺多的啊。赛方法它加密,这个加密定位应该不用我讲了吧?好吧,这个加密定位大家自己去了解啊,自己去搞是吧?那么你可以看到你看像这里,你看今天的话,我就是教大家来基于当前的这个工具来完成我们的一个小程序它的一个调试, 那完成了一个小程序,把它变成了跟我们的 web 一 样的简单。各位, ok, 这个了解一下啊,了解一下。来,那么这个地方我们就把它关闭了啊,我就不去调试了啊,我把它关闭了。那么现在我再教大家第二个本领,也就是关于关于通过 ai 的 方式来完成我们的补环境, 对吧?难得现在都跟 vs code 的 有关了。我用的不是 vs code 的。 我这个不是 vs code 的 啊,我当前使用的工具是阿里旗下的 qd, 这是一个智能体工具啊。 ok, 来我们来看一下啊。那么刚刚这个小程序大家有没什么问题?没有问题的话我就讲下一个点了啊,就是通过 ai 来完成大厂的加密的补环境或者存算 啊。这个小程序调试,各位还有什么问题?这个小程序后面的加密定位应该不用我讲了吧?加密定位我讲过那么多了,说实话我今天又去重复来讲,那就没必要了。好吧,这个自己去熟悉一下可以吗?好,那么现在的话我们把它关闭了。啊啊?这个是在 graph 上面,你们直接去打开就可以了,这是 graph 的 一个项目。

很多新手做 js 逆向,一碰到标准加密算法就直接蒙圈, aes, ds, rsa and d 五,看着眼熟,扣出来就是解不开。今天这节课我就教你如何搞定标准加密数据解密, 想学的同学记得点赞收藏,更多爬虫逆向的资料都已准备好,需要的同学点击这里自取。哈喽兄弟们,我们来看一个标准加密算法,它的一个数据解密。首先呢打开对应的一个网站,我们要去采集里面这些公开的一些数据,但这些数据呢,它其实做了一些加密处理的, 里面呢有很多个页面。我们首先呢按下 f 一 扇,去打开这样的一个开发者工具,先去抓一个包啊,看看他这个数字包呢是什么样的一个结构,来切一个页面吧。 好,切完之后可以看到这里抓到了一个文件吧,那也就是说呢,他是向这个接口呢发了一个 get 请求,并且呢带了这样的一个载荷参数过去,这个载荷参数可以看出来他是 铭文的啊,没有做任何的参数加密,对应的数字 p g, p g, s, z, 也是 p g size 透了总共的输出。那这里对应的一个结果呢?可以看到预览模式里面呢,有这么一个展示,你想象也是一样的。 好,这就是我们看到的一个输入结果,那这个输入结果其实你把它解密完之后呢,就变成了上面这一些,变成上面这一些,那它整个这样的一个过程呢, 也就是说我们是向这个接口发了个 get 请求,然后带着这个参数过去,拿到这个结果之后,他这个结果是一个加密内容,我们需要对这个结果进行一个解密,是这么一个点,那他是用了什么加密呢?对吧?就是我们必须要清楚提到这个加密呢和解密呢,就必须想到这个对称 和这个非对称的一个问题。非对称,那对称加密呢?就分了 a e s 和这个 d e s 以及像咱们国密的 s m 四 a 三四啊,这个是关于对称加密,非对称加密呢,就是 isa 的 吧,以这个 s m 二也是属于非对称这一块。 那现在这个数字呢?他不太可能用的是非对称加密,因为非对称加密的话,首先是有一个公钥和私钥之分啊,公钥可以公开给你看,那这个是服务器反出来的,反给我们的,所以这些数字呢,不太可能说是服务器里边用一个公钥加密嘛, 更多的用的是这个对称加密啊,对称加密里面呢,还有这个 ds, ds 是 以前的老的很多,现在其实已经不用 ds 了啊,现在用的最多的主流呢,其实就是 a s, 大 部分的网站里面,如果是对用这个对称加密呢,一般用的是这个 a s, 那 么清楚了 a s 之后呢,我们就知道怎么去找它的一个位置,这里面呢有一个点啊,就是你要清楚它的一个结果,就是 a s, 它解密要点 decrib 对 不对?然后括起来是这么一个结构啊,这括号里面会有三个参数,一个参数,两个参数,三个参数啊,是这么一个情况,那所以我们这搜的话,肯定可以直搜这个 decrib 的 吧,看看哪个位置做了一个解密,是不是把它括一下,然后来到这里直接搜索就 ok 了, 按个回车,那可以看到这里有三个文件,有九个匹配。我们首先先来大概的略过一下吧,大概的略过一下吧,你看这里啊,第一个有关的,相关的相关的,这种就不赖可能了,这种也不可能吧, 连这种这种也不太可能是不是?嗯? private delete 就 不可能啊,其实我们一眼瞄位置,发现这个地方是最有可能出现的,符合我们刚刚讲的那个结论, aes 点 delete, 就 拿一点卡,就这个位置了,把它关掉吧,我们在这里可以上个断点,上个断点, 然后呢再来进行一个分析吧,来,再来切一个页面,来切一个页面,切一个, ok, 端过来了啊,端过来之后,大家可以看到这个是五五八八开头的,你看这个数字显示也是五五八八开头,这数字就过来了,你可以把这个 t 来在这个控制台里面进行一个打印,你看可以打印一下,这是最终的一个数字, 这个数字把数字写出来就 ok 了。那好,我们再来看它,这个 t 传进来之后呢,然后掉了一个,在这边是 d 点 a 吧, d 点 a, 点 n, c 点 h, e, x, pass 啊,做了一个 pass 的 一个编码啊,这边是处理,把这个题做了一个处理之后给了 e, 然后下面又是 d 点 a, 点 e, n, c 点 base 六十四,追反 base 六十四的一个编码,做了一个字母串的一个处理, 然后又给了 n, 所以 n 它其实是一个字母串了,你看这是字母串了,变成字母串之后呢?在下面大家注意看这个位置啊,它是非常标准的一个 a s 加密 啊,就是写的什么 d, 点 a 吧,然后点 a, e、 s, 看到了没?有点 decrap 啊,非常标准的,这是我们的第一个参数,就是需要加密的那个内容。第二个这个 f 呢,肯定是一个密钥。 第三个参数跨过去,你看里面有 i b 值,有 mod, 有 配置,这是非常典型的一个 a、 e、 s 的 一个标准加密,并且可以看到它的一个 mod 啊,它的一个模式是 c p c 的 填充方式, p u c 字器啊,无疑了啊,所以无疑了啊, 那现在它里面其实少了这么这么几个参数,就我们要是解决的话,我们就是括这么一块代码吗?就是它就是紧密的一个位置吗?因为你把数据传进来啊,在里面做了一个最终的一个处理,在下面这里就有结果了,就是它这个下面打顿点,你看这边就有结果, 嗯,把这边鼠标放过来,你看全部有内容给显示吧,对不对?有一个显示啊,所以后面做做了一个 to, 一个返回嘛,那我们直接扣这个代码就可以了。那这个代码里面少了什么呢?第一个它少了这个 d 点 a, 第二个呢, 它少了这样的一个 f, 这个密钥。第三个呢,少了这样的一个 m 值啊,这个 m 是 一个项链啊,这个是一个项链啊,所以我们 把这几个给解决掉就可以了,你看这个 d 点 a, d 点 a 都要解决吧,那 d 点 a 最好解决的,大家注意看,你把鼠标放过来,你选择鼠标放过来,大家可以看它是一个 object, 它是一个对象,这个对象呢,是专门用来做这样的一个加密密的有 aes, 有 d es, h, mark m, d 五的 c l 一 c l 三 c l 二二四二五幺三八四五幺二等等啊, 所以这个库呢,专门用来做这个加解密的,它既有对称加密哦,它是只有对称加密呢,对称加密和这个哈希,你看哈希嘛, 哈希这一块呢,它有好几个吧,有 md 五的,有 h mark 加 shell 一 的, shell 三的,是不是?那这个字也可以很直观的可以看出来, 那像这一次里面呢,它一般这种酷啊,已经非常成熟了,跟我们 oc, 哦,不是 oc, 是 移动端里面的啊,移动端的语言跟那个啊, python 语言, oc 是 它里面,它里面也有语言啊,也有这个非常标准的一些非常成熟的一些酷是替换的,你像那个 单词里面也是一样的,价格也是一样的,哪怕这个 p s, p 里面啊,各门语言里面呢,他们用来做这个加减面的库尔都非常非常的成熟啊,所以我这边呢,待会也是用类似的一个括号 j s 去替换这个 d 点 a, 它这个 d 点 s 也是有那个括号 j s 弄出来的, 所以我们可以用这个是夸的,这一次把这个地点给替换掉。这个地点替换掉,那这边是 f 码, f 不 就在前面吗?对不对?还有个 m m 码, m 不 就在前面吗?所以直接扣就可以了,这个代码没啥太大的难度,兄弟们,我这边就已经拿过来了,看这个代码了,看这个在这, 你看这是需要的一个内容,这是导入的那个库。夸的 j s, 然后拿了个 f, 拿了个 m, 把那个夸的 j s 呢,做了一个复制,给了夸的 j s, 属于这样的名字,然后做了把那个 d 点一样,就做了一个替换,这几个全部给替换掉了,最终就记出来了,就这么一点点代码,点击右键出运行,我们来看一看效果, 我给你看直接搞定了吧?是不是直接搞定了?咱们这是给大家讲的这样的一个关于标准加密算法的一个数字解密,大家可以自己练一下这样的一个网站,看看有什么坑啊?有坑的话呢可以在评论区里面留言,好吧,这边给你们做一个解释,兄弟们,这个就暂时给你们分享到这里。

家人们,我又来了,上一期咱们做的网易云单曲爬取,是不是觉得只要抓包找到接口,填好参数就能拿到数据,但实操的时候 是不是踩了一堆坑?比如接口参数里的 perims insect 是 一串乱码,根本看不懂,手动复制参数只能爬一两条,多爬几次就被封,想批量爬取,却连参数是怎么来的都摸不着头脑,这就是纯抓包爬取的致命痛点,只能被动拿数据,没法主动破解参数加密逻辑。而咱们今天的第二期 就是要解决这个核心问题,学会这个,你就再也不用被加密参数卡住,真正实现从单个爬取到批量爬取的跨越。话不多说,咱们直接上干货。 好, ok, 接着咱们来操作第二部曲,先把这个代码全部给拷贝一下,注销掉,移到里边整理好。 那刚刚我们操作的是拿这样的一个 m 四 e 文件来打开浏览器看一下,比如说点这样的一首音乐,好,有这样的一个 m 四 e 文件,一首音乐,你可以这么操作,没有任何问题第二首音乐,同时我们也可以这么操作,没什么问题,但如果第三首、第四首难道多这么点吗?点死你大哥, 一百首,一千首呢?是不是?所以从这个里面我们要推出来怎么做?去找这个文件的一个规律,这 v i 地址,很显然它是没有什么规律的,其实它这里面是加密的,这都是加密的, 所以咱们还是本着去找规律的一个原则去探索别的文件好。这个时候我们就要设计的一个文件,叫做 v e 的 一个文件,咱们来看一下 d i 曲当中的这样的一个 v e 文件, 这个语音文件是在哪里查找呢?网络模块当中的 xhr 里面, xhr 什么意思?它没有 http request, request 应该是好,这个里面是动态文件, v 这个里面我们去看一下。 那有同学可能会觉得,老师,那这个文件你是怎么找到的?我也是一个一个的点的,所以刚开始咱们还是一样一个一个的点下去,明白了没有?来打开这样的一个浏览器, 我们来选择 x h r 这样的一个模块,好,它里面找一个 v e 文件,有好多个 v e 任意点一个都 ok。 来到这里之后,我们来看一下上面有一个 ui 地址, ui 地址对应的是 post 的 请求,那这个 ui 地址有什么用呢?而且 post 的 请求就要写在请求题吧, 请求题带的是什么?带的肯定是咱们的一些参数,参数在哪里?载荷当中,这就是 lodus, 不是 lodus 英文单词,你们自己想好。在这个里面有个表单数据 primus 以及这样的一个 esc, 应该是 inquisition, secret key 叫做密钥,一个是参数,一个密钥,它这两个我们的 id 存进去之后,经过了 js 的 一些算, js 里面的有些代码执行完之后的一些加密的结果,每一次都会发生一些变化,那我们就要去 js 里面找这两个参数的一个区别,找它们什么意思? 然后找到之后用 python 的 方式去实现是可以的,但是一般我们不会使用 python 的 方式去实现,因为太麻烦了。 好在这个里面为什么说他这个文件里面就有我们想要的?其实你向他发起请求,如果成功了,在对应的响应当中就会有一个结果, 这样子不是很好,观察点预览模式,在这边把它点开好, ok, 往下面滚动。同学们,看这里 mc 文件对不对?就是他,是他,就是他。好,来到这个里面之后就会推断出来他是怎么来的。有同学可能会想到, 这个 m c 文件跟我前面刚刚媒体当中的这个 m c 文件有半毛钱的关系吗?他们两者其实都是同一个,一毛一样,没有任何差别,只不过我们去他这里面找有一个什么好处,就是你在发送请求的时候携带一个音乐 id 号,这款 携带一个音乐 id 号,这个 id 是 什么?就好比我们每个人的身份证号码独一无二的, 你 id 号不同,得到这个结果也就不一样,也就拿到了另外的 m 四 a 的 一个文件,明白了没有?所以咱们向他发起请求,然后拿到正确的结果。 ok, 来核对一下,打开拍唱,在这里改一下。 好,粘贴好之后 u r l。 没毛病,那这里也是 u r l post 请求,那这边是来个 text text 文本的方式,前面 前面取个名字叫 text 下划线 s t r。 我 就这么取名字。下面这一块呢,可以注销掉,先不是用它来 print 打印一下,打印肯定是没有任何东西的,对不对?为什么呀?因为我们用了 pos 的 请求,你还没有写在参数库中呢, 把参数拿过来在哪里?比特,比特等于大括号进来字典嘛,建筑队的方式,这里写一个注是二点二,怎么不听话呢? 二点二添加这塔数值。好,可以了,那我们来到这一块,把这两个参数给拷贝一下,建值对字典的方式,单引号引起来,粘贴好,这边单引号引起来,然后它里面咱们就把它干掉吧, 因为这是他每一次都会有不一样的变化,我们就来还是这样的吧,一起拷贝,先这么测试一下,先这么用着吧, 一样的,那肯定不行,这样子是不是咱们后面再改,只是这么操作一下,方便观察多个看可以了。那我们怎么去找这样的一个密钥呢? 来拷贝一下,在这一块 ctrl 加 f 粘连好,粘连好,或者说你把这个 prime 拷贝一下,在里面粘连好,按一个回车,哎,没有吧?没有试一下这样的一个密钥,拷贝一下,粘连好, perfect 也没有,没有的原因是什么呀?因为你没有刷新,你刷新一下就可以了,知道吧? 刷新好,把这里干掉,重新来,点一首,重新来,点一首,点点点,让子弹飞。好在 x a 夹里面有唯一文件,是不是把这个卡背 ctrl 加 f 粘贴好,按一个回车, ok, 有 了。好,那在这里的时候呢,有很多同学在看的说,哎,老师,这么多,我到底找哪一个呀? 就是一个一个的看,而且你没发现吗?有很多是重复的。 c o r 开始,六 i 结尾和六 i 的 中间呢?你看前面是不是一样的这两个文件,这位也是一样的吧,所以呢,咱们一个个点吧,先选第一个啊,运气比较好就是第一个,知道吧,我就不卖关子了。点击右键, 可以在新标签页面中当中就打开,可以查看,你也可以在来源里面查看,我们先点第二个, 打开之后,这个 js 代码看得懂吗?看不懂,我也看不懂,特别是下面,你往下面滚动的时候,这是啥玩意啊?编码过的知道吧?怎么办? 咔嚓掉这 js 代码,他可以这么执行, js 代码可以放在一行里面,但他也可以执行。好,把它关掉吧。点击右键在来源面板中打开,当然你也可以选择这一款,这是一个格式化,我建议你们使用这一个,点一下好,打开之后看到这个就非常非常的清楚了吧。 js 代码这里面是怎么找? ctrl 加 f, 把那个密钥粘贴过来,我们就找这个参数,看它里面有没有这个参数,对不对?好, 粘贴到里面之后可以看到三个,三个,那这还不好找吗?点一个断点再来回车,这两个是在一起的,打一个断点,而且运气比较好,同学们看到了没有? promise encryption secret key 就是 encryption encryption 加密,加密之后的一个密钥,好在这里打了结构断点,打完断点之后做调试,我们也可以随时观察这个密钥,它是 bkc 六 w 点这个玩意儿给它的, promise 呢,也是 bkc 六 w 点 text 文本给它的,说白了我们只需要知道它是什么意思就可以了,因为它里面的属性嘛, 好选择它。选择它之后可以看到在上面有个哇哇,就是声明了一下, b k c 六 w 刚好是它 好。 window, window 就是 窗口吧,整个这个界面的一个窗口, window 里面的 s rec 掉了这样的一个函数, window 里面的 s rec rec 里面传了几个参数进去, 转几个参数,那么我们在看这个参数的时候需要注意一下,这边是 j 伞, j 伞这是做了一个竖列化,做了一个格,就是 j 伞运行好, j 伞运行的竖列。哦,是的是的,没错, ok。 然后呢,我们再把这样的一个 s c 去拷贝一下,看看这样的一个函数到底代表了什么意思。 拷贝里面粘贴好,按一个回车,这里只有两个,两个回车,回车回车就是它了。好,可以看到是给是把 d 复制给了 window 上面的 s c。 那我们就去看一下 d 是 啥意思, d 随便写的吗?肯定不是,那上面传过来的。好,上面,上面往上面滚动,滚动滚动。这里有啊,他是不是一个翻译成好? d 里面他给了几个行餐,同学们注意看一下,这个 d, 这个行餐跟现在这样的一个函数名的这个 d 是 不一样的。 不要搞错了啊,这个是 e, 也是个形参吧。 f g, 这是传了四个参数进来,传进来之后呢,里面做了一个上面一个字典吧,还有个 i, 而是掉了一个 a, 这样的一个函数,传了一个十六进去。 a 是 什么呀? a 是 上,是在上面,在上面这一个, ok, 看到 a 里面他写了一些声明的一些变量吧,其中写了一个 b 等于什么呀? b 等于这样的一个。这字母应该是乱写的,刚刚我点了什么操作?不管他了吧,先这样子,先过掉,我们先来分析,先来分析 好,这边是一个字母串,这个字母串里面字母跟数字组成。那不要管他了,反正就是在里面做了一个循环嘛。做了个循环,然后是给了个随机值 b, 比如说字母串里面这个长度,这个长度应该是六十二, 别问为什么,我数过了,好,这边是一个随机值六十二,然后下面是变成了一个取整, 那后面是把这样的一个 b b 又是字母串里面的叉叉的 a t 传了个 e 进去。啊,这里我告诉你们什么意思,比如说你传了个 e, 这个 e 如果是取整货的,比如说它是十, 它是十的话,就是字母串里面数数到十零一二三四五六七八九十 a d, 十个, 第十个就是 k, 它就会把这个 k 给这个 c, 因为它是个复循环,所以,而且它上面是个随机值的一个变化,对不对?所以它一直会随便的去取,随便的去这个字母串里面去取,取出一些结果,任意的一些结果给它进行一个 retain, 所以 这是 a 呢? 这个函数执行完毕之后生成的一些随机数。好了,这边是转了个十六进去吧,你们懂得自己去看。好吧。 下面这是一个 b, b 是 一个上面的一个函数,看这个函数起什么作用? ok, 看到了这样的一个 crab 的 j s, crab 的 j s 确实用来做加密的, 做加密处理的,这是 j s 当中的一个库。好,从这里可以看到它是用到了一个 a e s 一个加密吧,对不对?加密也是加密,这个 e 用到了 c 这样的一个 c 药, i v 值是 d, i v 值是 d 这个结果产生的,然后这是一个 c b, c 的 也是一个也是一个。返回再来看下下面,下面这个也是又又做了一个重复的操作吧,对不对? 这个 c e 函数呢?是干嘛的?这个 c e 函数是也是一个加密方式呢,是 isa 的 一个加密方式,这边是创建了一个对象,创建了一个对象只溜了一个吧,它这里面应该还不算是做了一个加密,它里面这是我拷贝一下,看一下,整理好回车,这里面是一个反省吧, 反省里面还掉了别的呢,咱们就不是看了,哦,不是看了,好, ok。 再来回到刚刚这一块,反正就是一个最终的一个结果,就是个 isa 的 一个加密方式,到最终的话是 可以得到一个结果。其实呢,我们在用这样的一个低函数的时候,用这个低函数的时候可以看到它是掉了其他的一些函数,对不对?所以是层层清到的,我就不卖关子了,上面这些都要用得到,从 这个 function 往下面走,把这个代码呢拷贝一下。拷贝的时候呢,我们再去做一个简单的调试,来写一个,点一个让子弹飞, 因为打了断点,调试一下,调试一下,看看这里面几个参数什么意思,如果这几个参数我们能够知道能够调试出来,他的一个意义就是用拍子的方式模仿着写一个也是可以的吧。 点这样的一个播放,好,跳到这里来了,跳这里来了,这里面是有这么几个参数,我们先把刚刚这一块给拷贝一下, ok, 已经拷贝过了,来到拍叉里面做一下。我刚刚是不是提到了可以用拍子去写 一个 js 的 执行的结果,但是呢,不这么建议,不这么建议,因为他 js 里面的这个代码他是层层嵌套的,非常非常的麻烦,你要全部是用这样的一个 python 就 实现出来了,还是挺麻烦的,所以呢,我们一般就直接会使用这个 js 里面的代码去调 js 里面执行后的结果,也就是说, 也就说我不需要知道它的一个过程,点这个网络就是我不需要知道它里面的过程,我只需要知道有这个结果就行了,这个结果就是 js 里面执行完毕的结果, 就 python 直接调 js 的 结果,明白了没有?所以呢,来到里边把这里呢新建一个,来到这里新建一个 js 的 文件, js 的 文件,文件 找到了,音乐回车站立好,可以了,好了,站立过来之后,点击右键去运行一下,肯定报错了,这想都不要想,因为还不够全面嘛。你看这个 word, 很 显然它是在浏览器里面才一个 word 吧。 好,在这里呢,我们把它干掉,干掉,干掉之后,干掉之后你是运行也不行的,点击右键 run 一下, 不行,执行完毕了。那这里可以执行的话,它是什么原因呢?就你们如果没有装 node js 是 不能执行的,怎么安装就没有这样的一个 run, 知道吧?怎么怎么操作呢?选择 file 里面的 city, 好, 接着选择 plugins, plugins 里面在这样的一个 mark 开头的敲一个 node js, 你 这是查找哪一个呢?找这个 node js 知道吧?把它安装好就可以了,安装好之后有了,那我们就是操作你才点右键,才会有这样的一个 run 到里面。好,我们来打印一下,来调一下这个 d, 好 吧,调它吧,一样的,它里面传了几个参数,没几个参数呀, 没几个参数 d, e, f, g 吧。把它拷贝一下,粘到里面。那 d, f, g 什么意思呢?来写个 d 等于多少不知道,一等于多少也不知道,所以我们要跑到这里面去调试好。来到这一块,同学们注意看,其实有些参数它是已经执行完毕之后了,比如说 d e、 f g 刚好有这个 d 呢? 还不是最终的,因为这个 d 里面他要有一个 id 才行,我们现在看过,这是没有 id 的, 这些是没有变化了的,所以是可以直接用。把这个一拷贝一下,来到里面一等于粘贴好,可以了, 那再来一个 f, 拷贝一下,来到里面 f 等于粘连好, ok 吧?这里挺长的,挺长的,我就先让他这么先,让他这么写,方便观察来,再来一个,把这里 g 拷贝一下, 等于粘连好, ok, 那 现在我们最主要的是找这个 d d 的 话,它是什么样的呢?我们直接来点击 运行去运行,跑一下,再跑一下,不是,他再来跑一下,不是这个结果。你把鼠标放在这一块,可以看到,不是不是这个 跑一下,对,就这个 i d s, 他 已经有 i d s 了,这是他最终的一个结果。我是怎么测出来的呢?也是一步一步的测的,知道吧?所以刚我之前就测过了,所以就不是重复的测试了。把它拷贝来到拍叉里面,粘贴好,这是个字母串,把它干掉, 我们要的是字典,刚才之后来打印一下看看结果。 console, console 点 logo, 把这个呢塞到里面,点击右键去按一下,看看有没有结果,这里面报错了吧,对不对?报错的原因是因为少了一个 c, 它是用来加密的,既然少了它,我们就是加它,少什么加什么,就这么简单来 ctrl 加 f, 粘贴好,不是这个 c 字, 这个 croft j s 拷贝一下,来到里面整理好,回车,回车。有十三个,全部是查看完毕,刚开始做的时候全部是查看完毕,我们这边运气比较好, 一找就是第一个,知道吧,就这一个,把整个这一块的代码全部给拷贝,拷贝,一直往下面走。走走走走,走到哪一块呢? 走到我们刚刚用到的那个 facts 里面,就是 a, b, c, d 那 个地方这块。那有同学可能就会想到,老师,你怎么知道是这么长,你怎么知道有这么多,我也是一个一个考的,还是那句话 啊,那个少什么我就加入什么,少什么我就加入什么,最终测试下来之后有这么长,哼。所以呢,就直接拿个结果了,来到里面放在最前面站立好, ok 了吧。 好,整理好之后注意看,同学们可以按下 ctrl shift 加减号。这么操作完毕之后呢,只要是灰色的,我们就可以干掉。这里面没有灰色的呀,哦,这种颜色 等一下跑一下,哎,有结构了吧,对不对?结构是没问题的,这种可以干掉,你看把它选择这种灰色的干掉, 他又用到了,那这种灰色的干掉,这种灰色的干掉,干掉,灰色的干掉。因为是没有调用的,知道吧,当你删掉之后,最好是运行一下,一般都都是没有调用的,这个这个不用管,没用到肯定就可以删了。可以了, 上面还有没有,这里还有一个,删掉可以了,其实再来点击右键去运行一下, ok, 有 结果了吧,我们可以看到这个 text 的 一个结果,以及这个妙都已经有了,那既然有了,我们要去调用它,这里还有一个非常注意,非常需要注意的一点,同学们 看你呢?看这个地方很容易忽略掉这个小细节,就是因为我们之前在调用它的时候,你注意看这个地方很容易忽略掉这个小细节,就是因为我们之前在调用它的时候,你注意一个方法呀, 其实我们要把它也拷贝一下,拷贝一下,然后来到里面,在这个地方呢给加一个这个参数,括号括起来,括号括起来。好,这样子,这样子就已经转成了 json, 将这个对象转成了 json 字母串了,我们再来运行一下。 好,你看这是一个箭指对的方式了吧。 ok, 接着呢,我们在英文这里面去调用他的一个结果,他是 j s 变化出来的哦,他是 j s 文件执行后的一个结果。那我们怎么在 python 里面调这个结果呢?可以导入一个库, import j s, 就 用它来调, 在下面呢,在这一块你看去使用下这个文件,我写在这个里边吧,写在这个里面,因为还是添加数字吧。 exactly j s, 点它里面有个方法, combo 里面可以写我们这样的一个 j s 的 一个文件,是执行这样的 j s 文件。那么在执行之前呢,最好是先去读出一下,有 open 代号一起来,音乐点 j s 断开代号一起来啊,是读出吧,然后到后面写个点 read, 其实在前面取个名字,这是我们直接把它叫做 file 文件吧,加载这个文件 放到里面去,在前面呢写一个,等于它就是我们的 i s 结果 result, 其实写个 result 不是 很方便,很容易误导我们,取一个音乐下划线直接 s, 好 吧,就取这样的一个名字,好,再拿这个音乐下划线,直接 s 点去直行一下,扩 或执行下他这个文件,他这个文件里面的一个函数,一个函数,这执行之后呢,掉他的一个结果,所以我们把整个这一块就写个发个什么好,发个省,函数,函数,函数,函数命名字, s r c s s r c 的 一个字典, d i c t, 好 吧,这么这么就写名字,挂,挂起来,挂,挂起来,在这边来个大括号,挂个省,然后把这里剪切 塞到里面去,就是我掉了这样的一个函数之后,它要把整个的结果给我反出来,那既然是反结果,我肯定不能去打印它嘛,写个 return 对 不对?这里干掉,你在前面按个 tab 键,把这里按个 tab 键,方便观察 提把剑。好,那么接着呢,我们再来看一下,因为你这个 id 是 写死的还是里面?其实我们肯定不能写死吧,我们要是外面传一个 id 过来,他就给我生成一个密钥,生成一个参数,生成一个密钥给我,给我反出来,对不对?是不是这么个结果?所以呢,我们在这里应该添加一个参数,就是 music 的 id 号给添进来,把这个呢拷贝一下, ok, 它是个列表吧,那我也写个列表粘贴就可以了。接着呢,我们选择英文键去看一看能不能调用,它叫做,叫做这个函数名,这是函数名, 然后多格开传一个音乐 id 过去。传个什么音乐 id 呢?我现在选择一首音乐,选择网络当中的媒体,我们选择一首音乐吧,这样子吧,选择小图标一点,就选这个子弹飞这个 id 号,拷贝一下,拷贝一下,然后来到里边 把它整理好,可以这么写,可以这么写,没问题。好,当这么一操作完毕之后呢,它就是我们最终想要的参数,参数叫 secret key 对 不对? secret key 写个等于号可以了,有结果了。那接着咱们把它打印一下吧,这个好像还一个是 promise 参数吧。 promise 参数是不是 写个 promise secret key 这样子吧, promise 下划线, secret key s e c key 就 就可就可以了。接下来来个 plant, 打一下 promise secret key, 我 们看看能不能就执行完毕。点击右键,把下面这块先注销, 点击右键转一下,扑卡出来了,没有任何的问题,有结果了,所以咱们就是把这个结果塞到电塔里面吧,拷贝他是 promise promise secret key。 把这里先打开。 promise secret key 对 应的一个键,这是个键,下面还有个值。 promise 这是个值吧,这也是个键。拷贝中高过起来,来个 抓紧,来个抓紧。 ok, 现在我们就已经拿到了这样的一个低塔的结果,把下面这一块的注销掉。打开请求,打开请求的时候呢?我说把这个低塔塞过去,低塔等于低塔。 好,接着点击邮件运行,有用吗?没用的同学们,这里会,这里有用了吧?有一个 excel 文件是不是拿到了这里有个问题啊,就是我们在发警局的时候,尽量还是把这个 user 以及那个 cookie 还有那个来源都带过去。呃,为了方便他的一个审查 大哥,就是你可能抓的多了,他就不让你去,这么跟,他就不会给你这个数据了,不让你这么干了。所以来个 h e a d e r s 等于 h e a d e r。 这是我们的黑的,现在少了黑的,所以我们都是添加黑的,这是二点三添加,添加 黑的等于大挂扣起来。好,在这里边呢,来查找一下。继续来到 v e 文件,其实你随便点一个文件都可以,然后这是它的 use engine 了吧。拷贝来到里边,单号引起来,粘贴好。单引号,单引号 可以了,多格开。其实再来做一个操作,操作把,把那个 c t 也就是它的一个来源给拷贝过去。 city a river river, 哦,不是 city, 是 river river。 大 雁号引起来,站立好。大雁号引起来。大雁号引起来。多隔开再来一个 cookie, 把这个 cookie 呢也给拷贝过去。拷贝拷贝好,来到里面,大雁号引起来。站立好, 后边来个前面来个单引号。这个操作比较繁琐,但是挺简单,是不是啊? ok 吧,像现在三个已经有了吧。既然已经有了,咱们把这一块呢,给它收放一下,方便观察。那再去点击运行, 也可以拿到这个数字结果,可以拿到数字结果,这个数字结果。其实这样子看上去,有经验的同学就知道它是一个字母串。我们把这个字母串呢卷成字典,如果说你看不出来呢?把这里拷贝一下,粘贴好,写个 t y p t t y p e。 跨过起来,把这个结果应该看一看是个什么类型。那肯定是个字母串,字母串类型嘛,那改成字典类型不就可以了嘛。字典类型怎么操作?在前面导一个 import, import jason, 对 不对?倒过来之后往下面滚动,来到这个下面做一个操作。接着呢,刚才来到四十四行吧, jason 点 load 四,把谁 text 的 tree, text 的 tree 塞进去,它就是我们 d i c t 下划线的 text。 好, 等于可以了,拷贝, 粘贴,粘贴,绝对搞定,跑下,没有任何的毛病。说出来了, d i c d 出来了,那现在我就是拿这个 data 里面的一个键,取到这样的一个列表,列表,列表里面,我们再去观察一下 有几个字典吧,那列表里面的这是零个字典当中的 u r 键,是不是?是不是?同学们,你看,中间过起来,这是一个键,先取个列表,列表是零个,是零个吧, 零个元素当中的什么呀? u r l。 好, 我这么一曲绝对 ok, 把这里干掉,点击右键软一下,当当当,有了吧。同学们,现在还要我说吗?这里搞定了第二部曲,第三部曲呢?咱们再把它融合起来。

相信大部分兄弟更新了设备之后都会入坑配置高的 java 版,但是又想把陪伴了自己好几年的世界存档一并带去,那接下来是详细操作步骤, 我现在创建一个存档,随便弄了一点东西,模拟正常生存状态,保存并退出, 跟着我的步骤导出存档, ok, 这里一大堆字母的就是你的存档文件夹了,要确认存档只要看 level name 就 行了,然后压缩一下放到电脑上,然后从 qq 交流群获得存档解密工具,解压一下, 解压好以后,把下面的 macword 文件解压了,然后打开它,把我们网易存档的名字改成英文,运行里面的 e c 程序,选择存档路径,输入零解密, 然后导入国际服看看效果, 可以看到解密效果是完美的, 如果只想玩国际服的话就可以直接玩了。想导入加霸版,继续看,解压另外一个文件,运行里面的 e c 程序,我们还要准备一个加霸版的新存档,同样放在桌面上, 打开新的细节,选择路径, 在左边点转换,然后选择加霸版路径开始转换, 等他完成之后就可以直接导入了。当然没有电脑或者实在不会可以联系我帮忙进这个群,认真查看群公告。

专业文件密码破解服务,解锁您的加密文档难题,无论是办公文档遗忘、密码压缩包加密失效,还是数据库文件无法访问,我们凭借专业技术为您高效解锁。覆盖全场景加密文件需求, 全面覆盖主流文件格式。办公文档类, x l x l s x x word、 doc doc、 ppt、 ppt、 ppt x pdf 等各类主流压缩格式。数据库类, mdb x s、 d 等常用数据库文件。其他场景各类加密办公文件数据压缩包的密码找回与解除限制。核心服务优势一、高效破解技术一、托分布式计算机群与 ai 算法优化,结合海量密码字典库,大幅提升破解效率,简单密码秒即响应,复杂密码也能快速推进。二、 数据安全保障,全程自动化处理,无人工干预接触文件,文件传输与存储全程加密,严格保护您的商业机密与隐私数据,杜绝信息泄露风险。三、无损文件 integrity 破解过程不修改原始文件内容,不损伤数据结构,解锁后文件可正常编辑、查看与使用。 四、昌灵活便捷体验,无需安装任何软件,支持电脑、手机等多设备操作,上传文件后实时查看破解进度,结果实时通知,全程省心省力。五、 靠谱收费模式,按成功付费破解失败部收取任何费用,无隐性消费,性价比远超同类服务。试用场景,企业办公忘记重要合同、报表项目文档的加密密码影响业务推进。个人使用多年前存档的学习资料、工作文件加密后遗忘密码无法调取。商务对接 客户、合作伙伴发送的加密文件密码错误或丢失,急需解锁,使用数据恢复物设密码或员工离职后遗留的加密数据库压缩包需找回数据。我们拥有多年文件密码破解经验, 技术团队深耕加密算法解析,已成功为众多企业与个人解决各类加密文件难题。无论密码是简单数字组合还是复杂多字母混合,我们都能提供专业可靠的解锁方案。要不要我帮你定制一份服务宣传单页文案包含核心优势、服务流程与联系渠道,方便线下推广或线上传播。

三十分钟超长技术干货教学,带你十八式搞定 spare 霸的第十二题,深入学习前端加密解密方式以及混淆处理的办法。 nice, 更多爬虫逆向教学视频项目接单教学直播,我都放在了我的抖音粉丝群,兄弟们可以直接进群获取。然后在 c 十二这里我们先来看一下需求,主要是抓这个 macbook 十四, macbook m 四的商品价格,哪个是商品价格?我们看一下啊,有一个 plus, 三个九, ok, 这个地方是商品价格, 那么这里的商品价格我们同样的看一下,有没有翻译啊。 ok, 他 没有翻译,那这种没有翻译的情况相对来说啊,会方便很多啊,但是在这里面可以看到啊,我们右击啊, ok, 这个右击是不是右击不了啊? 那接下来我们直接通过这里啊,更多工具,打开开发的工具,然后再来刷新, ok, 刷新之后我们来找一找啊,他这上面的数据啊,在哪里?之前的断点痕迹我们先闪点。 ok, 数据在哪里?然后这里面有一个启齿架啊,适合学生和日常时间。我们来搜索一下这个数据,他这面好像是不让复制啊,我们手动打一下启齿架, ok, 搜索启齿架,发现启齿架没有任何提示啊,那也就是说啊,这上面的数据很有可能是什么情况的? 密文,密文解密的结果啊,能理解吧,很有可能是密文解密的结果啊,所以说我们搜索这上面的数据搜索不到啊,那接下来我们来观察一下这个数据的包啊,数据接口是哪一个啊?来找找啊,数据接口可以看到啊,这里面是密文对吧? ok, 再看下一个一步的, ok, 在 这里面他也是密纹,看到没有? ok, 我 们来看一下这个密纹的长度啊,来推断一下我们要找的是哪一个啊?这密纹的长度可以看上去啊,也是有点长的啊, 为什么要看这种长度呢?因为他这上面的数据有这么多啊,那对应的将这些数据全部加密起来,那他的密纹是很长的,能理解吧? 如果密文很短啊,那他就对应不了这份数据的加密,那么通过对比的话,我感觉啊,这一个数据包对应这里的数据密文呢,可能性高一点,为什么呢?大家来看这啊,他还有一个显示更多啊,十七点九点 kb, 那 也就是说啊,这一个密文它是最长的, 这个密文是最长的,兄弟们,那对应这里的数据呢?应该是刚刚好的,那么接下来我们就直接来修什么呢?可以先来看一下这个加密的特征,兄弟们,这个加密的特征你们想到的是什么加密算法, 给个解释啊,这个地方有个等号结尾,看到没?有个等号结尾啊,那么有个等号结尾啊,就不要单独认为是什么 face 四啊,没这么简单啊,顶多是他加密过程中啊,用到了 face 四,我们也可以尝试用一下这个 face 四啊,来给大家解个密,来看一下子,绝对是行不通的, ok, 有 车对吧?是行不通的,那么对于这种类型的加密,我们基本上啊是可以把它判断的范围啊,给它缩小的,缩小它的一个范围,也就是它用的是什么加对应的加密啊, 那绝对就是 aes 或者是 ds 或者是 rsa, 对 吧?无非就这几种。那关于这种类型的加密,我们可以直接搜索加密关键字,或者是搜索解密关键字,重点就看什么,重点就看你要干什么事情。如果是搜加密关键字的话,你就直接搜它,这个是加密关键字, 那如果是搜解密关键字的话,你就直接搜他就可以了。那么同样的啊,在这个地方,我们就直接搜索他, ok, 那 么接下来啊,展开一下搜索,加个冒号。兄弟, 那通过搜索,我们是得到了三个结果啊,这三个结果的位置啊,我们都给他来上一个断点, ok, 都给他来上个断点, 这是最后一个了,嗯,这最后一个和第一个怎么是一致的? ok, 那 断点啊,我们都全部打上了啊,那么打上断点之后,接下来再来刷新一下, 为什么刷新呢?因为他只有一页啊,我们要让这里面的数据重新啊,渲染加载一下,所以说就只能够通过通过什么,通过这样一个刷新来操作了, 那么可以看到这一个断点现在已经触发了,那么接下来回到他的上一步, ok, 回到上一步,回到上一步啊,我们就基本上已经知道了他是属于什么加密 aes, 对 吧?然后在这里呢执行 aes 的 解密,对吧? 别人 app 反面之后呢?能增加功能吗?老师,增加不了的,这个 app 不是 你开发的,有些功能它是要对接服务器的。老师, 那么对于这种位置的代码有一点点混淆啊,这一点点混淆啊,老手啊,这点混淆啊,对他来说啊,很简单,但是如果你是新手的话。兄弟啊,这一点点混淆啊,他也很简单,为什么他是 o b 类型混淆, o b 类型的混淆是可以解混淆的, 我们只需要有一个解混淆的工具就行了,那么在这里面我们先进入到解混淆的工具, ok, 这两个解混销平台我们都来一下,因为解混销你玩的多了,你就知道啊,这种工具解混销啊,他也有可能解出来的是错的,兄弟们,那关于这一点啊,兄弟们一定要注意这个问题,那么接下来我们直接将解混销的代码 放在这,我们接下来再来看一下找他解密的代码, ok, 通过结果一下,我们发现这个代码是不是有点少啊,有点少啊,那接下来我们就来阅读一下啊,这一份代码啊, 首先在上面啊,拿到他的一个什么东西啊,在上面拿到他的一个结果,应该是拿到的结果,拿到结果之后呢,这里面这里面提取了一个币啊,这个币我们来找找,看一下能不能找到。提取了一个币, ok, 这里面提取了一个 b, 这是有一个 b 的, 那下面的这个数据接口呢?这个数据接口有没有 b 数据接?这是数据接口啊,这数据接口里面没有 b 啊,那这个地方是不是我们要找到呢? 不太清楚啊,不太清楚,那我们接下来继续往下拉, ok, 他 这里面如果要做解密的话,一定会提取他,对不对?因为他定的是立稳啊,我们来搜索一下,看有没有这个字的, ok, 这个字还没得, 这个字还没得,兄弟们,这有点牛逼啊,这个字还没得,那他的解密是在哪个位置做的解密动作呢? 关于这个问题啊,如果你实在找不到啊,我们再来回,回到什么哪里呢?回到他的一个解密的位置,然后想办法来看一下他的密文我们能不能找到。 找一找他的密文,如果他的密文我们能够找到的话,我们也能够锁定我们当前解密的这一个密文是不是我们要做的一个操作。 ok, 这里面断一点我直接放掉就可以直接放掉,这个地方的断一点不要了,直接放掉,放掉之后这里有个断点也放掉。 ok, 然后我们再来重新刷 新一下,再给大家发个图片就可以了。 ok, 然后我们再来重新刷新一下,再给大家发个福袋就能。 现在断点我们只有一个了啊,有没有福利?刻件插件 有没有福利啊?福利就左上角的福袋。兄弟啊,刻件的话,刻件的话没得啊,可以给你一点什么教程啊,教程是没得问题的,可以给你点教程。插件的话有一个插件网址啊, 插件网址我给你找找啊,插件网址啊,户口脚本,户口脚本这个网址呢,就是全部都是你想要的这些插件了。老哥,这位小白兄弟啊, 像这个插件的话,这个地址啊有点长啊,你如果懒得自己打的话,你可以干嘛呢?和这个教程一样的啊,进一下我的粉丝群啊,在粉丝群里面找中,你要。兄弟, ok, 我 们接下来再来看一下啊,我们刚刚执行的刷新,他好像这个断点没有触发,对吧?这个断点没有触发,这个断点没有触发,我们重新来搜一个, 我们断点打到这上面,之前打的断点,哎,删,删除错了,之前打的断点,我们直接给他删掉啊,只打这一个再来刷新。 这网站速度的加载有点有点慢啊,断点已经触发了,然后我们再回到它的上一集,这里面是 q 九。 ok, 是 q 九的话,我们来找找它的这个对应的数据包,看一下能不能找到 是 q 九。 ok, q 九在这,兄弟们, q 九在这啊,那也就是说当前的应该不是我们要处理的密文,那么这个断点呢?我们直接跳过,好进入下次断点。进入下次断点,我们再来看啊,这里面有一个 co, 这个 co 的 话应该就是我们要处理的密文了。 嗯, co 是 在这里, co 在 这,这个 co 也有点长, 这个 co 有 点长,我们来看一下它的一个解密的结果吧。兄弟们,看一下它解密的结果。那要看它解密的结果的话, 我看一下这个括号在哪里。 ok, 直接把这一坨,直接把这一坨复制,复制之后来到控制台来输出一下。 ok, 输出之前再给他加点东西。兄弟们,加点什么东西呢?来上一个通知证。 ok, 吐司春,兄弟们,这个地方吐司春有点长啊,这是在做解密吗?有一点不像啊,兄弟们,有点不像。 ok, 这个断一点,我再把它放掉看一下,再把它放掉就没了。那这个数据的解密到底在哪里呢?兄弟们,数据的解密啊, 我们要找的是这个,对吧?那接下来我们来搜索一下它,为什么搜索一下它呢?因为在前端啊,要做,要做解密的话,肯定是要提取这个东西的,看一下能不能提取到。 ok, 搜索之后一共有两个结果,上面这个是接收点,上面这个是接收点,我们来找一找, 这里面怎么感觉都有点不对劲,兄弟们,对吧?有点不对劲,如果是要做解密的话,他这个地方做这样一个操作是没有任何必要的,我觉得,那我们要处理的这个是不是我们要做的解密的一个数据啊? 毕竟我们前面断点断点住之后呢,好像也没找到我们要处理的这两个。 ok, 那 么其他的我们先不管那么多啊,再把这个搜一下,看一下其他的断点会不会触发,再搜一下这个, 这是一个位置,这个位置我们是没有整的断点打到这之前的断点我们直接给它删掉。断点打到这真的断点打到这之后再来刷新。 ok, 这个地方的断点不会触发这个地方的断点不会触发。那他处理这个接口想要的解密是在哪里解密的? 难道是这个数据做的渲染吗?这个数据做渲染我总感觉有点不对劲啊。 ok, 兄弟们,这里面不做那么多的纠结啊,我们来截图看一下这两段密纹,这两段密纹也是不一样的。 ok, 这两段密纹也是不一样的,那就只能因为其他密纹洁面地方啊,没有触发这个断点。没有触发这个断点,那我们就来看一下啊,研究研究他触发这个断点位置的一个密纹洁面。 又是一个爬虫靶场吗?是的,又是一个爬虫靶场,这个是 spa 的 buff。 ok, 这里面的网址加载有点慢啊,再等等, 这也太墨迹了吧。 弹出的登录窗口 f 十二看不到怎么办?弹出的登录窗口 f 十二看不到。没明白你要表达的意思,老哥, ok, 这个页面终于打开了,回到上一集,回到上一集这里,回到上一集之后,我们来简单来看一下这两段代码。 ok, 都已经转成这样的一个字节了,转成字节了,这种情况下该怎么办呢? 我们不是对这段代码已经解过混淆了吗?来这里面来搜,我们现在断点位置是在这里, 那我们要处理的东西啊,就是上面这两个啊,先找到他,找到他的话在上面,在这个地方, ok, 再来观察,还要找到他,对吧?他的话也在上面,在这里,那也就是说我们断点的话要找到这个解密函数, 也就是找到这个解密函数传入的这两个参数是传的什么? ok, 兄弟们,这里面很明确啊,很明确,对吧?传了这两个啊,那传了这两个,我们在本地啊,来构建一下这两个, 这个代码我运行看一下有没有问题。 ok, 多功能怎么的?放了一个多功能的错误,我在想上面的代码能不能删掉啊?上面的代码能不能删掉?我看一下 上面这份代码,我们先给他注射起来,先不要,我们先只要这一个位置的代码,然后把它填充一下。 ok, 那 么接下来呢?接下来我们就来命名一下这两个参数,看一下它解密之后长什么样子。 ok, 先把它拿过来,然后是拿它, 那像这个的话应该就是什么,应该就是 a 和 b 了。 ok, 这两个拿下来之后,我们也来调用一下这个方法,看一下它给我们返回什么, 然后分别传入两个参数,对吧?这里面的 return 啊,我们它已经有 return 过了啊,我们直接来上一个 ctrl 点 logo, 这个函数是有 return 的, 直接 ctrl 点 logo, 它的一个返回值就行了,运行看效果。 ok, 解密之后只有这么一点, 这么一点,兄弟们,这么一点,我们先截个图啊,很有可能这么一点,他对应的是一把钥匙啊,是一个新的力啊,兄弟们,我们先暂时放在这啊, ok, 再来看他下一次的解密动作啊,现在是我看一下啊, 这个地方我们不是只打一个断点吗?这个地方断点不要了,直接跳过 ok, 再刷新一下。窗口是 gs 渲染的吧,肯定有登录接口请求接口不是 gs 渲染,就是原始的浏览器弹出窗口这样比较老的系统了。那比较老的话得看情况啊,看情况来处理了。 ok, 现在断点已经触发了,回到上一级,回到上一级之后呢,再来看啊,它这个地方是在传什么东西啊? 这个我们刚刚已经处理过了,对吧?这个必要是不是一直在变化呀,兄弟们,一直在变化啊,他这个变化是怎么变化来的啊?等一会我们再去整理啊,这个变化是怎么变化来的? ok, 那 么在这里面我们再来跳过一次断点啊,这是第二次断点了,再回到上一节, 这次我们再来看,这次是比较长的了啊,把它复制, ok, 然后再就是复制这个比较长的 粘贴啊,那么接下来我们再来运行看效果。兄弟们, ok, 这就是我们要的这个网页的数据了啊,但是它这里面有一个问题啊,什么问题呢?它这个密钥是怎么来的,我们还没弄清楚,对吧?这个密文啊, s o, 这个密文是 s o s o, 我 们来找找这个结构,看一遍 数据接口啊, ok, 这个是数据接口,对吧?数据接口我们找到了,那他这个密钥是怎么定义的呢?不太清楚,对吧?那么这个断点我们先过点,这里的数据包全部清空,接下来开始找密钥,刷新一下, 解密啊,没得问题啊,解密的代码我们都可以说已经玩玩玩够了啊,解密就是长这样子的,但是它那个密钥是怎么来的,我们还没弄清楚,对吧?那么接下来再给大家瞅一眼,发个密钥 在这里啊,这个密钥是怎么来的?不知道,对吧?我们来搜索一下。 ok, 通过搜索我那个小港区们,它是来自于 cookie 里面的, 它竟然在 cookie 里面,好离谱啊,是不是很离谱?兄弟, 也就是这个值,这个值,那么在 cookie 里面的话,这个值我们是不是找 set cookie 就 行了? ok, 那 么接下来我们再来看这个密钥,我们先把它的解密的结果,它解密的结果是一个新的东西,我们来看一下是不是第二把密钥,它这里面的香的解密是不是要两把钥匙才行? 这是第一次解密啊,这个我先删掉了,这个不需要啊,看一下他解密的结果,他解密的结果应该是第二把密钥,兄弟们, ok, 看一下他第二次解密是不是这个跳过当前段点好,接下来再来回退一下子, 再来看二者对比一下,对不对吧,刚好能够对应上,那也就是说它一共有两把钥匙,一共有两把钥匙? ok, 那 基本上已经懂了,它这里面一共是怎样的逻辑呢?首先啊,在 ck 里面 提取密钥啊,这是第一次解密啊,对,什么做解密呢?在这个地方一共有两个数据接口,看到没有?先对这个比较短的啊,做解密啊,也就说先解密接口的 b, 然后解密接口接口的 b 数据, 拿密钥,对吧?拿新的密钥啊,这个地方来上拿拿新的密钥,真的,那么这个密钥拿到之后呢?再解密什么?再解密?再解密 a, 再解密 a 数据,然后就是最终的一个过程了,那么这个过程啊,有一个问题啊,就是这个 c k 里面的密钥我们怎么取的? 如何取 ck 里面的密钥? ck 里面的密钥,它有一个,就是这个万字,也就它啊,它是密钥,它这个密钥是怎么来的?那么接下来开始来重点来看 ck 里面的密钥是怎么来的,这里面的断点全部跳过啊,不需要了,然后接下来再来走花心, ok, 我 们让这里面子弹飞一会行吗?有点墨迹啊,他,他的防御有点墨迹, 这也太墨迹了。兄弟们,我们在这个页面刷新一下, 这个断点全部跳过啊,不需要。 ok, 再来看 ck 啊,它这里面 ck 力要应该是变了,变化了,那么这个值是怎么来的?我们现在全区来搜一下,搜完之后呢?找 set 口给, ok, 兄弟们,这个地方,这个地方这个力很有可能是 gs 生成的,而不是互断给的。 这个地方搜的话没有任何的结果,很有可能是 gs 生成的,不是后端给的。我前面的判断是这个密钥是后端给的,那这个情况,我先把这里面的 ck 啊先给它删掉啊,这里面我全部清空啊,清空之后再来重新加载,看一下它到底是 gs 生成的还是后端给的。 ok, 那 么接下来再来看 ck, 哎,这个密钥跑哪去了? 也就是它,对吧?它把它复制,复制之后再来搜, ok, 兄弟们,这里可能实锤了啊,就是 g s 代码生成的, g s 代码生成的,它不是后端给的,那么接下来我们就要重点看什么?看这个被我们注视掉的代码, 在我们被注视这个代码当中啊,找他,兄弟们啊,找他,他是怎么来的?是通过这一段代码然后转换这个 key 来的,这个 key 的 话是在上面通过这段代码来生成的。 ok, 那 接下来我们直接把 这段代码不要行不行?看一下兄弟们这段代码, 这段代码我们先不要一直到这儿啊,注视掉,注视掉之后来输出一下这个 key, ok, 再来看一下这个可以能不能拿到我们想要的。 ok, 没得问题啊,他就是这么深沉的。兄弟们,那也就说通过这两行代码先生沉力要,当然在这里面这个器我好像没看到他用这个器,没看到他在使用啊,对吧?那也就说这段代码是可以删掉的。 ok, 那 关于这一个必要的话,我们也可以自己封装一个,还是方法,兄弟们,封装一下,然后这里面我们来上一个 a e f g l t, ok, 做一下封装。兄弟们, 那么封装完之后,这里面这一行代码他没有用到,没有用到可以直接给它删掉。这个七,我再搜一下,看一下有没有其他地方用的,我给他在这里面有判断,有判断,不管他了,这个我直接删了,这个直接删了, ok, 那 么他最终的代码就是长这个样子的, return key, ok, 中间这一坨就不需要了, 那它最终的一个解数代码就是这两部分啊, 那么现在我们开始尝试,兄弟们啊,现在开始尝试啊,怎么做尝试呢?先用这个带 ck 的 接口来请求它啊。 ok, 这里面还用到了一个 q 啊,还有个 q, 还有个 t 啊, 还有参数要解决啊,没那么简单,兄弟们,没那么简单。 ok, 看一下这个地方 c k 带上微博的话没有加密,没这问题。那接下来我们要解决请求参数问题啊,解决请求参数的问题。最近在学爬虫逆向,有没有啥资料可以参考学习一下。 老哥啊,想学技术要教程资料的老哥,进一下粉丝群啊,像我这个地方语却文档这些啊,全部分享给你。我也看到有很多兄弟啊,看到我的作品之后呢,后台给我私信啊,说要这个教程资料,你就直接进粉丝群啊,在粉丝群里面拿, ok 吧。 那接下来我们继续来看一下新的问题,这个 q 怎么解决?这个 t 怎么解决,对吧?这个 q 怎么解决和这个 t 怎么解决? ok, 我 估计啊,答案还是在哪里,还是在解混接的这个 gs 代码里面。 那我们把这个二点 gs 打开来看一下这段代码,我们要的 q 和 ok q 在 这看到没? q 在 这啊, md 五 hex, 然后 t 的 话也在这, t 的 话是 t 二。那明白了,兄弟们,这个 md 五 hex 和 t 二是我们接下来要做的操作, md 五 hex 有 个默认值啊,然后 t 二的话在上面, 他这个地方就相当于啊,干嘛呢?打了一个时间差,兄弟们做了一个时间差,如果是大于大于五,大于五会怎样?他这个地方大于五的话 就有这行代码,感觉没啥用,没啥意义,真的,然后 t 二加 k, 这个 k 加上这个 k, 加上这个 k, 然后干嘛呢?又得到了这个 md 五 hex, 那也就是说他这个地方就时间说拼接这个 k 啊,然后做这样一个 md 五,说明那这个 q 的 话就很好解决了。兄弟们,那整个题目我们基本上都已经全部解决了,那么接下来直接啊来组装兄弟们,可能有些兄弟们还是没明白啊,没得关系啊,在组装过程当中我也会继续讲解的。 那么接下来直接啊将前端啊,不是将爬虫给我们生成这段代码拿过来,拿过来之后,首先 首先是什么?首先的话我们要想办法生成它的一个立文参数,这个 ck, 这个 ck 的 话,这个 ck 还是先保留,先保留这里,当然这里面先保留的话,我就直接保留个控制就行了, ok。 然后 c k 是 怎么来的? c k 的 话在一点 g s 里面, c k 的 话就是这么来的,这是在获取 c k 里面的值,那么接下来我们需要导入一下执行 g s 的 方法,然后尾端 这里面我用的是一点 g s 啊,这里面直接啊一点 g s, 然后抖取的方式啊。二,拎扣点一 k 的 杠八 点 com, 然后传入 f 的 位置,做完这一步操作,那么接下来 c k 里面的这个值,这个值的话是这个什么?也就是这个箭头,对,这个箭头,对,直接拿过来,拿过来之后呢,来上一个等于啊, 然后 f 格式化字母二,这里面传入 c d 叉点括,然后第二用什么呢?第二,用这个 a、 e、 f、 k 的 k 方法, ok, 那 么接下来在这里面我们输出一下 h、 d、 s, 看一下 h, d, s, 解决没有? 下面这两部分代码,直接注视点,看一下 h、 d、 s 里面的 c、 k, ok。 再给大家发个福袋,什么狗顿要干我,哪个狗顿 找一找 ck, 兄弟们, ck 在 这里面正常获取,兄弟们,这个值正常获取,当然因为这个 ck 我 们等会要用的啊,所以说这个生成的值呢,我们等会要用的,那么最好需要用一个变量来接收一下它的值, ok, 然后再将这个变量放在这,这一步先搞定啊,搞定之后接下来来看第二步啊,解决请求参数的加密,这里面请求参数的加密也很简单啊,然后呢,它加密过程当中用到了 md 五啊,我们导入一下发行代码啊,不啊,我们直接导入 md 五啊, 王某发行列表导入 md 五,然后 md 五加密也很简单,它这里面是什么?拼接什么?再来瞅一眼, 它这里面是时间戳拼接,这个 k, 这个 k 就是 什么,这个 k 就是 ck 里面的 k, ok, 那 这一步弄清楚之后,接下来时间戳拼接 key, 那 在这里面首先是时间戳,时间戳我们生成一下,导入一下 time, 时间戳来上一个 ts 等于 int, 然后是 time 找 time 乘一千, ok, 这里面我们同样的啊,需要 f 格式化这个块儿,毕竟这个 time 它现在是个 int 类型,对吧?然后再加上什么,加上这个 key 啊, 加上这个 k 之后,兄弟,这个地方我就直接放在这里,不也一样的吗?放在这也是一样的,兄弟们,然后再来上一个点音扣的, ok, 这个 q 参数啊,我们就搞定了,然后再将时间戳 ts 放在这里,这个时间戳长度是不是有点问题啊?兄弟, 我看一下这个时间戳长度啊,他好像是除以一千了的,以表为单位啊,对吧?我们是不是有点长啊?有点长,那么这里不需要乘一千,直接这样子才是合理的, 对吧?然后再将 ts 放在这, ok, 那 这步操作完之后,请求参数啊,我们也搞定了,那么接下来开始发送请求啊,来上一个 u i l 接收一下,这是请求地址, 然后这里的代码直接删掉吧,重新写 request 点,这是什么请求? 这个是 get 请求,传入 ui, 传入 headers, 然后传入请求参数,最后的结果,它是个 json 数据,直接点 json 获取就行了,然后输出一下 response, 那 么接下来运行看效果啊,我们能不能拿到密文,再次一遍, ok, 密文的话,我们已经拿到了啊,成功拿到密文,拿到密文之后开始做解密,那么这里面的解密一共要分两步骤来操作, 那么首先第一次解密啊,拿密钥, ok, 第一次解密,获取密钥,那么第一次解密,获取密钥,我们是要对这里面的 b 啊来做解密,对这个 b 做解密, 那对这个 b 做解密的话,我们来上一个 b k 啊,来接受一下,然后是通过 c 叉 d 要用什么方法? d 要用的是这个方法,把它复制粘贴到这里,利用这个方法,然后需要传入两个参数, 传入两个参数,第一个参数是密钥 k, 也就是我们要传的第一个参数,然后第二个参数就是 response, 哎呀,这里面的自动补全不好使了。点 get 币,这是第二个函数,然后拿到这个 bk 之后,给兄弟们输出,观察一下,这个 bk 有 点慢, 网站速度有点慢啊,其他的都比较顺, ok, bk 啊,拿到了,那么接下来就是第二次减,获取 零,维数据获取零,那么第二次解密,我们来上一个 data, 然后再来通过 c 叉点括。第二,用什么呢?还是调用这个解密方法,只不过传入的东西啊,有区别了,跟你讲,第一次传入必要就是传这个 bk, 然后第二次传入需要解密的就是 resource, 只要 get a, ok, 操作完这一步啊,输出一下 dat, 当然这个 dat 它现在是个什么现,这个 dat 应该是一个伺候判数据,来观察一下, 对吧?它现在还是个字母串数据,那在这里面我们再来导入一下接收,然后再来做一下转换啊,转换之后的话,观察起来会舒服一些。来上一个 datast, 然后最终的 datast 就是 接收点 log 传入 datast, 这样的一个转换操作啊,就搞定了,然后再来输出一下代码, ok, 那 么接下来我们再来看看名为数据,我们能不能成功解密, 这个接口要慢,这没办法。 ok, 数据拿到了,对吧?数据全部拿到了,那么以上啊,则是关于这个 spider buff 的 d c 十二题了, spa 的 bug, d c 十二点,相对来说流程来讲会有点绕,会有一点点绕啊,但是我们目前还是比较顺利的,对吧?操作到这儿,各位兄弟,能不能得到您的认可,点个赞呗!能得到您的认可,点个赞呗!兄弟们。

基于 java script 的 尚未及 pcm 音频数据解析与多通道提取实现一、 java script 语言简介 java script 是 一种高级解释型动态脚本语言,最初运行于浏览器端,借助 node js 现已广泛应用于服务器端开发。 其核心特点包括动态类型、无需显示声明、变量类型、基于事件循环的异步非阻塞 i o 处理文件网络等,操作效率高,提供 buffer、 array buffer 等内置类型,可方便的操作。二、进置数据这些特性使 javascript 成为嵌入式系统与上层应用之间进行数据转换的理想选择。 二、需求分析通过串口接受了自定义包格式的四、麦克风录音数据文件 test pcm 需要编辑脚本从中提取音频数据,生成包含四个通道的 pcm 文件。 ok 点 pcm 自定义包意味着文件中除纯净 pcm 音频外,还包含同步头、长度、字段等包头信息,必须根据实际包结构解析出有效、复杂,再将所有通道的采用数据合并为多通道交互模式。为便于说明文本,假设一种常见的自定义包结构, 同步头四字节固定值零 x a a 五五 a a 五五用于定位包起时包长度四字节小端序表示整个包的长度,音频覆盖长度可变,包含四通道十六位 pcm 数据交错排列 校验核两字节可选用于数据完整性校验。三、 javascript 实现思路使用 nojs 内置的 f s 模块,以二进置模式提取文件,得到八份对象 便利包查找同步头,找到后根据包长度字段提取负债数据包,将负债追加到结果缓冲区,继续解析下一个包,直至文件结束,最后将所有负债合并写入 ok 点 pcm。 四、核心代码 const f s 等于日快尔 const s, y, n, c, e 或 zero x a five five a a five five const header size 等于。八、同步头加包长度 constance 等于。二、 function extract pcm const data equals fs dot red file sync let offset 等于零 const chunks equals 等于等于 s y offset 加加看经验 const piktorun 等于 data u 太三十二 l e if offset plus, p, k, t, l, e, n 贵的等 data length break c, o, n, s, t payload equals data dot s, u, b, a, r r, a, y upside 加 hitter size upside plus, p, k, l, n chucksome underscore size chunks push upside 加等于 p, t, l, n, f, s right face cover concet extract pcm pcm ok pcm 以上代码仅展示核心流程, 滑动查找同步头,根据包长度截取副本并拼接。实际应用中可根据真实包格式调整同步头值、头部大小及校验和位置。五、 输出文件说明生成的 ok 点 pcm 为标准的四、通道十六位交错 pcm, 数据采集率位深与原始录音一致,可使用 ad 字体等工具以原始数据方式导入设置通道数为。四、采集格式为十六位,有符号整数进行播放或分析。 六、扩展与注意事项包格式适配,若实际协议不同,只需修改头部头长量、包头大小及校验和位置记录。大文件处理,对于超大文件可采用流式读取和 ipad 可以 stream 逐快解析,避免内存占用过高。错误处理可增加校验和验证,进一步提升数据可操行通道顺序,确保负债中的通道交错顺序与输出要求一致,否则需重排。 通过上述脚本,脚本 script 展示了处理二进制协议数据的便捷性,将嵌入式串口传输的自定义数据快速转换为标准音频文件,便于后续分析或播放。

今天给大家分享一下如何用 word 软件破解 word 文件的打开密码。当打开 word 文件需要打开密码时,首先我们先关闭弹出的输入密码对话框, ctrl 加也新建一个文件, 找到开发工具对话框,双击进入 b b a 编辑器,找到插入对话框,插入一个模块,把代码写入模块中,就可以破解需要解密的文件了。 代码我们就不详细进行讲解了,每行代码都有注视,绿色字体代表的就是注视文字,在书写代码时是不需要输入的。需要注意的是,书写代码是必须在输入法英文绊脚的状态下进行书写的。 如果有疑问,欢迎在评论区留言交流。下面我们就运行一下代码光标,放置在代码的任意位置处,单击运行会打开,选择文件对话框,选择需要 解密的文件,等待完成即可。切记,此代码只适合打开密码为数字的 word 文件。如果长时间解密不出来,可以按 ctrl 加 big 组合键退出 vba 程序。谢谢您的观看,关注我,提高你的工作效率!

为什么你逆向时大马走着走着就飞了?函数明明在这,下一秒却跑到另一个文件堆战一片混乱,加密逻辑完全抓不住,答案只有一个,你 没看懂。一步堆战这节课不讲废话,只讲实战,我用真实网站案例教你三步拆解,一步调用链,看完这一期,你对 js 逆向的理解会直接上一个档次。爬虫逆向的毕生所学都已准备好,需要的同学点击这里自取。今天我们来看的是扇贝单词,它这里的一些单词数据采集,通过右键去选择检查,打开开发工具,进入到网络面板当中, 然后重新去触发一次今日新词,点击发了两个数据包,一个是叉圈,一个是预检,预检就可以不用看他了。那在这里可以看到第一个数据包里面他对应了一个 data, 里面呢,是密文值,它这里是密文值,我们在这里去搜索的话,肯定是搜不到这个单词的一些数据了,它是对它做了加密嘛?这种加密的情况我们之前所去实现的,就是通过搜索 jason 点 pass, 或者通过 jason 点 pass 来去处理,来去找到它的一个加密位置,因为它在这里 得到的是密文值,在页面上是能够去正常显示的。就一定会有一个解密的过程,它解密成了字母串之后,就一定会把那个字母串给它转换成对应的对象,就是通过 destination path 来去转换的。但这里我们就去选择用一种新的方式啊,通过跟站的形式 来去硬根一下,找到数据包的启动器,第一个进到这里面来之后下个断点,然后再去重新触发一次,断住了,断在了这个位置。我们来看一下他的座右翼以及他的一个定位,站在这里面呢,是看不到任何的密文值信息的,所以他肯定不是在这里吗?再往上面找啊, play 这里面也没有吗?那再往上面找,这里是去给他做导出了这个地方也没有啊, e e 里面的是这样的一些东西。 好,那就找到下面,这里可以看到啊,它是一个点阵,这个呢是一个异步,那么异步怎么去做呢?我们在这里的第一个堆在这个位置去下上断点,把刚刚的那个断点给它取消掉, 好重新去让它断一次触发今日新词点击断出来,断在了这个位置。来看一下这个 t t 的 话,它是一个数组,里面对应的有六个元素呢。来看一下这个 t t 的 话,它是一个数组,里面对应的有子, 他呢是一个请求的拦截器。再回过头来看一下这个第二个,第二个的话他在这里是一个拒绝啊拒绝的状态。再回来看 第三个,这里这里呢是去做的导出啊,来看第四个呢,第四个是一个强制拦截器。第五个,第五个在这里他是一个响应拦截器,第六个来看他,是 啊,一个方法了,这样的一个方法,那么这个地方怎么去断呢?断在什么位置?这个地方就去断在他的响应拦截器的位置,我们得到响应之后,他会去拿到这个响应去做一些解密的处理嘛,所以这里可以去给他断在这个位置,来把刚的那个断点给他取消掉, 再来去执行。断在了这个位置,那么这个 e 来看一下,它里面就对应了一个 data data, 所对应的就是这个密文值。这里得到了密文值之后,我们这里单步走一下,走走看它有没有解密的地方。 在这个位置可以看到啊,一点 data 点 data, 这个一点 data 点 data, 就是 那个密文值嘛,密文值传给了这个 sa 方法,能够得到什么东西呢?就能够去得到这样的一个对象了, 所以它在这一步就一定是做了解密,并且将解密之后的这个串给它转换成对象的一个操作啊。 q u a n t t y 啊,这里是吧,就是这个单词嘛,铭文值的数据。好,那我们看一下这个 s a 是 什么方法,进到这里面来 看一下啊,在这个地方我们可以进来,进来之后可以看到它这是 j s 点 plus 做了一个转换, window 点 b a y s 四点 d 这样的一个方法,传那个 e 进去, e 就是 那个密文值, 把它拿过来去跑一下,就能够去得到字母串的一个铭文值了,再去通过这这点 pass 就 能够去转换成这样一个对象了啊,它整个的逻辑是这样的,那就来看这个 d 呗,这个 d 方法它到底是什么样的逻辑?进到这边来看一下, 这里的话是对应的 k 为 d, 它这里的话呢?走了这样的一个逻辑,那么上面整个来说看起来应该是一个 webpack 了啊,上面有没有 webpack 呢? 这里有个 webpack 顶部的话是什么样的一个类型啊?这里整个是一个 html 文件,它是放到了 script 的 标签里面, 所以这个地方我们可以去给它收起来,把这个代码给它拿过来啊,全部复制放到拍上 gs 文件当中,粘贴过来,给他格式化一下,然后找到顶部,他在这里有有一个加载器 o 啊 o, 这里是点块这样的一个加载器的一个结构,找到了这个加载器之后,我们这里可以给他导出来,用来 全区声明一个变量,比如叫做七目,等他这里 o 定义完了之后啊,这里的方法也给他加完了之后,在下面这个地方给他再去导出来七目等于 o。 好, 那现在我们可以去打印看一下这个七目,看能不能去跑出来,右键去运行, 就能够去得到这样的一个东西了,它里面呢是零一二三四五,刚好对应呢,是六个元素嘛?六个元素。那么我们刚刚所去看的这个加密位置,它到底是在第几个元素当中?这里先给它展开一下吧,继续回到这里来。哎,是这个地方 它在这里的话呢是什么?是 r 函数啊?是 r 函数,然后这里可以去数一下啊,先给它收起来吧, 我顺便找一下它是在哪个函数里面的,在这里面呢给它收起来,这里给它收起来,收起来。好,上面这里呢也给它收起来。呃,是这个啊,这个是我们刚刚找的那个位置,然后在这上面也给它收起来,收起来。上面还有 这里也给大家收一下,这里就是那个第一个元素了,第一个、第二个、第三个、第四个啊,下标为三的这个方法,我们这就可以去传一个三进去 右键运行看一下,他们就能够去得到这样的一个 r 方法。那么这个 r 方法呢?它里面又有一个什么呢?有一个 d, 对 吧?它的 k 为 d, 那 么就可以去通过取值给它取到这个 d 来跑一下就能够去得到对应的这个 value。 这个 value 呢?就是这样的一个方法了,我们再去传入什么?这个是密文值呗。传入那个密文值,密文值在当前断点的位置,它是什么呢?它是 e, 我 们来 copy 一下这个 e, c, o, p, y, 哎,这个 e 好, 来给它调用一下,传入参数进去,右键刨一下,就能够去得到这样的一个铭文值了,再去给它干嘛? jason 点 pass 就 能够去得到对应的这个对象了嘛? 来 log 输出一下, jason 点 pass 右键运行,是吧?就能够去得到对应的这个对象了。所以这里想要去通过 python 请求对应的这个数据包,得到密文值之后,再把这个密文值交给 g s 的 这个解密逻辑啊,给它跑一下就能够去得到它对应的密文值了。

当我们去获取数据的时候,发现数据包里面是这样的一种乱码形式的数据,这种情况应该怎么去做处理呢? 其实你要明确一个点,在页面当中他所展示的是一种明文值,也就是能看懂的数据,但是在数据包里面他是这样的一种密文值,乱码的数据,那么他在底层就一定会有一个解密的过程, 那么解密呢?是针对于给它解密回字母串的一个数据的,字母串它并不能直接到这种页面上做这样的一个渲染,所以它就一定会有个 json 点 pass 的 一个就是将字母串转换成 json 对 象的一个过程, 那我们就可以去 hook 这个 json 点 pass, 比如说这里去找到一个 hook 脚本,我们这里来看一下啊,这个一个非常简单的 hook 脚本,给他 hook 这个 json 点 pass 来给大家执行一下来去切换榜单就断在了这个位置,来看一下这个 power, 它其实就是解密回来的这个铭文值,那么解密 在这里已经是出局了的,我们来看一下它的一个堆站往上面跟一个站,在这里可以看到啊,这个 s l z once, 它在这里呢就是这样的一个 a r r a y barf 给它通过 se 之后 来去输出一下,它就能够去得到这样的一个结果,那么这个结果我们这里呢,再来去 通过这个地方啊,给他全部走一遍吧,好,他就能够去得到铭文值的一个数据了, 那他的一个解密过程呢?就一定是在这里来去做的解密吗?那么至于这个 a r y a r a y 八分呢?他是一个数组,那么 se 呢?就是解密的方法,我们可以进到这里面来看一下, 它在这个地方是一个大的维寸,可以给它收起来,下面呢有一些字解码,那么这个很明显是一个 gsvmp, 所以 在本地想要去实现的就是把这一套代码给它扒过来,然后去补上对应的一些环境, 补上对应的环境之后,然后通过对应的一个解密啊,给它做一下处理就可以了。至于啊这个地方我们可以看到啊它的这个 a r a y 数组八分,怎么去获取呢? 我们可以看到这里是一个数据库嘛,它其实是什么呢?是是这样的一个数据包里面的这些数据静止格式的数据给它转换成啊这样的一个列表,再去通过这个 buffer 数据库给它转一下就可以了。比如说我们可以去获取到 啊这个数据包,它里面的这个净值格式数据啊,给它转换成一个列表之后,通过交给这个方法来去给它转换成数值八分对象啊,再来去交给 se 方法给它做一下解密啊,就可以去实现对应的一个关联数据的一个逻辑了。 在这里可以去右键运行,看一下它整个的一套流程。首先先去得到那个静止格式的数据,给它转换成对应的这个列表啊,然后呢去对它做一个解密,就能够去解密回铭文值的数据了。