使用openssl m3u8解密 EXT-X-KEY:METHOD=AES-128,URI=xxx

1.ts

ts是日本高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。ts即"Transport Stream"的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。
大多数在线播放的视频使用ts格式作流媒体传输

2.m3u8

M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码。“M3U” 和 “M3U8” 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础,这种协议格式可以在 iPhone 和 Macbook 等设备播放。

通常m3u8包含了若干个ts文件的名称,按播放顺序有序排列,还包括版本、是否加密等信息

下面对AES-128的ts文件解密
.m3u8文件
使用openssl m3u8解密 EXT-X-KEY:METHOD=AES-128,URI=xxx_第1张图片

F12查看key
使用openssl m3u8解密 EXT-X-KEY:METHOD=AES-128,URI=xxx_第2张图片

步骤
使用openssl m3u8解密 EXT-X-KEY:METHOD=AES-128,URI=xxx_第3张图片
openssl aes-128-cbc自动化脚本

#16进制数转ascii码,这个预先生成,最后的0a不要
#hexdump -v -e '16/1 "%02x"' key.key 
#0a4d96498feee8ae
strkey=30613464393634393866656565386165

#一共有120个小文件
for j in $(seq 0 119)
do
  #echo $j
  iv=$(printf '%032x' $j)
  #echo $iv

  input="./ts/"$j".mp4"
  output="./output/"$j"_out.mp4"
  #echo $input
  #echo $output
  openssl aes-128-cbc -d -in $input -out $output -nosalt -iv $iv -K $strkey
done

#openssl aes-128-cbc -d -in 0.mp4 -out 0_out.mp4 -nosalt -iv $iv -K $strkey
[root@localhost ~]# ./aes_run.sh 
[root@localhost ~]# ls ./output/
0_out.mp4    110_out.mp4  13_out.mp4  24_out.mp4  35_out.mp4  46_out.mp4  57_out.mp4  68_out.mp4  79_out.mp4  8_out.mp4
100_out.mp4  111_out.mp4  14_out.mp4  25_out.mp4  36_out.mp4  47_out.mp4  58_out.mp4  69_out.mp4  7_out.mp4   90_out.mp4
101_out.mp4  112_out.mp4  15_out.mp4  26_out.mp4  37_out.mp4  48_out.mp4  59_out.mp4  6_out.mp4   80_out.mp4  91_out.mp4
102_out.mp4  113_out.mp4  16_out.mp4  27_out.mp4  38_out.mp4  49_out.mp4  5_out.mp4   70_out.mp4  81_out.mp4  92_out.mp4
103_out.mp4  114_out.mp4  17_out.mp4  28_out.mp4  39_out.mp4  4_out.mp4   60_out.mp4  71_out.mp4  82_out.mp4  93_out.mp4
104_out.mp4  115_out.mp4  18_out.mp4  29_out.mp4  3_out.mp4   50_out.mp4  61_out.mp4  72_out.mp4  83_out.mp4  94_out.mp4
105_out.mp4  116_out.mp4  19_out.mp4  2_out.mp4   40_out.mp4  51_out.mp4  62_out.mp4  73_out.mp4  84_out.mp4  95_out.mp4
106_out.mp4  117_out.mp4  1_out.mp4   30_out.mp4  41_out.mp4  52_out.mp4  63_out.mp4  74_out.mp4  85_out.mp4  96_out.mp4
107_out.mp4  118_out.mp4  20_out.mp4  31_out.mp4  42_out.mp4  53_out.mp4  64_out.mp4  75_out.mp4  86_out.mp4  97_out.mp4
108_out.mp4  119_out.mp4  21_out.mp4  32_out.mp4  43_out.mp4  54_out.mp4  65_out.mp4  76_out.mp4  87_out.mp4  98_out.mp4
109_out.mp4  11_out.mp4   22_out.mp4  33_out.mp4  44_out.mp4  55_out.mp4  66_out.mp4  77_out.mp4  88_out.mp4  99_out.mp4
10_out.mp4   12_out.mp4  

openssl aes-128加密方式
ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度。
例如

openssl aes-128-cbc -d -in 8JgoCJ8p/20.ts -out 8JgoCJ8p/out_20.ts -K 62313737353431616663646439616161 -iv 00000000000000000000000000000000
openssl aes-128-ecb -d -in 8JgoCJ8p/20.ts -out 8JgoCJ8p/out_20.ts -K 62313737353431616663646439616161

合并ts文件,使用ffmpeg清晰的更高

ffmpeg.exe -f concat -safe 0 -i ./filelist.txt -c copy ./test.mp4

filelist.txt:

file '0.ts'
file '1.ts'
file '2.ts'
file '3.ts'
file '4.ts'
file '5.ts'
file '6.ts'
file '7.ts'
file '8.ts'
file '9.ts'
file '10.ts'
file '11.ts'
file '12.ts'

参考
https://blog.csdn.net/newnewfeng/article/details/52275650

你可能感兴趣的:(Linux环境编程)