首页 > 解决方案 > 如果我有这些文件之一的内容,则破解二进制文件格式

问题描述

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

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

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

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

最后,我想确保指定这些是我所做的测量,并且其中的数据属于我。我不是试图获取我不应该获取的数据。

谢谢你的帮助。

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

标签: binarycracking

解决方案


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

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

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

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

我希望这有帮助。


推荐阅读