记录一次Flash播放加密视频实现

app的上播放的视频文件是经过加密处理的,在客户端通过修改FFMPEG源码,结合IJK播放器源码定义了自己的播放器,但是在网站上播放一直没有得到解决。后来找到了一个不错的类库:SparrowPlayer,该播放器使用AS3编写,根据描述其功能强大,而且容易上手,对于我这个对flash一点都不懂的人来说应该非常合适,因为我只想看看怎么更改其中的加密算法。

SparrowPlayer 论坛地址:http://bbs.9ria.com/thread-432553-1-1.html

从github使用git clone代码,使用flash builder 4.7打开会报错。是因为:

 mx.core.MovieClipLoaderAsset;

这个类没有找到。可以参考地址:

https://killerspaz.wordpress.com/2011/10/12/using-mx-components-on-flexair-mobile

在库路径下添加:图中的路径文件core.swc

image.png

并且在源路径下添加。 Flashbuilder目录下面 \frameworks\projects\mx\src 文件夹,就可以了。播放加密的文件需要两个类库SparrowPlayer_BGWorker,SparrowPlayer_SeekWorker。需要先编译这两个部分的源码生成相应的swc文件,然后在将这两个文件放在。SparrowPlayer的src目录里面的m/media/httpe文件夹下。通过修改这两个类库的解密部分然后重新编译SparrowPlayer就可以实现自定义的加密格式了。但是最新的代码 commit id 为 23768516ce69bdf95ca63dab820f247137df2633的在重新编译播放器后,无法播放加密视频,经过不断尝试在 commit id为8e7f33735e741b96887b66b31a394bb43e50211d的提交时可以通过修改加密代码播放自定义加密视频.

修改SparrowPlayer_BGWorker.as

image.png

修改SparrowPlayer_SeekWorker.as文件

image.png

这里是对字节做了异或处理。seed是SparrowPlayer的Config.xml 传递进来了,这是一个配置文件,里面包含了很多flash播放器右键选择菜单信息。更改完加密方式后就可以可以选择 项目->导出发行版分别导出SparrowPlayer_BGWorker.swf和SparrowPlayer_SeekWorker.swc文件,然后将这两个文件放在SparrowPlayer目录下的位置。

image.png

然后在Sparrow工程中依旧选择项目->导出发行版,得到3个文件

image.png

然后将这三个文件放在ORG/demo/httpe目录下。

image.png

打开里面的html文件。然后设置httpe里面的地址为自己服务器上的加密视频文件所在路径。


image.png

注意assets的目录结构所处的位置,如果不在对应位置需要手动移动。config.xml里面包含了播放器界面上常用的信息,最下面的两个是加密相关的,第一个是从哪个字节开始加密的,第二个是

image.png

加密算法

flv视频的格式可以使用flvparse工具查看如下图所示

测试文件视频的结构

flv视频格式解析参考:
http://blog.sina.com.cn/s/blog_48f93b530100eyoe.html

这里加密的数据代码:

$file = 'xt_test.flv';
$encrypt_str = '';
$fileHandle = fopen($file,'r+');
//flv视频的header部分,前三个表示FLV这三个字母,第4个为版本号,后面9个固定长度表示头部的大小
$encrypt_str .= $header = fread($fileHandle, 13);
//取tag的类型,音频,视频或者script data
$encrypt_str .= fread($fileHandle,1);
//tag data部分的大小
$length = fread($fileHandle,3);
$encrypt_str .= $length;
//前三个表示时间戳,第四个用来在在前三个不够用时,有24位变成32位长度,后面三个是scream id固定为0
$encrypt_str .= fread($fileHandle,7);
$real_length =  hexdec(bin2hex($length));
$encrypt_str .= fread($fileHandle,$real_length);//根据tag data的长度读取tag data。
// -- 剩下的加密
$encrypt_idx = 13+11+$real_length;//已经读取的文件大小,剩余的加密 386

$wait_encrypt = fread($fileHandle, filesize($file) - $encrypt_idx);


for ($i = 0;$i< strlen($wait_encrypt); $i++) {
    
    $encrypt_str .= decbin(bindec(bin2hex($wait_encrypt[$i]) ^ 101));
}

file_put_contents('xt_encrypt.flv',$encrypt_str);

播放效果:

image.png

如果播放不成功可以根据控制台提示的信息进行操作,比如提示没有crossdomain.xml 文件。需要将该文件放在视频所处的根目录下。

image.png

crossdomain.xml文件在工程中是存在的如下图,直接移动过去就行


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容