Domanda

Questo può o non può essere una zona grigia soggetto, anche se le mie intenzioni non sono certo, quindi la mia intenzione non è quella di suscitare un dibattito etico sul tema della reverse engineering.

Sono un diabetico di tipo 1 attualmente in fase di terapia con microinfusore. Sono un rel="nofollow utente OmniPod , è un baccello usa e getta che aderisce al mio corpo ed eroga insulina per 3 giorni. E 'controllato da un responsabile del diabete personal [PDM] (vedere sotto), che controlla la quantità di insulina per erogare durante i pasti, letture di zucchero Bloor, e contiene un indice di cibo per il conteggio carb in movimento.

alt text
(fonte: myomnipod.com )

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

Al momento di collegare il PDM nel mio Mac, è montato come qualsiasi altro dispositivo USB sarebbe e mi ha presentato con un volume leggibile con un singolo file su di esso con un'estensione IBF. Pesa 16KB.

Il mio primo istinto è stato quello di passare attraverso un editor di testo ed è stato presentato con un file guardando molto binario. Ho poi passato attraverso le stringhe (vedi sotto) e lo aprì con un editor esadecimale. Anche se non ho potuto ottenere molte informazioni da parte dalle corde sottostanti; Nessun dettaglio 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 linguaggio dinamico, in modo da alcuna risorsa per Ruby sarebbe bello, o Python. Ci sono dei test driven processi di reverse engineering?

Per quanto riguarda i dati che sto cercando di ottenere, è informazioni Vorrei grafico per ottenere ulteriori informazioni sullo stato di avanzamento (assunzione di insulina, letture di zucchero nel sangue, timestamp); ognuno dei quali è possibile nel pacchetto software di Windows.

È stato utile?

Soluzione

Cosa vorrei fare successivo è cercare di trovare alcuni numeri. C'è un sacco 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 sapere alcuni numeri che stanno per essere lì, dato che è possibile vedere i dati sullo schermo. Così mi piacerebbe cercare quei numeri nel file (nei vari formati in precedenza). Questo dovrebbe dare alcuni dati, come minimo.

Successivamente, si menziona timestamp. Timestamps sono di solito abbastanza facile, perché sono sempre a 32 bit unsigned int, e si dispone di una buona gamma ballpark (time () +/- alcuni 100.000). In modo da cercare interi lì vicino.

Si può fare tutto questo a mano con un editor esadecimale o scrivere un piccolo script. Una volta che si avvia sempre alcuni dati fuori, cercare i modelli. Questo dovrebbe aiutare molto a trovare i campi più interessanti. Buona fortuna!

Altri suggerimenti

Mi piacerebbe iniziare alla ricerca di hex-rappresentazione dei valori noti. Fa il dispositivo (come nella foto) avere uno schermo, o si può guardare in finestre?

Se è possibile, ad esempio, trovare una serie di numeri in esadecimale che avete trovato all'interno della versione di Windows, si potrebbe essere in grado di capire il formato del 'record'. Guardando la cosa, sembra contenere un qualche tipo di informazioni di intestazione / versione, e una serie di record con i valori numerici esadecimali codificati.

Questo dovrebbe dare un buon punto di partenza.

Vorrei solo eseguire una macchina virtuale per la versione di Windows e utilizzare OllyDbg per invertire assemblare. Che è la soluzione migliore, invece di fissare un file binario e indovinare quali variabili correlano con quello di offset.

Giochi con la propria pompa di insulina non è probabilmente l'idea più intelligente però. Supponendo che il file manipola la pompa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top