再说wp Audio Player 插件音乐地址解密
2010 四月 5
点击这里查看在线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&encode=yes&initialvolume=80&remaining=yes&noinfo=no&buffer=5&checkpolicy=no&rtl=no&bg=E5E5E5&text=333333&leftbg=CCCCCC&lefticon=333333&volslider=666666&voltrack=FFFFFF&rightbg=B4B4B4&rightbghover=999999&righticon=333333&righticonhover=FFFFFF&track=FFFFFF&loader=009900&border=CCCCCC&tracker=DDDDDD&skip=666666&soundFile=aHR0cDovL3Jlcy5jaGluZXNlLmNuL211c2ljL2F1ZGlvL3pvbmdoZS94aWF5aXpoYW4ubXAzA&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; } |
21 Responses
Post a comment








综合得出,再怎么加密也瞒不过专业嗅探工具的嗅探,fox 有个插件就很牛叉,所以主要是防采集{非专业级} 防盗链{初级用户}。
有插件下载的话就方便多了!
base64编码,php直接用base64_decode就可以了
@yunt, yunt 果然牛人也,呵呵,谢谢了,原来这是插件作者使用的障眼法,我猜他之所以不在插件中直接用base64_encode应该就是这个原因。
我就用这个插件 得好好看看你这篇文章
你的那个显示代码的插件是什么?我也想高个插件,不知道用那个好,参考一下你的~
@谦笔小新, codeColorer
@荒野无灯,
功能很神奇,用上了,谢谢~呵呵~
大哥你博客右上边显示代码 SELECT blog FROM hacklog.Thought WHERE subjects IN (‘MySQL’, ‘C’, ‘AJAX’, ‘Web 2.0′, ‘php’,'discuz’,'wordpress’) AND hacklog.Authorname=’荒野无灯’,是不是哪里出问题了?
@朵未, 不是的,呵呵。
咕~~(╯﹏╰)b 问下 加密文件在哪?
@可乐烟, 你看下html源码就可以找到。如 http://ihacklog.com/external_link_redirect/aHR0cDovL3d3dy5teXRpb24uaW5mby9hcmNoaXZlcy80NDkwMQ== 这个网页有个加密地址 aHR0cDovL3N0b3JhZ2UubGl2ZS5jb20vaXRlbXMvRDMwNjVFRkVBMTBDRkNCQiExODM-ZmlsZW5hbWU9JUU1JUFFJUFCLm1wMw
发烧友
@丕子, 呵呵,就是爱瞎折腾了。
一个音乐地址 也足够你折腾 呵呵!
@Roam, 嗯 ,我其实是非常喜欢音乐的。有时候在别人博客里发现了一首很好听的音乐,结果却发现地址是加密了了。因此,就有了这篇文件了。
完全不懂。
好东西得多看看~~~
用火狐啊~~
@老饕, ???
@荒野无灯, 可以探测流媒体~直接下了