抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

最近想给QQ空间添加几首背景音乐,所以上百度MP3找音乐链接地址,可是百度MP3现在把音乐链接地址给加密了,音乐链接地址带有“=”,QQ空间是不支持的。
查看了百度MP3的网页源码后,发现百度MP3用了比较简单的加密方法,所以要破解百度MP3加密链接是比较简单的。
下面就以后弦的《昆明湖》为例,演示一下破解百度MP3加密链接的方法。

1、打开http://mp3.baidu.com,搜索"昆明湖"
This is a picture without description

2、点击“试听”按钮,会弹出一个播放窗口:
This is a picture without description

3、可以看到音乐链接为:
http://zhangmenshiting.baidu.com/data2/music/5075964/5075964.mp3?xcode=d9baf427f91cffb01d07286be822d843&mid=0.04309666109953
而QQ空间是不支持带有"="的音乐链接的。

4、在左上角的logo处点击右键——查看网页源代码,发现里面有一段js代码是这样的:

1
var mU = "p11x://7pivoumv0pq1qvo.jiql2.kwu/li1iA/u20qk/D8FDHEC/D8FDHEC.uxB?5kwlm=lHjinCAFnH9knnj89l8FAGEjmGAAlGCB&uql=8.8CB8HEEE98HHDB", sT = "1331221874", Tit = "昆明湖 ", mt = "", sn = "昆明湖", an = "后弦", tp = document.getElementById("tip2"), flashok = 0;

5、对比可发现两个链接的格式一致:

1
2
http://zhangmenshiting.baidu.com/data2/music/5075964/5075964.mp3?xcode=d9baf427f91cffb01d07286be822d843&mid=0.04309666109953
p11x://7pivoumv0pq1qvo.jiql2.kwu/li1iA/u20qk/D8FDHEC/D8FDHEC.uxB?5kwlm=lHjinCAFnH9knnj89l8FAGEjmGAAlGCB&uql=8.8CB8HEEE98HHDB

"http"对应于"p11x",猜想是用了换字加密,
由于密文较多,可以列出如下一张对比表:

a b c d e f g h i j k l m n o p q r
i j k l m n o p q u v w x

可见加密后的字母也是按顺序排列的,这就是著名的凯撒密码了。

凯撒密码:将明文中的各个字符,按顺序进行n个字符错位转换的加密方法称为凯撒加密。

凯撒:古罗马时期的军事家和政治家。高卢战争的时候,他发明了这个密码,这样可以在敌人无法知晓通信内容的情况下,与联军进行联络。

把上面的密文对照表填满:

s t u v w x y z 0 1 2 3 4 5 6 7 8 9
0 1 2 5 7 8 9 A B C D E F G H

可见,这些字符串是把小写字母+数字+大写字母连接起来,然后右移8位构成了密文。

6、再看源代码,发现下面有一段js代码:

1
2
3
4
5
6
7
8
9
10
11
p2spurl = [
"p11x://7pivoumv0pq1qvo.jiql2.kwu/li1iA/u20qk/D8FDHEC/D8FDHEC.uxB?5kwlm=lHjinCAFnH9knnj89l8FAGEjmGAAlGCB",
"p11x://ui19.yy.kwu/u20qk1wx/uxB/DA9/s2vuqvop2.uxB?A&i21wa1iz1",
"p11x://A88H9B9AA9.xk.p01k.kv/u20qk/%K8%ID%KB%NF%JI%NM.uxB",
"p11x://AAB.C.GE.A8C/%mE%il%Gk%mE%Hj%jA/%mD%H8%Gm%mD%jk%iE/%mD%H8%Gm%mD%jk%iE%A8-%A8%mC%jH%Hl%mD%GD%ik%mC%jG%jj%A8-%A8%mE%HG%GE%mE%HG%Gm%mE%jH%HE.uxB",
"p11x://444.tmn10pw4.kv/4ivox2/FD8/9.uxB",
"p11x://01zmiu.p2u6w.kwu/a/98FFCHFB-AG9CFDEGBDA8FBH/1/9AGHD9B8FF.uxB?i=SbyAuPeoShY",
"p11x://29.i0.xl5.kv:G8G8/l9/AB/FC/AFFCB/lE/lHjHAmCBjFnnElD9ljk99El8iDGC9HGE.uxB",
"p11x://9AC.AAC.A9.EE/dqlmwB/0pq1qvo/yqvoyqivo/6qvxqv/988D.uxB",
"p11x://0xikm.pq1pw1.kv/u20qk_li1i/2x/DHH/E9F/89AC/A88G99B89DCEC9.uxB"
],

这些音乐地址都是百度从其他网站抓取的,其中的p11x://ui19.yy.kwu/u20qk1wx/uxB/DA9/s2vuqvop2.uxBp11x://A88H9B9AA9.xk.p01k.kv/u20qk/%K8%ID%KB%NF%JI%NM.uxB都没有"=",可以作为QQ空间背景音乐链接。

7、知道了加密方法,解密就很简单了,可以写代码进行自动移位处理,但是打开别的歌曲链接时,发现不同的歌曲的移位值是不同的,所以还要让代码自动计算移位值。

编程思路:首先定义一个字符串列表,里面存放26个小写字母,10个数字,26个大写字母。
因为地址中每一位的移位值都是相同的,由于音乐原地址是以"http"开头的,可以通过判断加密后的地址的第一个字符和"h"的差值确定移位值。

8、下面是解密链接的Python代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#coding:utf-8

# 解密方法
def decrypt(encrypt_url):

# 字符串列表
words = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

# 获取移位值
n = ord(encrypt_url[0]) - ord("h")

# 解密链接
decrypt_url = ""
for x in encrypt_url:
if x not in words:
decrypt_url += x
else:
index = words.index(x) - n
decrypt_url += words[index]
return decrypt_url

encrypt_url = "p11x://ui19.yy.kwu/u20qk1wx/uxB/DA9/s2vuqvop2.uxB"
print("加密的链接:%s"%(encrypt_url))
print("解密的链接:%s"%(decrypt(encrypt_url)))

执行结果如下:

1
2
加密的链接:p11x://ui19.yy.kwu/u20qk1wx/uxB/DA9/s2vuqvop2.uxB
解密的链接:http://mat1.qq.com/musictop/mp3/521/kunminghu.mp3

9、最后得到的未加密的链接为:http://mat1.qq.com/musictop/mp3/521/kunminghu.mp3,不愧是腾讯的服务器,下载速度果然很快,接下来就可以把它添加为QQ空间的背景音乐了。

评论