破解百度MP3加密链接地址

时间:2012-03-08 | 分类:个人日志,学习园地 | 浏览:19514 | 评论:18 | 发表评论

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

1、打开http://mp3.baidu.com,搜索“昆明湖”。

2、点击“试听”按钮,会弹出一个播放窗口。

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

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

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、对比可发现两个链接的格式一致:

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”,猜想是用了换字加密,即:
h → p
t → 1
p → x

由于密文较多,可以列出一张对比表如下:

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

可见加密后的字母也是按顺序排列的,这就是著名的凯撒密码了。
凯撒密码:将明文中的各个字符,按顺序进行n个字符错位转换的加密方法称为凯撒加密。
凯撒:古罗马时期的军事家和政治家。高卢战争的时候,他发明了这个密码,这样可以在敌人无法知晓通信内容的情况下,与联军进行联络。

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

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

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

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

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.uxB 
和 p11x://A88H9B9AA9.xk.p01k.kv/u20qk/%K8%ID%KB%NF%JI%NM.uxB
等都没有“=”,可以作为QQ空间背景音乐链接。

7、知道了加密方法,解密就很简单了,可以写一个程序进行自动移位处理,但是打开别的歌曲链接时,发现不同的歌曲的移位值是不同的,所以还要让程序自动判断移位值。
编程思路:首先定义一个字符串数组,里面存放26个小写字母,10个数字,26个大写字母。
因为地址中每一位的移位值都是相同的,由于音乐原地址是以“http”开头的,可以通过判断加密后的地址的第一个字符和“h”的差值确定移位值,而“h”在字符数组中是第8个元素。

8、新建一个名字为BaiDuMP3的C++控制台工程。以下是带参数的命令行运行的C++源代码,参数为加密的地址。 

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){

    int n;         //移位值 
    int i,j,k;     //循环变量 
    char s;        //用来保存加密字符串的每个字符 
    char str[62];  //数组保存字母和数字 
    char ss[200];  //保存解密后的字符串 

    if (argc != 2) {
        cout<<"\n此命令的语法是:\n\nBaiDuMP3 [url]\n\n";
    } else {
        for (i = 1; i < 63; i++) {
            if (i <= 26) {
                str[i] = i + 96;    //26个小写字母 
            } else if (i <= 36) {
                str[i] = i + 21;    //10个数字 
            } else {
                str[i] = i + 28;    //26个大写字母 
            }
        }

        for (i = 1; i < 63; i++) {
            if (argv[1][0] == str[i]) {
                n = i - 8;  //计算移位值
                break;
            }
        }

        for (j = 0; j < strlen(argv[1]); j++) {
            s = argv[1][j];              //逐位取字符 
            for (int i = 1; i < 63; i++) {
                if (str[i] == s) {         //查找在str数组中的位置 
                    k = i - n;             //减去移位值
                    if (k < 0) { 
                        s = str[k + 62];
                    } else if(k > 62) {
                        s = str[k - 62];
                    } else {
                        s = str[k];
                    }
                    break;
                }
            }
            ss[j] = s;
        }

        cout<<"\n解密后的音乐地址为:\n";

        for (i = 0; i < strlen(argv[1]); i++) {
            cout<<ss[i];
        }

        cout<<"\n\n";
    }
    system("PAUSE");
    return EXIT_SUCCESS;
} 

argc为参数个数,argv[]字符串数组中保存着参数。
argv[0]为第一个参数,也就是BaiDuMP3.exe,用户输入的加密地址为第二个参数,也就是argv[1]。

9、编译后打开CMD控制台程序,然后把BaiDuMP3.exe拖到CMD里,输入一个空格和加密后的音乐地址,接着回车,如图所示:

10、最后得到的未加密的地址为:http://mat1.qq.com/musictop/mp3/521/kunminghu.mp3,是腾讯服务器上的歌曲,链接速度应该很快吧。
点击下面播放器的播放按键可以试听歌曲。http://mat1.qq.com/musictop/mp3/521/kunminghu.mp3不愧是腾讯的服务器,速度果然很快,接下来就可以把它添加到QQ空间背景音乐了。

控制台程序点击下载,不过感觉用起来很麻烦。
现在写了一个在线自动搜索音乐外链的页面,点击上面导航栏的“百度MP3外链”进入。

标签: , , ,
本文链接: 破解百度MP3加密链接地址
版权所有: 破博客, 转载请注明本文出处。

18个评论

  1. 点点滴滴
    2013/09/04 21:35:06

    这个程序确实不错,楼主是程序员?


  2. 2013/06/13 14:08:03

    顶 想法真的很特别 望继续

  3. smart
    2012/12/03 01:48:58

    p2pSign = [“”,””,””,””,””,””,””,””,””,””], 只能看到这样怎么办?

    • admin
      2012/12/03 12:46:57

      那就说明这首歌曲没有其他网站的外链

  4. xyayy
    2012/12/03 00:13:48

    现在百度的播放页面改版了,该怎样获取这样p11x://ui19.yy.kwu/u20qk1wx/uxB/DA9/s2vuqvop2.uxB 的代码呢?

  5. 厉害!
    2012/07/31 22:57:58

    :wink: :wink: :wink: 博主 你真的厉害 佩服!!!

  6. Long
    2012/06/19 22:13:30

    好像找不到你说的那些地址啊, 好像必须是从百度搜索里面的才行,榜单什么的直接打开的会,那些连接都没有,是空的,你的那个//www.poboke.com/study/online-search-baidu-mp3-music-link.html做的很好,是怎么实现的啊?

    • admin
      2012/06/21 16:24:06

      那些地址是在播放页面的源代码里面找的,其实这篇文章只是说一下解密的方法而已,但是手动操作还是太麻烦了,所以最好用自动搜索的。

  7. 唯美网
    2012/04/24 14:57:18

    :evil: 收藏一下

  8. gdzjquan
    2012/03/10 15:27:30

    我顶!!!我想要这个程序啊!!牛~~~果然有想法!

    • admin
      2012/03/10 15:46:59

      现在可以下载程序了 :smile:

      • Blook
        2015/02/02 22:05:33

        请问下载在哪里呢?谢谢!

        • admin
          2015/02/03 18:36:11

          文章的倒数第二行

发表评论

您的昵称: *

您的邮箱: * (显示gravatar头像)

联系方式: