如果我有这些文件之一的内容,则破解二进制文件格式

Cracking a binary file format if I have the contents of one of these files

我有大约 300 个测量值(每个都存储在一个 dat 文件中),我想使用 MATLAB 或 Python 读取这些测量值。可以使用专有程序将文件导出为文本或 csv,但这必须一个一个地完成。

问题是:使用导出文件中的已知内容破解二进制文件格式的最佳方法是什么?

不确定这是否会使破解更容易,但文件只是两列 (900k) 数字,从 dat 文件的大小(1,800,668 字节)来看,似乎每个数字都是16 位(浮点数)还有一些其他信息(可能是 header)。

我尝试使用 HEX-Editor,但无法从那里获得任何趋势。

最后,我想确定的是,这些是我所做的测量,其中的数据属于我。我没有尝试获取我不应该获取的数据。

感谢您的帮助。

编辑:多读一点我意识到我正在进行某种压缩。当您查看 StreamWare 中的数据时,它给出了 7 个小数位,这让我相信它是一个单精度值(4 个字节)。但是,文件的大小表明每个值只占用 2 个字节。

想了想,终于想通了。这是非常具体的,但以防万一另一个 Dantec StreamWare 用户遇到同样的问题,它可以节省 him/her 一点时间。

首先,数据实际上只是一个向量。时间列是根据记录信号的长度和采样频率计算得出的。该信息可能在 header 中(但我无法破解该部分)。

为了在 MATLAB 中获取值,我使用 fseek(fid, 668, 'bof') 跳过了 header 字节,然后使用 fread(fid, 900000, 'uint16') 将数据读取为 uint16。这给你整数。

要获得浮点值,您只需除以 2^16(这是一个 16 位分辨率系统)并乘以 10。我假设因子 10 取决于您的数据采集系统的范围。

希望对您有所帮助。