解密HLS中的AES加密

解密HLS中的AES加密

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="https://drm.fptplay.net/secure/vod_decrypt2?token=eyJoYXNoX3ZhbHVlIjogImRiMGM3YjExNmVkNjRhMmE4ZGQ0NTg4NWEwMDc1M2VkIiwgInZpZGVvX2lkIjogIjU1NzgyZTgzMTdkYzEzMjg2NzljZjJkMCIsICJzZXJ2ZXJfdGltZSI6IDE0NTYyMTc2ODUsICJ2YWxpZF9taW51dGVzIjogNzIwfQ"
#EXTINF:10.0,
media_0.ts?token=eyJoYXNoX3ZhbHVlIjogImRiMGM3YjExNmVkNjRhMmE4ZGQ0NTg4NWEwMDc1M2VkIiwgInZpZGVvX2lkIjogIjU1NzgyZTgzMTdkYzEzMjg2NzljZjJkMCIsICJzZXJ2ZXJfdGltZSI6IDE0NTYyMTc2ODUsICJ2YWxpZF9taW51dGVzIjogNzIwfQ
#EXTINF:10.0,
media_1.ts?token=eyJoYXNoX3ZhbHVlIjogImRiMGM3YjExNmVkNjRhMmE4ZGQ0NTg4NWEwMDc1M2VkIiwgInZpZGVvX2lkIjogIjU1NzgyZTgzMTdkYzEzMjg2NzljZjJkMCIsICJzZXJ2ZXJfdGltZSI6IDE0NTYyMTc2ODUsICJ2YWxpZF9taW51dGVzIjogNzIwfQ

每個HLS文件都被使用AES-128方法加密,而解密的key文件可以通過URI指定的方式獲得。

解密步驟如下:

  1. 獲取key文件,在HLS文件中找到#EXT-X-KEY,有一個uri,下載下來是16個字節的密鑰
$ strkey=$(hexdump -v -e '16/1 "%02x"' key)
  1. 下載ts文件,針對每個ts文件(media_0.ts),從0開始按順序編號(變量index)

  2. 將編號格式化成32字節長的字符串作爲iv

$ iv=$(printf '%032x' $index)
  1. 解密ts文件:
$ openssl aes-128-cbc -d -in media_0.ts -out media_decryptd_0.ts -nosalt -iv $iv -K $strkey

另外,通過FFmpeg接收該HLS,則會自動完成解密操作。

1.按 m3u8 的內容下載好 key 和 ts 文件,
2.使用 hexdump工具 dump 出 key ,使用 openssl 進行解密,然後再使用 ffmpeg 進行文件合併. 怕麻煩用 python 寫個腳本就好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章