V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sunnyzhi
V2EX  ›  程序员

有个 AES-128-cbc 加密的文件,内有一个 key 文件,不知能否解出来?谢谢。

  •  
  •   sunnyzhi · 2017-03-02 23:29:42 +08:00 · 10371 次点击
    这是一个创建于 2855 天前的主题,其中的信息可能已经有所发展或是发生改变。
    文件包的 VASR02032853.properties 文件内有一个 96 位 16 进制的 key ,这个 key 的文件信息是否足够解密这些切片文件呢?
    key 的内容如下:
    #keys
    #Thu Mar 02 22:12:41 GMT+08:00 2017

    25=C4ADEF542005E68022B4BD1827291177EA10CF028C15D6497CD4647728F33CD0191EEF9F6924AF0A4596ACA323A73E6F



    文件在这里: http://pan.baidu.com/s/1cw3P2Q

    因为之前解过的文件 AES-128-CBC 的 key 是 32 位的,有 key 和 iv 就可以使用 openssl 解出来,但遇上这个 96 位的 key 就不懂了。
    谢谢!
    16 条回复    2021-04-12 18:45:32 +08:00
    nilai
        1
    nilai  
       2017-03-03 09:37:50 +08:00
    AES-128 对应的 KEY 是 16 位
    AES-192 对应的 KEY 是 24 位
    AES-256 对应的 KEY 是 32 位

    CBC 模式下 是需要 IV 的
    ljysgpp
        2
    ljysgpp  
       2017-03-03 09:49:17 +08:00
    您好,可以请教您一个问题吗?我看到您在另一个帖子里说可以 hexdump 工具 dump 出 key ,是指查看这个 key 文件的十六进制的数值吗?
    zhujian198
        3
    zhujian198  
       2017-03-03 11:12:36 +08:00
    如果破解者有你的程序就比较容易了,即解密“ AES-128-cbc 加密的文件”的程序。只发这个“ AES-128-cbc 加密的文件” 文件是很难破解的。
    sunnyzhi
        4
    sunnyzhi  
    OP
       2017-03-03 11:35:09 +08:00
    @ljysgpp ,是的,通过 hexdump 查看 key 文件的 16 进制数值。(hexdump -v -e '16/1 "%02x"' key)


    @zhujian198 是的,我也在想是不是文件夹的信息不足够解密。可能有部份加密的信息是在客户端里。



    app 在这里: http://pan.baidu.com/s/1slyHfEP
    (安桌版本,需要脸书帐号登录)

    是一个音乐 app ,下载无损音乐后会在 content 的文件夹生成对应每只歌曲的文件夹。我目的是想把内容解密出来拷到其他播放器听。
    ljysgpp
        5
    ljysgpp  
       2017-03-03 16:31:38 +08:00
    @sunnyzhi 我看了您之前的 VAWM02024516-HD.key , hexdump 显示是一个 16 个字节的密钥,我下载下来用您说的方法测试是可以解密的。可是我现在手里有一个 m3u8 ,加密方式是 AES-128 ,下载的 key 用 hexdump 显示是一个 32 个字节的密钥,不知道是为什么了...
    sunnyzhi
        6
    sunnyzhi  
    OP
       2017-03-03 16:57:42 +08:00
    @ljysgpp
    你的 m3u8 里的 “#EXT-X-KEY ”这一行是不是显示"METHOD=AES-128"? 如果 key 是 32 位的有可能是"AES-256"加密的。
    ljysgpp
        7
    ljysgpp  
       2017-03-03 18:13:25 +08:00
    @sunnyzhi 是写的 AES-128 ,但是 key 是 32 位,所以感觉很奇怪
    sunnyzhi
        8
    sunnyzhi  
    OP
       2017-03-04 15:54:20 +08:00
    今天用 fiddler 抓包,发现了一个 32 位的 contentkey ,但仍是解不开。不知这个 content key 的作用。

    VASR02032852 的 contenkey
    ","contentKey":"06AC04970F0404443FFB9F3C41606338
    ocw
        9
    ocw  
       2017-03-09 22:35:24 +08:00
    @sunnyzhi 你好,我在你之前的回复看到你好像解析成功了,我解析的时候 openssl 总是显示 hex string is too long
    invalid hex iv value ,这是我的解析代码
    C:\OpenSSL-Win32\bin>openssl aes-128-cbc -d -in new_0.ts -out media_decryptd_0.ts
    -nosalt -iv 0x00000000000000000000000000000001 -K e8599247ff3327aced6402ddf78a577e ,
    能不能说下你 oepnssl 具体是怎么配置的,我用的是 openssl win32 ,官网还有个 openssl-1.1.0e ,是要用哪一个
    ocw
        10
    ocw  
       2017-03-09 22:36:46 +08:00
    另外你之前的那个音乐的其实直接用 potplayer 直接就能自动解析播放
    ocw
        11
    ocw  
       2017-03-09 22:53:48 +08:00
    huaderui
        12
    huaderui  
       2017-03-11 19:35:28 +08:00
    你解密视频的 ts 文件是怎么批量解密的。
    sunnyzhi
        13
    sunnyzhi  
    OP
       2017-03-14 22:31:36 +08:00   ❤️ 1
    @ocw, iv 值是 32 位的,开头两位“ 0X ”不要。
    openssl aes-128-cbc -d -in new_0.ts -out media_decryptd_0.ts
    -nosalt -iv 00000000000000000000000000000001 -K e8599247ff3327aced6402ddf78a577e


    近期比较忙,有空再折腾这个东西,不过我估计有些流媒体有 DRM 保护,基本是没办法解出来的。
    ocw
        14
    ocw  
       2017-03-16 00:20:36 +08:00
    我的 ok 了, moov 网页版你试试看,老方法成功破解
    Subdue
        15
    Subdue  
       2020-08-21 18:41:38 +08:00
    17 年的问题,20 年给个说法,aes-128-cbc 模式下要 16 位的 key 和 iv,这个 16 位指的是 16 位字节串,而不是 16 进制字符串,这个非常重要,一般 m3u8 有给 32 位的 16 进制字符串,通过 linux 命令 openssl -iv -K 参数可以直接指定 32 位的 16 进制字符串,不过 python,java 或者是其他的代码里面是不能直接指定 32 位的 16 进制字符串,所谓的 16 位 key 和 iv,恰恰是 32 位的 16 进制字符串的 16 位字节串表示,也就是 32 位 16 进制字符串==16 位字节串,网络有很多关于 m3u8 解密的文章,但是他们采取的做法都是把 32 位的 16 进制字符串直接截取前面一半作为 key 和 iv,我就想不懂,这怎么能解密 m3u8 视频,没有看到一篇文章是讲讲转换的事的,AES-128-cbc 对应的是 key 是 16 位的***字节串***,如果得到的 key 长度对不上,肯定是做了其他处理的
    iOSyongqian
        16
    iOSyongqian  
       2021-04-12 18:45:32 +08:00
    @Subdue 我最近就是在一个 AES-128 的 m3u 文件中得到一个 32 字节大小的 key 文件,但是 AES.py 源文件中有提示
    It must be 16 (*AES-128*), 24 (*AES-192*), or 32 (*AES-256*) bytes long.
    因此也觉得很诡异
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5489 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:31 · PVG 16:31 · LAX 00:31 · JFK 03:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.