寻找解密函数

旧的做法
新的做法

在里面搜寻akamaized会看到下面这样:

其中的nv函数就是解密函数了,至于找到这个的方法就复杂多了,原则上是利用旧方法结合breakpoint找到的

找到解密函数名称之后再找一下就能找到像是下面的函数了,这就是解密函数的本体

1 
2
3
4
5
6
7
8
9
10
11
nv = function ( a ) { 
a = a.split( "" );
mv.Ym(a, 54 );
mv.Ym(a, 25 );
mv.gJ(a, 1 );
mv.TY(a, 21 );
mv.Ym(a, 62 );
mv.Ym(a, 35 );
mv.Ym(a, 17 ); return a.join( "" ) };


解密函数的helper

其中会看到一个东西叫mv,同样可以透过搜寻找到它的定义,应该会长成像下面这样:

1 
2
3
4
5

var mv = { 
gJ: function ( a, b ) {
a.splice( 0 , b)
},
Ym: function ( a, b ) { var c = a[ 0 ]; a[ 0 ] = a[b % a .length]; a[b % a.length] = c }, TY: function ( a ) { a.reverse() } };








结语

这个其实就是解密函数所需的一些辅助工具(helper),将他们两个结合就能拿来解密signature

然后在url后面加上&signature=解密後的signature就是真正的网址,可以用浏览器直接浏览看看

不过这东西并不是只做一次就好,因为这个加密方法还不时会更改,当你发现解密后还是失效时就请重新寻找解密函数

但是我有点懒,所以我就用js模拟了我刚做的所有事情,来帮我自动找出解密函数:

https://github.com/maple3142/ytdl/blob/master/decsig.js