9

这可能是也可能不是一个灰色地带的主题,尽管我的意图肯定不是,所以我的意图不是激起关于逆向工程主题的道德辩论。

我是一名 1 型糖尿病患者,目前正在接受泵治疗。我是OmniPod用户,它是一种一次性豆荚,可以贴在我的身体上并分配 3 天的胰岛素。它由个人糖尿病经理 [PDM](见下文)控制,该经理控制在用餐期间分配多少胰岛素、血糖读数,并且它包含一个食物指数,用于在旅途中计算碳水化合物。

替代文字
(来源:myomnipod.com

新的 PDM 有一个用于下载数据的 USB 端口。该软件对 Windows 用户免费(名为 CoPilot 的软件包),但不支持 Mac。

将 PDM 插入我的 Mac 后,它像任何其他 USB 设备一样安装,并为我提供了一个可读的卷,上面有一个带有 IBF 扩展名的文件。它的重量为 16KB。

我的第一个直觉是通过文本编辑器传递它,并得到一个看起来非常二进制的文件。然后我通过字符串传递它(见下文)并用十六进制编辑器打开它。尽管除了下面的字符串之外我无法获得太多信息;没有压缩格式细节或任何东西。

$ strings omnipoddata.ibf 
Insulet
OmniPod
basal 1
Post-meal
e-meal
Pre-meal
e-bedtime
Pre-bedtime
.(@P
.(@P
.(@P

我在这个过程中的下一步应该是什么?我是一个动态语言专家,所以任何 Ruby 或 Python 的资源都会很棒。是否有任何测试驱动的逆向工程流程?

就我希望获得的数据而言,我想将这些信息绘制成图表以获得有关我的进度的更多信息(胰岛素摄入量、血糖读数、时间戳);所有这些都可以在 Windows 软件包中实现。

4

3 回答 3

3

我接下来要做的是尝试找到一些数字。有很多方法可以对数字进行编码:

  • 整数(1、2、4 字节,各种字节序)
  • 浮点数(各种大小)
  • 定点或其他一些奇怪的格式

您的优势在于知道其中的一些数字,因为您可以在屏幕上看到数据。所以我会在文件中查找这些数字(以上面的各种格式)。这至少应该给你一些数据。

接下来,您提到时间戳。时间戳通常很简单,因为它们总是 32 位无符号整数,而且你有一个很好的范围(time() +/- 几十万)。所以在附近寻找整数。

您可以使用十六进制编辑器手动完成所有这些操作或编写一个小脚本。一旦你开始获取一些数据,寻找模式。这应该有助于找到更多有趣的领域。祝你好运!

于 2009-06-10T21:40:21.943 回答
1

我会开始寻找已知值的十六进制表示。该设备(如图所示)是否有屏幕,或者您可以在 Windows 中查看吗?

比如说,如果你能找到你在 Windows 版本中找到的一系列十六进制数字,你也许能够找出“记录”格式。看着它,它似乎包含某种标题/版本信息,以及一系列具有十六进制编码数值的记录。

这应该给你一个很好的起点。

于 2009-06-10T21:39:38.607 回答
1

我只会为 Windows 版本运行一个 VM,然后使用 ollydbg 反向组装它。这是您最好的选择,而不是盯着二进制文件并猜测哪些变量与哪些偏移量相关。

不过,弄乱自己的胰岛素泵可能不是最聪明的主意。假设文件操纵泵。

于 2009-06-10T21:47:59.120 回答