采集某鱼的视频下载。逆向sign的参数

1. 前言
现在我们在网页端看的视频,其前端实现原理就小编目前知道的而言,总的有两点:其一,直接就是一个mp4(或其他类似的)视频链接,如果我们能得到这个视频链接,直接用这个链接就能下载到这个视频;其二,和第一点差不多吧!但是直接用链接下载,获取不到视频文件,而是一个其他类型的文件(比如m3u8文件),虽然不能直接下载到视频,但是通过进一步处理,最后还是能得到视频文件的。最近,看到了一个视频平台,觉得这个平台挺好的,没有广告,想得到在这个平台的视频文件,但是其原理属于第二种情况,且网站进行相对复杂的加密处理,怎样才能得到这个平台上的视频的m3u8文件呢?

目标网址:aHR0cHM6Ly92LmRvdXl1LmNvbS9zaG93L244R3pNWG1Pam9KVzZxeVA=

1.分析数据                

分析网址发现某鱼的视频下载的参数data有加密参数。看起来有点像MD5加密。

2. 了解sign这个参数的加密原理(js逆向)

我们点击到启动器,如下:

可以看到这个启动器下面有一大堆js文件的链接,我们点到图上的第6个链接(这里直接省略点击上面5个链接的步骤了,小编是一个个都点击过的,可以并没有发现东西,知道点击到第6个链接后),发现如下:

然后再这里断点调试,可以看到sign结果已经出来了。

我们现在找t这个是哪里来的。发现t是上面:t = "".concat(p, "&vid=").concat(r) ,其中p是var p = window[l](a, o, s); r是视频的id.

var p = window[l](a, o, s);这个里面有三个参数:
 

a: 37425776

o: "765acd633469527b4fde252700041701"

s: 1724482607

window[l] 这个就是主要的加密函数,点击进入n8GzMXmOjoJW6qyP这个发现它的加密函数如下:看着这个函数有点像MD5的加密。

function ub98484234(y190b2880, y190b2881, y190b2882) {
                var rk = [25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21, 10, 25, 16, 24, 17, 30, 23, 37, 21];
                var k2 = [0x744668f3, 0x22d8cf77];
                var lk = [0x744668f3, 0x22d8cf77];
                var v = y190b288.slice(0);
                var k = [0xbd7375f8, 0xdfcfb71b, 0x3f7fed8e, 0xf7bb9631];
                for (var O = 0; O < 394; O++) {
                    v[O] ^= 0x29ec07c5;
                }
                v[1] = (v[1] << (lk[1] % 16)) | (v[1] >>> (32 - (lk[1] % 16)));
                v[0] += lk[0];
                v[3] = (v[3] >>> (lk[1] % 16)) | (v[3] << (32 - (lk[1] % 16)));
                v[2] ^= lk[0];
                v[5] += lk[1];
                v[4] ^= lk[0];
                v[7] -= lk[1];
                v[6] = (v[6] >>> (lk[0] % 16)) | (v[6] << (32 - (lk[0] % 16)));
                v[9] = (v[9] >>> (lk[1] % 16)) | (v[9] << (32 - (lk[1] % 16)));
                v[8] = (v[8] >>> (lk[0] % 16)) | (v[8] << (32 - (lk[0] % 16)));
                v[11] ^= lk[1];
                v[10] += lk[0];
                v[13] = (v[13] << (lk[1] % 16)) | (v[13] >>> (32 - (lk[1] % 16)));
                v[12] ^= lk[0];
                v[15] -= lk[1];
                v[14] += lk[0];
                v[17] -= lk[1];
                v[16] -= lk[0];
                v[19] = (v[19] << (lk[1] % 16)) | (v[19] >>> (32 - (lk[1] % 16)));
                v[18] += lk[0];
                v[21] = (v[21] >>> (lk[1] % 16)) | (v[21] << (32 - (lk[1] % 16)));
                v[20] ^= lk[0];
                v[23] += lk[1];
                v[22] ^= lk[0];
                v[25] -= lk[1];
                v[24] = (v[24] >>> (lk[0] % 16)) | (v[24] << (32 - (lk[0] % 16)));
                v[27] = (v[27] >>> (lk[1] % 16)) | (v[27] << (32 - (lk[1] % 16)));
                v[26] = (v[26] >>> (lk[0] % 16)) | (v[26] << (32 - (lk[0] % 16)));
                v[29] ^= lk[1];
                v[28] += lk[0];
                v[31] = (v[31] << (lk[1] % 16)) | (v[31] >>> (32 - (lk[1] % 16)));
                v[30] ^= lk[0];
                v[33] -= lk[1];
                v[32] += lk[0];
                v[35] -= lk[1];
                v[34] -= lk[0];
                v[37] = (v[37] << (lk[1] % 16)) | (v[37] >>> (32 - (lk[1] % 16)));
                v[36] += lk[0];
                v[39] = (v[39] &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值