python 解密 M3U8 AES 加密的视频
从浏览器下载的M3U8格式视频有时会被AES加密。windows下解密AES需要安装pycryptodome 模块和pycrypto模块,使用conda或pip安装这两个模块。
conda install pycryptodome
conda install pycrypto
安装完成后在Python文件中导入AES包,进行解密操作。M3U8一般使用CBC方式加密,key一般会与ts文件在同一目录,记事本打开key文件即可获取。iv需要从M3U8文件中获取。使用记事本打开此文件,如果属性列表出现 IV,则使用该值;如果未出现,则默认使用EXT-X-MEDIA-SEQUENCE作为 IV 值。使用大端字节序,往左填充 0 直到序列号满足128位,一般为全0。
示例代码如下。
from Crypto.Cipher import AES
def decryptSingleAES( src,dec,key,iv ):
try:
f1 = open(src, 'rb')
f2 = open(dec, 'wb')
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)
finally:
if f1:
f1.close()
if f2:
f2.close()
if __name__ == '__main__':
src='D:\\test\\old.ts'
dec='D:\\test\\new.ts'
key='9999999999999999'
iv=b'0000000000000000'
decryptSingleAES( src,dec,key,iv )