8

我的一个朋友前几天提出了这个问题,他最近买了一个 garmin 心率监测设备,可以跟踪他的心率,并允许他将一天的心率统计数据上传到他的电脑。

唯一的问题是 garmin USB 设备没有 linux 驱动程序,他设法解释了一些数据,例如型号和他的用户详细信息,并发现本质上存在一些二进制数据表,我们假设它们代表一系列记录他的心率和记录的时间。

当您对结构一无所知时,逆向工程数据从哪里开始?

4

8 回答 8

4

我遇到了同样的问题,最初在 Google Code 上发现了这个项目,该项目旨在为 Garmin 设备完成跨平台版本的工具……请参阅:http ://code.google.com/p/garmintools/ 。该项目的首页上有一个链接,指向您需要的协议,Garmin 考虑周到,可以公开发布。

这是 Garmin I/O 规范的直接链接:http ://www.garmin.com/support/pdf/IOSDK.zip

于 2008-09-22T16:22:14.220 回答
1

我会开始在十六进制编辑器中查看数据,希望是一个知道最常见编码(ASCII、Unicode 等)的好编辑器,然后尝试从您知道它已存储的数据中理解它。

于 2008-09-22T16:21:48.947 回答
1

正如另一张海报所提到的,逆向工程可能很麻烦,不是在实践中而是在合法性上。

话虽如此,您可以通过查看此项目及其代码来找到与您手头的根本问题相关的所有内容......并且他们也处理跑步者的心率/GPS组合数据

http://www.gpsbabel.org/

于 2008-09-22T16:24:20.937 回答
0

我建议您首先检查您所在国家/地区的逆向工程的合法性。大多数国家对逆向工程设备和代码的允许和不允许有非常严格的法律。

于 2008-09-22T16:19:46.767 回答
0

我将首先查看设备正在发送哪些数据,然后考虑如何表示和打包这些数据。

我会首先捕获许多样本,看看是否有任何模式出现,因为心跳是有规律的,这表明它是与心脏本身相关的测量值。我还会寻找单调增加的位字段,因为这会暗示某种时间戳。

在对什么在哪里形成一个假设后,我会编写一个程序来测试它并绘制结果图表,看看它是否有意义。如果确实如此,但不完全如此,那么仔细检查可能会发现您需要一些缩放因子在这里或那里。也完全有可能我需要先处理数据,然后才能看起来像他们的程序显示的那样,即可能需要整合数据点。如果我得到垃圾,那么它又回到了绘图板上:-)

我还会查看制造商的网站,或者strings在他们的二进制文件上运行。寻找在生物医学工程领域工作的人也会在我的名单上,因为他们可能知道通常使用哪些协议(如果有的话)。我还会寻找这些协议,看看是否可以将任何协议应用于我看到的数据。

于 2008-09-22T16:28:24.703 回答
0

我将从创建数据的十六进制转储开始。估计它可能被一些 2 次方大小的块阻塞了。开始寻找重复的模式。想想他们可能发送什么样的数据。他们要么单独记录每次心跳,要么记录传感器以固定间隔发送的任何内容。如果是单独的节拍,那么将有一个时间增量(从最后一个节拍开始)、一个持续时间以及某种最大或平均强度。如果它是固定间隔,那么它可能是一个简单的读数向量。可能会有某种序言,带有开始时间戳和采样率。您可以尝试自己解码时间戳,或者您可以尝试简单地将其输入ctime()并查看它们是否使用标准的绝对时间格式。

请记住,许多廉价的 A/D 转换器仅产生 12 位输出,因此您的读数不太可能大于 16 位(高位 4 位可能用于标志)。我建议将设备重置为“空白”,转储并存储内容,然后读取一组读数,记录结果(无论设备通常报告什么),然后再次转储内容并尝试关联记录的结果在“空白”转储之后出现的任何数据。

于 2010-03-05T19:39:38.700 回答
0

不确定这是否是您正在寻找的,但 Garmin 已经创建了一个与您的浏览器一起运行的 API。似乎支持 OSX 以及 Windows 浏览器......我会从 Google Chromium 尝试它,看看它是否可以用来代替这种逆向工程......

http://developer.garmin.com/web-device/garmin-communicator-plugin/

API 功能

自动检测连接到计算机的设备 访问设备产品信息,例如产品名称和软件版本 从支持的娱乐、健身和导航设备读取轨迹、路线和航点 将航迹、路线和航点写入支持的娱乐、健身和导航设备 读取健身来自支持的健身设备的数据 地理编码地址并作为航点或收藏夹保存到设备 读写 Garmin XML 文件(GPX 和 TCX)以及二进制文件。支持大多数 Garmin 设备(USB、USB 大容量存储设备、大多数串行设备) 支持 Microsoft Windows 上的 Internet Explorer、Firefox 和 Chrome。在 Mac OS X 上支持 Safari、Firefox 和 Chrome。

于 2013-09-17T21:28:54.450 回答
-1

你能用电脑扬声器之类的东西合成心跳吗?(我不知道这些设备实际上是如何工作的)。观察二进制结果如何根据不同的输入而变化。

拆开设备并检查里面的东西可能也会有所帮助。

于 2008-09-22T16:21:14.207 回答