2009-06-10 9 views
8

Esto puede o no ser un tema de área gris, aunque mis intenciones ciertamente no lo son, así que mi intención no es provocar un debate ético sobre el tema de ingeniería inversa.Ingeniería inversa un archivo de datos estadísticos de mi controlador de bomba de insulina

Soy diabético tipo 1 y actualmente estoy recibiendo terapia de bomba. Soy un usuario de OmniPod, es una cápsula desechable que se adhiere a mi cuerpo y dispensa insulina durante 3 días. Está controlado por un administrador personal de diabetes [PDM] (ver a continuación) que controla la cantidad de insulina que se debe dispensar durante las comidas, las lecturas de azúcar en sangre y contiene un índice de alimentos para el conteo de carbohidratos sobre la marcha.

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

El nuevo PDM tiene un puerto USB para la descarga de datos. El software es gratuito para los usuarios de Windows (un paquete llamado CoPilot), pero no admite Mac.

Al conectar el PDM a mi Mac, se montó como cualquier otro dispositivo USB y me ofreció un volumen legible con un único archivo con una extensión IBF. Pesa 16 KB.

Mi primer instinto fue pasarlo a través de un editor de texto y se presentó con un archivo de aspecto muy binario. Luego lo pasé a través de cadenas (ver a continuación) y lo abrí con un editor hexadecimal. Aunque no pude obtener mucha información aparte de las siguientes; sin detalles de formato de compresión ni nada.

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

¿Cuál debería ser mi próximo paso en este proceso? Soy un tipo de lenguaje dinámico, por lo que cualquier recurso para Ruby sería genial, o Python. ¿Hay algún proceso de ingeniería inversa impulsado por prueba?

En cuanto a los datos que busco obtener, es información que me gustaría obtener para obtener más información sobre mi progreso (consumo de insulina, lecturas de azúcar en la sangre, marcas de tiempo); todo lo cual es posible en el paquete de software de Windows.

Respuesta

3

Lo que haría después es intentar y encontrar algunos números. Hay un montón de maneras en que los números podrían ser codificados:

  • Entrs (1, 2, 4 bytes, varios endianness)
  • de coma flotante (de diferentes tamaños)
  • punto fijo o algún otro formato extraño

Tiene la ventaja de saber algunos números que van a estar allí, ya que puede ver los datos en la pantalla. Así que buscaría esos números en el archivo (en los diversos formatos anteriores). Esto debería darte algunos datos, como mínimo.

A continuación, mencione las marcas de tiempo. Las marcas de tiempo suelen ser bastante sencillas, ya que invariablemente son entradas sin signo de 32 bits, y tiene un buen rango de alcance (tiempo() +/- unos 100.000).Así que busca los ints cerca de allí.

Puede hacer todo esto a mano con un editor hexadecimal o escribir un pequeño guión. Una vez que comienzas a obtener algunos datos, busca patrones. Esto debería ayudar mucho a encontrar campos más interesantes. ¡Buena suerte!

1

Comenzaría a buscar una representación hexadecimal de los valores conocidos. ¿El dispositivo (como se muestra en la imagen) tiene una pantalla, o puede mirar en las ventanas?

Si puede, por ejemplo, encontrar una serie de números en hexadecimal que haya encontrado dentro de la versión de Windows, es posible que pueda averiguar el formato de "registro". Al verlo, parece contener algún tipo de información de encabezado/versión y una serie de registros con valores numéricos codificados en hexadecimal.

Eso debería darle un buen punto de partida.

+0

Puedo desenterrar algunas capturas de pantalla, ¡buena idea, gracias! – mwilliams

1

Me gustaría ejecutar una máquina virtual para la versión de Windows y usar ollydbg para montarla inversamente. Esa es su mejor opción en lugar de mirar un archivo binario y adivinar qué variables se correlacionan con qué compensación.

Sin embargo, probablemente no sea la mejor idea jugar con su propia bomba de insulina. Suponiendo que el archivo manipula la bomba.

+0

El archivo de datos está fuera de mi PDM y solo para uso de estadísticas. No volveré a transferir el archivo ni interferiré con la funcionalidad del PDM. En cuanto a una VM, sí, podría, sin embargo, no comprar una licencia de Windows para esto. – mwilliams

Cuestiones relacionadas