Wie würden Sie eine Reihe von binären Daten, die von einem Gerät gezogen wurden, rückentwickeln?

8

Ein Freund von mir brachte diese Frage auf, er hat vor kurzem ein Garmin-Herzfrequenz-Messgerät gekauft, das seine Herzfrequenz überwacht und ihm erlaubt, seine Herzfrequenz-Werte für einen Tag auf seinen Computer hochzuladen.

>

Das einzige Problem ist, dass es keine Linux-Treiber für das Garmin-USB-Gerät gibt. Er hat einige der Daten wie die Modellnummer und seine Benutzerdaten interpretiert und festgestellt, dass es im Wesentlichen einige binäre Datentabellen gibt, von denen wir annehmen eine Reihe von Aufzeichnungen über seine Herzfrequenz und die Zeit der Aufnahme.

Wo fängt man an, wenn man Daten zurückentwickelt, wenn man nichts über die Struktur weiß?

    
Omar Kooheji 22.09.2008, 16:18
quelle

8 Antworten

4

Ich hatte das gleiche Problem und habe dieses Projekt ursprünglich bei Google Code gefunden, um eine plattformübergreifende Version von Tools für die Garmin-Geräte zu erstellen ... siehe: Ссылка . Auf der ersten Seite dieses Projekts gibt es einen Link zu den Protokollen, die Sie benötigen, und Garmin war nachdenklich genug, sie öffentlich zu veröffentlichen.

Und hier ist ein direkter Link zur Garmin I / O-Spezifikation: Ссылка

    
Steve Moyer 22.09.2008, 16:22
quelle
1

Ich würde anfangen, die Daten in einem hexadezimalen Editor zu betrachten, hoffentlich ein guter, der die gebräuchlichsten Kodierungen (ASCII, Unicode, usw.) kennt und dann versucht, aus den Daten, die Sie kennen, einen Sinn zu machen gespeichert.

    
Vinko Vrsalovic 22.09.2008 16:21
quelle
1

Wie ein anderes Poster erwähnt hat, kann Reverse Engineering haarig sein, nicht in der Praxis, sondern in der Legalität.

Wenn Sie das sagen, können Sie vielleicht alles finden, was mit Ihrer Wurzelfrage zu tun hat, indem Sie dieses Projekt und seinen Code lesen ... und sie verarbeiten auch die Herzfrequenz- / GPS-Kombinationsdaten des Läufers

Ссылка

    
curtisk 22.09.2008 16:24
quelle
0

Ich würde vorschlagen, dass Sie damit beginnen, die Rechtmäßigkeit des Reverse Engineering in Ihrem Herkunftsland zu überprüfen. Die meisten Länder haben sehr strenge Gesetze darüber, was erlaubt ist und was nicht, was Geräte und Code für das Reverse Engineering betrifft.

    
workmad3 22.09.2008 16:19
quelle
0

Ich würde anfangen zu sehen, welche Daten vom Gerät gesendet werden, und dann überlegen, wie solche Daten dargestellt und gepackt werden können.

Ich würde zuerst viele Proben erfassen und sehen, ob sich irgendein Muster ergibt, da der Herzschlag etwas ist, das regelmäßig ist und das nahe legt, dass es eine Messung ist, die sich auf das Herz selbst bezieht. Ich würde auch nach Bit-Feldern suchen, die monoton ansteigen, da dies eine Art Zeitstempel nahelegt.

Nachdem ich eine Hypothese für das, was wo ist, gebildet habe, würde ich ein Programm schreiben, um es zu testen und die Ergebnisse grafisch darzustellen und zu sehen, ob es Sinn ergibt. Wenn es aber nicht ganz so ist, dann würde eine nähere Betrachtung wahrscheinlich ergeben, dass Sie hier oder da einige Skalierungsfaktoren benötigen. Es ist auch durchaus möglich, dass ich die Daten zuerst verarbeiten muss, bevor sie ungefähr so ​​aussieht, wie ihr Programm aussieht, d. H. Möglicherweise müssen die Datenpunkte integriert werden. Wenn ich Müll bekomme, dann geht es zurück zum Zeichenbrett :-)

Ich würde auch die Website des Herstellers überprüfen oder vielleicht strings auf ihren Binärdateien laufen lassen. Die Suche nach jemandem, der auf dem Gebiet der Biomedizintechnik arbeitet, würde ebenfalls auf meiner Liste stehen, da sie wahrscheinlich wissen würden, welche Protokolle normalerweise verwendet werden. Ich würde auch nach diesen Protokollen suchen und sehen, ob irgendwelche auf die Daten angewendet werden könnten, die ich sehe.

    
freespace 22.09.2008 16:28
quelle
0

Ich würde damit beginnen, einen Hex-Dump der Daten zu erstellen. Abbildung ist es wahrscheinlich in einigen Power-of-Two-Size-Chunks blockiert. Fang an, nach wiederholenden Mustern zu suchen. Denken Sie darüber nach, welche Art von Daten sie wahrscheinlich senden. Entweder nehmen sie jeden Herzschlag einzeln auf oder sie zeichnen auf, was der Sensor in bestimmten Intervallen sendet. Wenn es sich um einzelne Beats handelt, wird es ein Zeit-Delta (seit dem letzten Beat), eine Dauer und eine maximale oder durchschnittliche Stärke geben. Wenn es feste Intervalle sind, dann wird es wahrscheinlich ein einfacher Vektor von Lesungen sein. Es wird wahrscheinlich eine Präambel geben, mit einem Startzeitstempel und der Abtastrate. Sie können versuchen, den Zeitstempel selbst zu entschlüsseln, oder Sie versuchen einfach, ihn an ctime() zu übergeben und zu sehen, ob er das absolute Zeitformat verwendet.

Beachten Sie, dass viele billige A / D-Wandler nur 12-Bit-Ausgänge erzeugen, so dass Ihre Messwerte wahrscheinlich nicht größer als 16 Bit sind (und die höherwertigen 4 Bit können für Flags verwendet werden). Ich würde empfehlen, das Gerät zurückzusetzen, so dass es "leer" ist, den Inhalt zu entleeren und zu speichern, dann eine Reihe von Messungen vorzunehmen, die Ergebnisse aufzuzeichnen (was auch immer das Gerät normalerweise meldet), dann den Inhalt erneut auszugeben und die aufgezeichneten Ergebnisse zu korrelieren mit allen Daten, die nach dem "leeren" Speicherauszug erschienen sind.

    
TMN 05.03.2010 19:39
quelle
0

Unsicher, ob Sie das suchen, aber Garmin hat eine API erstellt, die mit Ihrem Browser ausgeführt wird. Es scheint, dass OSX unterstützt wird, sowie Windows-Browser ... Ich würde es von Google Chromium versuchen, um zu sehen, ob es anstelle dieses Reverse-Engineering verwendet werden kann ...

Ссылка

API-Funktionen

  

Automatische Erkennung von an einen Computer angeschlossenen Geräten Zugriff auf das Gerät   Produktinformationen wie Produktname und Softwareversion Lesen   Tracks, Routen und Wegpunkte aus unterstützten Freizeit -, Fitness - und   Navigationsgeräte Schreiben Sie Tracks, Routen und Wegpunkte zu unterstützten   Freizeit-, Fitness- und Navigationsgeräte Lesen Sie Fitnessdaten von   Unterstützte Fitnessgeräte Geocode-Adresse und Speichern auf einem Gerät als   Wegpunkt oder Favorit Lesen und schreiben Sie Garmin XML-Dateien (GPX und TCX) als   auch als Binärdateien. Unterstützung für die meisten Garmin-Geräte (USB, USB   Massenspeicher, die meisten seriellen Geräte) Unterstützung für Internet Explorer,   Firefox und Chrome unter Microsoft Windows. Unterstützung für Safari, Firefox   und Chrome unter Mac OS X.

    
Erik 17.09.2013 21:28
quelle
-1

Können Sie einen Herzschlag mit etwas wie einem Computerlautsprecher synthetisieren? (Ich habe keine Ahnung, wie solche Geräte tatsächlich funktionieren). Beobachten Sie, wie sich die binären Ergebnisse basierend auf verschiedenen Eingaben ändern.

Das Gerät auseinander zu reißen und herauszufinden, was drin ist, würde wahrscheinlich auch helfen.

    
nsanders 22.09.2008 16:21
quelle