Skip to content

再说wp Audio Player 插件音乐地址解密

2010 四月 5
by 荒野无灯

点击这里查看在线demo
这里给个加密后的URL吧: aHR0cDovL3Jlcy5jaGluZXNlLmNuL211c2ljL2F1ZGlvL3pvbmdoZS94aWF5aXpoYW4ubXAzA

反编译Flash的利器 SWFDecompiler 3.20 616

http://www.xdowns.com/soft/softdown.asp?softid=31764

以前写过一篇文章,叫

《wp Audio Player 插件音乐地址解密函数》
,此文是我根据wp Audio Player的PHP加密代码写的解密代码,但是那个解密代码其实是有一些问题的,在那篇文章中我也说明了,这次来个完全解密版的,再次折腾一次,哈。
从此插件的播放器html代码中的flash参数可以看出它的解密部分其实是在flash文件中:

1
<object id="audioplayer_1" data="http://www.ihacklog.com/wordpress/wp-content/plugins/audio-player/assets/player.swf?ver=2.0.4.1" style="outline: medium none;" name="audioplayer_1" type="application/x-shockwave-flash" height="24" width="290"><param value="#FFFFFF" name="bgcolor"><param value="transparent" name="wmode"><param value="false" name="menu"><param value="animation=yes&amp;encode=yes&amp;initialvolume=80&amp;remaining=yes&amp;noinfo=no&amp;buffer=5&amp;checkpolicy=no&amp;rtl=no&amp;bg=E5E5E5&amp;text=333333&amp;leftbg=CCCCCC&amp;lefticon=333333&amp;volslider=666666&amp;voltrack=FFFFFF&amp;rightbg=B4B4B4&amp;rightbghover=999999&amp;righticon=333333&amp;righticonhover=FFFFFF&amp;track=FFFFFF&amp;loader=009900&amp;border=CCCCCC&amp;tracker=DDDDDD&amp;skip=666666&amp;soundFile=aHR0cDovL3Jlcy5jaGluZXNlLmNuL211c2ljL2F1ZGlvL3pvbmdoZS94aWF5aXpoYW4ubXAzA&amp;playerID=audioplayer_1" name="flashvars"></object>

可见soundFile参数是要靠flash文件解密的。
用UltraEdit以十六进制方式打开用SWFDecompiler反编译后的~player.fla文件,

此代码内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
{
    _root.soundFile = _root.soundfile;
} // end if
var options = new Object();
if (_root.playerID != undefined)
{
    options.playerID = _root.playerID;
} // end if
if (_root.demomode == "yes")
{
    options.demomode = true;
}
else if (_root.demomode == "no")
{
    options.demomode = false;
} // end else if
if (_root.autostart == "yes")
{
    options.autostart = true;
}
else if (_root.autostart == "no")
{
    options.autostart = false;
} // end else if
if (_root.animation == "no")
{
    options.animation = false;
}
else if (_root.animation == "yes")
{
    options.animation = true;
} // end else if
if (_root.loop == "yes")
{
    options.loop = true;
}
else if (_root.loop == "no")
{
    options.loop = false;
} // end else if
if (_root.encode == "yes")
{
    options.encode = true;
}
else if (_root.encode == "no")
{
    options.encode = false;
} // end else if
if (_root.remaining == "yes")
{
    options.remaining = true;
}
else if (_root.remaining == "no")
{
    options.remaining = false;
} // end else if
if (_root.noinfo == "yes")
{
    options.noinfo = true;
}
else if (_root.noinfo == "no")
{
    options.noinfo = false;
} // end else if
if (_root.killdownload == "yes")
{
    options.killdownload = true;
}
else if (_root.killdownload == "no")
{
    options.killdownload = false;
} // end else if
if (_root.checkpolicy == "yes")
{
    options.checkpolicy = true;
}
else if (_root.checkpolicy == "no")
{
    options.checkpolicy = false;
} // end else if
if (_root.rtl == "yes")
{
    options.rtl = true;
}
else if (_root.rtl == "no")
{
    options.rtl = false;
} // end else if
if (_root.initialvolume != undefined)
{
    options.volume = _root.initialvolume;
} // end if
if (_root.buffer != undefined)
{
    options.bufferTime = _root.buffer;
} // end if
if (_root.titles != undefined)
{
    options.titles = _root.titles;
} // end if
if (_root.artists != undefined)
{
    options.artists = _root.artists;
} // end if
Application.start(_root.soundFile, options);

可见soundFile是由Application的start方法负责处理的,顺藤摸瓜打开Application.as,在start方法中可以看到如下代码 :

1
2
3
4
        if (!Application._options.demomode && Application._options.encode)
        {
            sourceFile = Application._sixBitDecode(sourceFile);
        } // end if

由此又可知实际的解密函数为_sixBitDecode :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    static function _sixBitDecode(sourceStr)
    {
        var _loc4 = "";
        var _loc7 = "";
        var _loc8 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";
        var _loc2;
        var _loc5;
        var _loc3;
        var _loc1;
        for (var _loc1 = 0; _loc1 < sourceStr.length; ++_loc1)
        {
            _loc2 = _loc8.indexOf(sourceStr.substr(_loc1, 1));
            _loc3 = ("000000" + _loc2.toString(2)).substr(-6, 6);
            _loc4 = _loc4 + _loc3;
        } // end of for
        for (var _loc1 = 0; _loc1 < _loc4.length; _loc1 = _loc1 + 8)
        {
            _loc3 = _loc4.substr(_loc1, 8);
            _loc2 = parseInt(_loc3, 2);
            _loc5 = String.fromCharCode(_loc2);
            _loc7 = _loc7 + _loc5;
        } // end of for
        return (_loc7);
    } // End of the function

我写的php版本的解密代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
*wp Audio Player 插件音乐地址解密函数
*@author 荒野无灯
*@url http://www.ihacklog.com/
*@date 2010/04/05
*说明:仅供学习交流之用。
*/

    function sixbit_decode($source_str)
{
    $bin_code='';
    $str='';
    $codekey='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-';
    $source_len=strlen($source_str);
    for($i=0;$i<$source_len;$i++)
    {
        $current_strpos=strpos($codekey,substr($source_str,$i,1));
        $sixbit_bin=substr('000000'.base_convert($current_strpos,  10, 2),-6,6);
        $bin_code.=$sixbit_bin;
    }
   
    $bin_code_len=strlen($bin_code);
    for($i=0;$i<$bin_code_len;$i+=8)
    {
        $eight_bit_bin=substr($bin_code,$i,8);
        $ascii_num=base_convert($eight_bit_bin,  2, 10);
        $str.=chr($ascii_num);
    }
    return $str;
}

喜欢这篇文章吗?

请订阅本站 RSS feed填写您的邮件地址,订阅我们的精彩内容:,欢迎点击这里捐赠以支持荒野无灯转播到腾讯微博 转播到腾讯微博

作者:荒野无灯
出处:Hacklog【Hacklog】

声明: 本站遵循 署名-非商业性使用-相同方式共享 3.0 共享协议. 转载请注明转自Hacklog【荒野无灯weblog】

本文链接: http://ihacklog.com/?p=3616

21 Responses Post a comment
  1. 十二月 25, 2010

    综合得出,再怎么加密也瞒不过专业嗅探工具的嗅探,fox 有个插件就很牛叉,所以主要是防采集{非专业级} 防盗链{初级用户}。

  2. 十月 3, 2010

    有插件下载的话就方便多了!

  3. 四月 10, 2010

    base64编码,php直接用base64_decode就可以了

    • 四月 10, 2010

      @yunt, yunt 果然牛人也,呵呵,谢谢了,原来这是插件作者使用的障眼法,我猜他之所以不在插件中直接用base64_encode应该就是这个原因。

  4. 四月 8, 2010

    我就用这个插件 得好好看看你这篇文章

  5. 四月 7, 2010

    你的那个显示代码的插件是什么?我也想高个插件,不知道用那个好,参考一下你的~

  6. 四月 7, 2010

    大哥你博客右上边显示代码 SELECT blog FROM hacklog.Thought WHERE subjects IN (‘MySQL’, ‘C’, ‘AJAX’, ‘Web 2.0′, ‘php’,'discuz’,'wordpress’) AND hacklog.Authorname=’荒野无灯’,是不是哪里出问题了?

  7. 四月 7, 2010

    咕~~(╯﹏╰)b 问下 加密文件在哪?

  8. 四月 7, 2010

    发烧友

  9. 四月 6, 2010

    一个音乐地址 也足够你折腾 呵呵!

    • 四月 7, 2010

      @Roam, 嗯 ,我其实是非常喜欢音乐的。有时候在别人博客里发现了一首很好听的音乐,结果却发现地址是加密了了。因此,就有了这篇文件了。

  10. 四月 6, 2010

    完全不懂。

  11. 四月 5, 2010

    好东西得多看看~~~

  12. 四月 5, 2010

    用火狐啊~~

Leave a Reply

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <q cite=""> <strong>

 :wink:  :-|  :-x  :twisted:  :)  8-O  :(  :roll:  :-P  :oops:  :-o  :mrgreen:  :lol:  :idea:  :-D  :evil:  :cry:  8)  :arrow:  :-?  :?:  :!:

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS