Реверс-инжиниринг файла статистических данных из моего контроллера инсулиновой помпы

Это может быть, а может и не быть темой серой зоны, хотя в мои намерения, конечно же, нет, поэтому я не намерен разжигать этические дебаты по теме реверс-инжиниринга.

Я диабетик 1 типа, сейчас прохожу помповую терапию. Я пользуюсь OmniPod. Это одноразовая капсула, которая прикрепляется к моему телу и выдает инсулин на 3 дня. Он контролируется личным диабетическим менеджером [PDM] (см. Ниже), который контролирует, сколько инсулина выдавать во время еды, показания сахара в крови и содержит пищевой индекс для подсчета углеводов на ходу.

alt text
(источник: myomnipod .com)

Новый PDM имеет порт USB для загрузки данных. Программное обеспечение бесплатно для пользователей Windows (пакет под названием CoPilot), но не поддерживает Mac.

После подключения PDM к моему Mac он смонтировался, как и любое другое USB-устройство, и предоставил мне читаемый том с одним файлом на нем с расширением IBF. Он весит 16 КБ.

Моим первым побуждением было пропустить его через текстовый редактор, и мне представился очень двоичный файл. Затем я пропустил его через строки (см. ниже) и открыл его с помощью шестнадцатеричного редактора. Хотя я не мог получить много информации, кроме строк ниже; никаких подробностей о формате сжатия или чего-то еще.

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

Каким должен быть мой следующий шаг в этом процессе? Я специалист по динамическим языкам, поэтому любые ресурсы для Ruby или Python будут отличным вариантом. Существуют ли какие-либо процессы обратного проектирования, основанные на тестировании?

Что касается данных, которые я хочу получить, это информация, которую я хотел бы нанести на карту, чтобы получить больше информации о моем прогрессе (прием инсулина, показания сахара в крови, временные метки); все это возможно в программном пакете Windows.


person mwilliams    schedule 10.06.2009    source источник
comment
Моя девушка тоже диабетик, вы решили эту проблему, так как я тоже хотел бы перепроектировать файл   -  person user613326    schedule 08.08.2018


Ответы (3)


Что бы я сделал дальше, это попытался бы найти некоторые числа. Существует множество способов кодирования чисел:

  • Целые числа (1, 2, 4 байта, различный порядок следования байтов)
  • С плавающей запятой (различных размеров)
  • Фиксированная точка или какой-то другой странный формат

У вас есть преимущество в том, что вы знаете некоторые числа, которые там будут, поскольку вы можете видеть данные на экране. Поэтому я бы искал эти числа в файле (в различных форматах выше). Это должно дать вам как минимум некоторые данные.

Затем вы упоминаете временные метки. Временные метки обычно довольно просты, потому что они неизменно представляют собой 32-битные целые числа без знака, и у вас есть хороший приблизительный диапазон (time() +/- несколько 100 000). Так что ищите ints рядом.

Все это можно сделать вручную с помощью hex-редактора или написать небольшой скрипт. Как только вы начнете получать какие-то данные, ищите закономерности. Это должно сильно помочь в поиске более интересных полей. Удачи!

person Jacob B    schedule 10.06.2009

Я бы начал искать шестнадцатеричное представление известных значений. Есть ли у устройства (как на фото) экран, или можно посмотреть в винде?

Если вы можете, скажем, найти ряд шестнадцатеричных чисел, которые вы нашли в версии для Windows, возможно, вы сможете определить формат «записи». Глядя на него, кажется, что он содержит какую-то информацию о заголовке/версии и серию записей с числовыми значениями в шестнадцатеричном коде.

Это должно дать вам хорошую отправную точку.

person Alex Taylor    schedule 10.06.2009

Я бы просто запустил виртуальную машину для версии Windows и использовал ollydbg для ее обратной сборки. Это ваш лучший выбор вместо того, чтобы смотреть на двоичный файл и угадывать, какие переменные коррелируют с каким смещением.

Однако возиться с собственной инсулиновой помпой, вероятно, не самая умная идея. Предполагая, что файл манипулирует насосом.

person Unknown    schedule 10.06.2009
comment
Файл данных отсутствует в моем PDM и предназначен только для использования в статистике. Я не буду передавать файл обратно или вмешиваться в работу PDM вообще. Что касается ВМ, то да, мог бы, однако я не собираюсь приобретать для этого лицензию Windows. - person mwilliams; 11.06.2009