Reverse engineering d'un fichier de données statistiques de mon contrôleur de pompe à insuline

StackOverflow https://stackoverflow.com/questions/978270

Question

Cela peut ou peut ne pas être un sujet de zone grise, bien que mes intentions ne sont certainement pas, donc mon intention est de ne pas susciter un débat éthique sur le thème de l'ingénierie inverse.

Je suis un diabétique de type 1 subit actuellement un traitement par pompe. Je suis un l'utilisateur de OmniPod, il est un pod jetable qui adhère à mon corps et distribue l'insuline pendant 3 jours. Il est contrôlé par un gestionnaire de diabète personnel [PDM] (voir ci-dessous) qui contrôle la quantité d'insuline à distribuer lors des repas, des lectures de sucre Bloor, et il contient un index alimentaire pour le comptage des glucides sur la route.


(source: myomnipod.com )

Le nouveau PDM dispose d'un port USB pour le téléchargement de données. Le logiciel est gratuit pour les utilisateurs de Windows (un package appelé CoPilot), mais il n'y a pas de support Mac.

Lors de brancher le PDM dans mon Mac, il est monté comme tout autre périphérique USB ne me présente avec un volume lisible avec un seul fichier sur elle avec une extension IBF. Il pèse 16 Ko.

Mon premier instinct était de passer par un éditeur de texte et a été présenté avec un fichier binaire très à la recherche. Je me suis alors passé à travers des chaînes (voir ci-dessous) et l'ouvre avec un éditeur hexadécimal. Bien que je ne pouvais pas gagner de côté beaucoup d'informations des chaînes ci-dessous; pas les détails du format de compression ou quoi que ce soit.

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

Quelle devrait être la prochaine étape dans ce processus? Je suis un gars de langage dynamique, de sorte que toutes les ressources pour Ruby serait génial ou Python. Y at-il piloté par les tests des processus d'ingénierie inverse?

En ce qui concerne les données que je suis à la recherche d'obtenir, il est l'information que je voudrais tracer pour obtenir plus d'informations sur mes progrès (de la prise d'insuline, des lectures de sucre dans le sang, horodatages); tous ce qui est possible dans le package logiciel Windows.

Était-ce utile?

La solution

Qu'est-ce que je ferais à côté est d'essayer et de trouver quelques chiffres. Il y a un tas de façons les chiffres pourraient être codés:

  • Ints (1, 2, 4 octets, divers endianness)
  • virgule flottante (de différentes tailles)
  • point fixe ou un autre format étrange

Vous avez l'avantage de connaître quelques chiffres qui vont être là-bas, puisque vous pouvez voir les données sur l'écran. Donc, je cherche ces chiffres dans le fichier (dans les différents formats ci-dessus). Cela devrait vous donner des données, au minimum.

Ensuite, vous mentionnez horodatages. Horodatages sont généralement assez facile, parce qu'ils sont toujours ints 32 bits non signés, et vous avez une bonne gamme de stade de baseball (heure () +/- quelques 100 000). Alors chercher ints près de là.

Vous pouvez faire tout cela à la main avec un éditeur hexadécimal ou écrire un petit script. Une fois que vous commencez à obtenir des données sur, rechercher des modèles. Cela devrait aider beaucoup à trouver des domaines plus intéressants. Bonne chance!

Autres conseils

Je commence à chercher hex-représentation des valeurs connues. Est-ce que l'appareil (comme sur la photo) ont un écran, ou pouvez-vous regarder dans les fenêtres?

Si vous pouvez, par exemple, trouver une série de chiffres en hexadécimal que vous avez trouvé dans la version Windows, vous pourriez être en mesure de comprendre le format « record ». En regardant, il semble contenir une sorte d'informations en-tête / version, et une série d'enregistrements avec des valeurs numériques hexadécimaux codés.

Cela devrait vous donner un bon point de départ.

Je voudrais juste lancer une machine virtuelle pour la version Windows et utiliser ollydbg pour inverser l'assembler. C'est votre meilleur pari au lieu de regarder un fichier binaire et deviner quelles sont les variables en corrélation avec ce décalage.

Messing avec votre propre pompe à insuline est probablement pas le plus intelligent idée cependant. En supposant que le fichier manipule la pompe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top