解密部分可见 python 解密 M3U8 AES 加密的视频
Windows下合并ts文件可以使用 copy /b 命令,/b的含义是操作二进制文件,一般使用方法为 copy /b 1.ts+2.ts new.ts
,将1.ts和2.ts合并为new.ts,注意顺序不能乱。在有大量需要合并的文件时,手写bat文件耗时耗力,所以使用Python脚本,在解密文件的同时生成合并脚本。示例代码如下。
from Crypto.Cipher import AES
def decryptSingleAES( src,dec,key,iv ):
try:
f1 = open(src, 'rb')
f2 = open(dec, 'wb')
while True:
part = f1.read()
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv)
plain_data = cipher.decrypt(part)
if part:
f2.write(plain_data)
else:
break
finally:
if f1:
f1.close()
if f2:
f2.close()
# base是文件目录,fileHeader为ts文件共有的头
def decryptAllAES( base,fileHeader,num,key,iv ):
output='copy /b '
for index in range(0,num):
output=output+base+fileHeader+str(index)+'+'
# 如不需要解密,注释下面三行
src=base+fileHeader+str(index)
dec=base+str(index)
decryptSingleAES(src,dec,key,iv)
output = output.Substring(0,output.Length - 1)
output = output+' '+'new.ts'
try:
file=open(base+'0.bat','w')
file.write(output)
finally:
file.close()
if __name__ == '__main__':
base='D:\\df0cafece5efe33e6c38d8a19b7b4c18260213dd\\'
fileHeader='Y2hlbmppbmdjb25n'
num=1000
key='9999999999999999'
iv=b'0000000000000000'
decryptAllAES( base,fileHeader,num,key,iv )
代码执行完成后,运行生成的bat文件,即可合并解密后的ts文件。