在silverlight与防盗链的网站中提取音乐文件

[audio:http://www.seenthewind.com/./wp-content/uploads/2011/11/secret_base.mp3|titles=secret_base]

url: http://bz.5sing.com/941638.html
step:
1. 查看网页源码,发现mp3链接,无法下载,估计已经配置的防盗链。
2. 使用chrome打开,输入 about:cache,查找到mp3-url的缓存,另存为。
3. 打开播放器,不能播放,用vim打开,发现是http报文明文 (╯#-皿-)╯~~╧═╧
4. 查找到ID3标签(MP3文件的标志头),截取出真正的mp3,还不够,目前是十六进制字符串的表示,我们要把他们换算成二进制存起来。
5. 写了一个python,做字符串处理,提取出纯净的hex-string。

import os
fp = open('123.txt', 'r')
wp = open('secret_base.txt', 'w')
for line in fp:
    l = line.split()
    #print l
    for l_hex in l[1:17]:
        wp.write(l_hex)
        #print l_hex,
    #print ''
    #os.system('pause')

6. 然后把文件中的hex-string流转换成纯二进制保存,用python处理二进制不太舒服,换成C++。

#include 
#include 
#define READ_MAX 1024

unsigned char chartohex(unsigned char * data)
{
    unsigned char ret = 0x00;

    if (*data < 'a') 
        ret = ret+(*data - '0');
    else
        ret = ret+10+(*data - 'a');
    ret = ret << 4;

    data++;
    if (*data < 'a') 
        ret = ret+(*data - '0');
    else
        ret = ret+10+(*data - 'a');
    return ret;
}

int main()
{
    FILE * fpr, * fpw;
    fpr = fopen("secret_base.txt", "r");
    fpw = fopen("secret_base.mp3", "wb");

    unsigned char readbuffer[READ_MAX];
    unsigned char writebuffer[READ_MAX/2];

    int len, i;
    while ( len=fread(readbuffer, sizeof(unsigned char), READ_MAX, fpr) )
    {
        for (i=0; i

7. ok, 提取出来的音乐在文章开头。

此条目发表在C, C++, Python, 编程分类目录,贴了, , , 标签。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注