2009-06-10 1 views
8

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

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

alt text http://www.myomnipod.com/images/pdm-200.jpg

Новый ДПМ имеет 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.

ответ

3

Что я буду делать дальше, попробуйте найти некоторые цифры. Там куча способов их число может быть закодирован:

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

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

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

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

1

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

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

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

+0

Я могу выкопать некоторые скриншоты, хорошая идея, спасибо! – mwilliams

1

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

Мессинг с вашей собственной инсулиновой помпой, вероятно, не самая умная идея. Предполагая, что файл управляет насосом.

+0

Файл данных отключен от моего PDM и используется только для статистики. Я не буду передавать файл обратно или вообще мешать функциям с PDM. Что касается виртуальной машины, да, я мог бы, однако, не собираюсь покупать лицензию Windows для этого. – mwilliams

Смежные вопросы