下载并解密的ts文件,发现一部分ts文件能播放,一部分不能播放

问题说明

按参考资料中两个链接,获取网站上的m3u8视频,下载并解密了ts文件,发现一部分ts文件能播放,一部分不能播放(解密失败)。

解决

经过反复尝试,发现疑似是多线程下载ts文件时,解密函数 cryptor = AES.new(key, AES.MODE_CBC, key) 的问题。

当解密函数在线程函数外面(即所有线程每次运行都是用同一个 cryptor )发现均有一定概率导致ts文件无法播放。

当解密函数在线程函数里面(即所有线程每次运行都重新生成一个 cryptor )多次尝试均未出现解密后的ts文件无法播放的情况。

说明:没看源码,只是经过反复尝试发现我的是这样的情况。


参考资料:

python爬虫 m3u8的下载及AES解密
https://blog.csdn.net/qq_59142194/article/details/124291576

使用python下载加密的流媒体m3u8视频文件
https://blog.csdn.net/LOVEmy134611/article/details/115463196

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
支持下载 m3u8 链接或文件为 mp4 或 ts 格式,并提供丰富的命令行选项。m3u8 downloader 开源的命令行 m3u8/HLS/dash 下载器,支持普通 AES-128-CBC 解密,多线程,自定义请求头等。支持简体中文,繁体中文和英文,完全免费。 开源免费 m3u8 下载工具 m3u8 downloader 中文版开源免费 m3u8 下载工具 m3u8 downloader 中文版 m3u8 downloader 特色: 不支持优酷视频解密 支持AES-128-CBC加密自动解密 支持多线程下载 支持下载限速 支持断点续传 支持Master List 支持直播流录制(BETA) 支持自定义HTTP Headers 支持自动合并 (二进制合并或使用ffmpeg合并) 支持选择下载m3u8中的指定时间段/分片内容 支持下载路径为网络驱动器的情况 支持下载外挂字幕轨道、音频轨道 支持仅合并为音频 自动使用系统代理(可禁止) 提供SimpleG简易的GUI生成常用参数 命令行选项 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 N_m3u8DL-CLI.exe [OPTIONS] --workDir Directory 设定程序工作目录 --saveName Filename 设定存储文件名(不包括后缀) --baseUrl BaseUrl 设定Baseurl --headers headers 设定请求头,格式 key:value 使用|分割不同的key&value --maxThreads Thread 设定程序的最大线程数(默认为32) --minThreads Thread 设定程序的最小线程数(默认为16) --retryCount Count 设定程序的重试次数(默认为15) --timeOut Sec 设定程序网络请求的超时时间(单位为秒,默认为10秒) --muxSetJson File 使用外部json文件定义混流选项 --useKeyFile File 使用外部16字节文件定义AES-128解密KEY --useKeyBase64 Base64String 使用Base64字符串定义AES-128解密KEY --useKeyIV HEXString 使用HEX字符串定义AES-128解密IV --downloadRange Range 仅下载视频的一部分分片或长度 --liveRecDur HH:MM:SS 直播录制时,达到此长度自动退出软件 --stopSpeed Number 当速度低于此值时,重试(单位为KB/s) --maxSpeed Number 设置下载速度上限(单位为KB/s) --enableDelAfterDone 开启下载后删除临时文件夹的功能 --enableMuxFastStart 开启混流mp4的FastStart特性 --enableBinaryMerge 开启二进制合并分片 --enableParseOnly 开启仅解析模式(程序只进行到meta.json) --enableAudioOnly 合并时仅封装音频轨道 --disableDateInfo 关闭混流中的日期写入 --noMerge 禁用自动合并 --noProxy 不自动使用系统代理 --disableIntegrityCheck 不检测分片数量是否完整 m3u8 downloader 是一款由 .Net 开发的一个简单易用的 m3u8 下载器,现在很多视频网站的视频都分割成了小片段,其 m3u8 就是来记录这一堆地址的文件,使用本下载器可以快速的下载并合并成一个完整的视频文件
程序无需使用命令方式进行解密,也无需任何配置即可使用。 Windows7及vista系统可用,但需要去掉UAC,或者用管理员权限运行主程序。 如无意外,黑刀Dezender 5.0 三套解密内核版 将会是最终版本,除非新的解密内核出现,否则今后也将不再更新,也请勿再加本人QQ咨询任何关于Zend解密的问题!感谢各位黑刀爱好者关注,敬请期待本人其他作品。谢谢! 反馈问题情况汇总: 1、有很多朋友说下载了最新版还是解不出来,是因为他们把程序放在了桌面上或者Program Files目录下。大家一定要记得,不要把黑刀Dezender的主程序以及需要解密的PHP文件放置在目录名包含空格的目录内,比如桌面、Program Files目录等,除了目录名不能包含空格以外,也不能包含英文的句号,以免程序将目录当做文件来处理,造成无法解密的情况。还有一种可能性,是因为被加密了的PHP文件采用了最新版的Zend来进行的加密,所以黑刀Dezender解不出来。 2、解密出来的文件有“乱码”:这种情况通常是因为PHP程序在加密时采用了混淆函数,而所使用的函数又是Dezender无法识别的,所以在函数的部分变成了“乱码”。目前唯一的解决办法只能是更新自己的混淆函数库来尝试解密,别无他法。 3、网友“李向阳”问:“我解开的文件能读,但是有很多很基本的语法问题。不知道是怎么回事!” 对于这个典型问题,我只能回答说,解密出来的文件不可能百分百还原为原始未加密的文件的。在遇到需要手工去修复代码的情况时,就要求Dezender的使用者具备相应的PHP程序编写知识。如果不具备?自己找书找资料看。呵呵。 4、如果出现如下的错误提示:“无法判断程序输入点于动态链接库php5ts.dll上”说明dezender和原有的PHP环境冲突,可考虑卸载原有PHP环境,或安装虚拟机,在虚拟机上使用dezender。实在不行,换台电脑试试看吧。呵呵。虚拟机的下载地址:http://tmd.me/2008/read.php?5 重要声明:   黑刀Dezender本身只是个集成工具而已,主程序实际上只是用Delphi开发的GUI界面的外壳程序,核心的解密功能部分来自互联网上的收集整理,我所做的外壳编程,仅是在原有的各个解密内核版本Dezender的功能上,开发基于windows的用户界面,以便于使用者对原有类似“DOS”环境下的各种应用功能的Windows实现。   我做这些解密程序本身也只是出于兴趣而作,就拿dezender来说,内核并不是我开发的,我也只是用Delphi写了外壳,让内核的使用更方便,微盾解密专家也是一样,享受的是用Delphi写程序时候的成就感和快乐。本身这两款程序也都是免费的,至多就是挂了个谷歌广告,只可惜从06年到现在,我的谷歌广告帐户也只积累了不到30美元而已。我深知不可能靠这些小东西赚钱发财,更是费力不讨好的事情。不过话说回来,dezender的外壳程序也不仅仅是我一个人在做,网上同类的、不同语言开发的外壳程序很多,只不过黑刀dezender做得更人性化一点,可操作的功能更完善一点罢了。而黑刀微盾解密专家更是在php版的解密脚本铺天盖地都有的情况下才写出来的,所实现的功能也与该解密脚本一致,并未提供更复杂的诸如函数和变量混淆的解密功能。 关于加密保护自己的PHP程序的问题:   类似微盾加密的、可以混淆函数和变量的加密方式,官方名字叫做“PHPlockit”,微盾的php加密专家也有类似的功能,但似乎会造成程序无法正确运行。目前在我没有开发新版的解密工具之前,据我所知除我之外能手工解密“类微盾加密混淆函数及变量”的人并不多,大家可以试试。其他比较安全的加密方式比如Ioncube等也可以使用,只是国内支持该加密方式的虚拟主机不多,如果是独立服务器,可以考虑采用。   而Zend的混淆函数也是至今无法完全突破的问题,大家在开发自己的PHP程序时,可以采用较长的自定义函数名和变量名,这样Dezender就无法正确的识别出明文来了,就算解密掉程序本身,因为函数和变量都已经被混淆,自然也很难让程序正确运行了。
1、有很多朋友说下载了最新版还是解不出来,是因为他们把程序放在了桌面上或者Program Files目录下。大家一定要记得,不要把黑刀Dezender的主程序以及需要解密的PHP文件放置在目录名包含空格的目录内,比如桌面、Program Files目录等,除了目录名不能包含空格以外,也不能包含英文的句号,以免程序将目录当做文件来处理,造成无法解密的情况。还有一种可能性,是因为被加密了的PHP文件采用了最新版的Zend来进行的加密,所以黑刀Dezender解不出来。 2、解密出来的文件有“乱码”:这种情况通常是因为PHP程序在加密时采用了混淆函数,而所使用的函数又是Dezender无法识别的,所以在函数的部分变成了“乱码”。目前唯一的解决办法只能是更新自己的混淆函数库来尝试解密,别无他法。 3、网友“李向阳”问:“我解开的文件能读,但是有很多很基本的语法问题。不知道是怎么回事!” 对于这个典型问题,我只能回答说,解密出来的文件不可能百分百还原为原始未加密的文件的。在遇到需要手工去修复代码的情况时,就要求Dezender的使用者具备相应的PHP程序编写知识。如果不具备?自己找书找资料看。呵呵。 4、如果出现如下的错误提示:“无法判断程序输入点于动态链接库php5ts.dll上”说明dezender和原有的PHP环境冲突,可考虑卸载原有PHP环境,或安装虚拟机,在虚拟机上使用dezender。实在不行,换台电脑试试看吧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值