首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解码二进制/十六进制WAV文件元数据的建议- Pro Tools UMID块

解码二进制/十六进制WAV文件元数据的建议- Pro Tools UMID块
EN

Stack Overflow用户
提问于 2019-12-18 02:08:40
回答 1查看 289关注 0票数 1

Pro工具(AVID的DAW软件)有一个使用Unique ID字段管理和链接所有它的唯一媒体的过程,该字段以umid元数据块的形式嵌入到WAV文件中。通过查看Pro工具中的特定文件,我可以看到该文件的Unique ID以11个字符串的形式出现,类似于:rS9ipS!x6Tf

当我检查WAV文件中的原始数据时,我发现一个32字节的数据块--字符‘umid’的4个字节;下面的数据块的大小为4个字节- 24;然后是24字节的数据块,如果在十六进制中查看,它看起来如下:

00000000 0000002A 5B7A5FFB 0F23DB11 00000000 00000000

正如您所看到的,只有9个字节包含任何非零的信息,但这在某种程度上被用来存储11个char Unique ID字段。在我看来,似乎正在做一些事情来解释这些原始数据以检索唯一的ID字符串,但我对原始数据进行解码的所有尝试都没有取得任何成果。我尝试过使用https://gchq.github.io/CyberChef/来运行所有不同的格式,这些格式都是有意义的,但它并没有为我指明正确的方向。我还试着以6位增量的方式查看数据,看看是否正在以某种方式压缩数据(9字节*8位、== 72位、== 12位、块*6位),但还没有找到一个模式。

因此,我想知道是否有人有任何具体的技巧/技巧/建议,如何最好地了解这里可能发生的事情--如何以这样一种方式解压这些数据,以便我最终能够得到足够的信息来生成这11个字符,其中最有可能的是UTF-8。

欢迎任何帮助/建议!谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-04 04:45:30

它似乎是一个base64编码,只有一个稍微不同的字符映射,这里是我的python实现,我发现最好的匹配Pro工具。

代码语言:javascript
运行
复制
char_map = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#!"

def encode_unique_id(uint64_value):
    # unique id is a uint64_t, clamp
    value = uint64_value & 0xFFFFFFFFFFFFFFFF
    if value == 0:
        return ""

    # calculate the min number of bytes
    # needed store value for int
    byte_length = 0
    tmp = value
    while tmp:
        tmp =tmp >> 8
        byte_length += 1

    # calculate number of chars needed to store encoding
    char_total, remainder = divmod(byte_length * 8, 6)
    if remainder:
        char_total += 1

    s = ""
    for i in range(char_total):
        value, index = divmod(value, 64)
        s += char_map[index]
    return s

运行encode_unique_id(0x2A5B7A5FFB0F23DB11)应该会为您提供rS9ipS!x6Tf

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59384539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档