Frage

Dies kann oder kann nicht eine Grauzone unterliegen, obwohl meine Absichten sind sicherlich nicht, so meine Absicht nicht zu schüren eine ethische Debatte zum Thema Reverse-Engineering ist.

Ich bin ein Typ-1-Diabetes derzeit Pumpentherapie unterziehen. Ich bin ein OmniPod Benutzer, es ist ein Einweg-pod, die zu meinem Körper haftet und Insulin verabreicht für 3 Tage. Es ist von einem persönlichen Diabetes-Manager gesteuert [PDM] (unten zu sehen), die, wie viel Insulin steuert während der Mahlzeiten, bloor Zuckerwerte zu verzichten, und es enthält für carb Zählen auf dem Sprung einen Nahrungsmittelindex.


(Quelle: myomnipod.com )

Das neue PDM verfügt über einen USB-Port für das Herunterladen von Daten. Die Software ist kostenlos für Windows-Anwender (ein Paket namens Copiloten), aber es gibt keine Mac-Unterstützung.

Nach dem PDM in meinen Mac anschließen, montierte es wie jedes anderes USB-Gerät würde und stellte mich mit einem lesbaren Volumen mit einer einzigen Datei auf sich mit einer IBF-Erweiterung. Es wiegt bei 16KB.

Mein erster Instinkt war es durch einen Texteditor zu übergeben und war mit einer sehr binären suchen Datei dargestellt. Ich ging dann durch Zeichenkette (siehe unten) und öffnete sie mit einem Hex-Editor auf. Obwohl ich konnte nicht viele Informationen beiseite unten von den Saiten gewinnen; kein Kompressionsformat Details oder sonst etwas.

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

Was soll mein nächster Schritt in diesem Prozess sein? Ich bin eine dynamische Sprache Kerl, so dass alle Ressourcen für Ruby wäre toll, oder Python. Gibt es irgendwelche Test Reverse-Engineering-Prozesse angetrieben?

Was die Daten zu erhalten, ich bin auf der Suche, dann ist es Informationen, die ich mehr Informationen über meine Fortschritte (Insulinaufnahme, Blutzuckerwerte, Zeitstempel) entwerfen möchte zu gewinnen; was alles möglich in dem Windows-Software-Paket.

War es hilfreich?

Lösung

Was ich tun würde, ist nächstes versuchen und ein paar Zahlen zu finden. Es gibt eine Reihe von Möglichkeiten der Zahlen codiert werden:

  • Ints (1, 2, 4 Bytes, verschiedene Endian)
  • Gleitkommaoperationen (in verschiedenen Größen)
  • Festpunkt oder ein anderes seltsames Format

Sie haben den Vorteil, einige Zahlen zu kennen, die dort sein werden, da Sie die Daten auf dem Bildschirm sehen können. Also würde ich für diese Zahlen in der Datei suchen (in den verschiedenen Formaten weiter oben). Dies sollten Sie einige Daten geben, bei Minimum.

Als nächstes erwähnen Sie Zeitstempel. Zeitmarken sind in der Regel recht einfach, weil sie immer 32-Bit unsigned ints sind, und Sie haben eine gute Baseballstadion Bereich (time () +/- ein paar 100.000). So suchen Sie nach Ints in der Nähe gibt.

Sie können von Hand mit einem Hex-Editor alles tun oder ein kleines Skript schreiben. Nachdem Sie einige Daten beginnen immer, suchen nach Mustern. Dies sollte viel mit der Suche nach interessanten Bereichen helfen. Viel Glück!

Andere Tipps

Ich würde beginnen für Hex-Darstellung von bekannten Werten suchen. Ist das Gerät (wie abgebildet) haben einen Bildschirm, oder können Sie sich in den Fenstern?

Wenn Sie können, sagen wir, eine Reihe von Zahlen in hex finden, die Sie in der Windows-Version gefunden haben, können Sie in der Lage sein, die ‚Record‘ Format, um herauszufinden. Betrachtet man es, so scheint es eine Art von Header / Versionsinformationen zu enthalten, und eine Reihe von Datensätzen mit Hex-codierten numerischen Werte.

Das sollten Sie einen guten Ausgangspunkt.

Ich würde nur eine VM für die Windows-Version laufen und verwenden OllyDbg es eine Rückübersetzung. Das ist die beste Wahl, anstatt in einer Binärdatei zu starren und zu erraten, welche Variablen korrelieren mit dem, was gegenüber.

mit Ihrem eigenen Insulinpumpe Spielerisch ist wahrscheinlich nicht die klügste Idee aber. Unter der Annahme, dass die Datei die Pumpe manipuliert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top