2009-06-10 9 views
8

Questo può o non può essere un argomento di area grigia, anche se le mie intenzioni non lo sono, quindi la mia intenzione non è quella di suscitare un dibattito etico sul tema del reverse engineering.Reverse engineering di un file di dati statistici dal mio controller per pompa per insulina

Sono un diabetico di tipo 1 attualmente sottoposto a terapia con pompa. Sono un utente OmniPod, è un pod monouso che aderisce al mio corpo e distribuisce l'insulina per 3 giorni. È controllato da un gestore personale del diabete [PDM] (visto sotto) che controlla la quantità di insulina da dosare durante i pasti, le letture di zucchero in polvere e contiene un indice alimentare per il conteggio dei carboidrati in movimento.

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

Il nuovo PDM ha una porta USB per il download dei dati. Il software è gratuito per gli utenti di Windows (un pacchetto chiamato CoPilot), ma non c'è supporto per Mac.

Dopo aver collegato il PDM al mio Mac, è montato come qualsiasi altro dispositivo USB e mi ha presentato un volume leggibile con un singolo file su di esso con un'estensione IBF. Pesa a 16KB.

Il mio primo istinto è stato quello di passare attraverso un editor di testo e mi è stato presentato un file molto binario. L'ho poi passato attraverso le stringhe (vedi sotto) e l'ho aperto con un editor esadecimale. Anche se non ho potuto ottenere molte informazioni oltre alle stringhe sottostanti; nessun dettaglio del formato di compressione o altro

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

Quale dovrebbe essere il mio prossimo passo in questo processo? Sono un ragazzo di linguaggio dinamico, quindi qualsiasi risorsa per Ruby sarebbe grande, o Python. Esistono processi di reverse engineering testati?

Per quanto riguarda i dati che sto cercando di ottenere, sono le informazioni che vorrei tracciare per ottenere maggiori informazioni sui miei progressi (assunzione di insulina, valori di zucchero nel sangue, timestamp); tutto ciò è possibile nel pacchetto software di Windows.

risposta

3

Quello che farei dopo è cercare di trovare dei numeri. C'è un gruppo di modi i numeri potrebbero essere codificati:

  • Ints (1, 2, 4 byte, vari endianness)
  • virgola mobile (di varie dimensioni)
  • punto fisso o qualche altro formato strano

Hai il vantaggio di conoscere alcuni numeri che stanno per essere lì, dato che puoi vedere i dati sullo schermo. Quindi cercherei quei numeri nel file (nei vari formati sopra). Questo dovrebbe darti alcuni dati, come minimo.

Successivamente, si parla di timestamp. I timestamp di solito sono piuttosto semplici, perché sono invariabilmente a 32 bit senza segno, e si ha un buon intervallo di ballpark (time() +/- un centinaio di 100.000).Quindi cerca gli intimi lì vicino.

Si può fare tutto questo a mano con un editor esadecimale o scrivere un piccolo script. Una volta che inizi a ottenere alcuni dati, cerca i modelli. Questo dovrebbe aiutare molto nel trovare campi più interessanti. In bocca al lupo!

1

Vorrei iniziare a cercare la rappresentazione esadecimale di valori noti. Il dispositivo (come nella foto) ha uno schermo o puoi guardare in Windows?

Se è possibile, ad esempio, trovare una serie di numeri in esadecimale che è stata trovata nella versione di Windows, è possibile essere in grado di capire il formato "record". Guardandolo, sembra contenere qualche tipo di informazione su header/versione e una serie di record con valori numerici con codifica esadecimale.

Questo dovrebbe darti un buon punto di partenza.

+0

Posso recuperare alcuni screenshot, buona idea, grazie! – mwilliams

1

Vorrei solo eseguire una VM per la versione di Windows e utilizzare ollydbg per invertire il montaggio. Questa è la tua migliore scommessa invece di fissare un file binario e indovinare quali variabili sono correlate a quale offset.

La messaggistica con il proprio microinfusore non è probabilmente l'idea più intelligente. Supponendo che il file manipoli la pompa.

+0

Il file di dati è fuori dal mio PDM ed è solo per uso statistico. Non trasferirò il file indietro o interferire con la funzionalità con il PDM. Per quanto riguarda una VM, sì, potrei, tuttavia, non ho intenzione di acquistare una licenza di Windows per questo. – mwilliams

Problemi correlati