Wie würden Sie gehen Reverse eine Reihe von binären Daten Engineering von einem Gerät gezogen?

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

Frage

Ein Freund von mir brachte diese questiont bis er neulich, er ist vor kurzem ein garmin Herzfrequenz moniter Gerät gekauft, die den Überblick über seine Herzfrequenz hält und erlaubt es ihm, Statistiken seine Herzfrequenz für einen Tag auf seinem Computer zu laden.

Das einzige Problem ist, gibt es keinen Linux-Treiber für das GARMIN USB-Gerät ist, er verwaltet wird einen Teil der Daten, wie zum Beispiel der Modellnummer und seine Benutzerdaten zu interpretieren und hat festgestellt, dass es einige binären Datentabellen ist im Wesentlichen von dem wir annehmen darstellen eine Reihe von Aufnahmen seiner Herzfrequenz und die Zeit, die Aufnahme genommen wurde.

Wo findet man beim Reverse-Engineering-Daten starten, wenn Sie nichts über die Struktur wissen?

War es hilfreich?

Lösung

Ich hatte das gleiche Problem und fand zunächst dieses Projekt bei Google Code, die eine plattformübergreifende Version von Werkzeugen für die Garmin-Geräte vervollständigen sollen ... siehe auch: http://code.google.com/p/garmintools/ . Es gibt einen Link auf der Titelseite des Projekts an die Protokolle, die Sie benötigen, die Garmin nachdenklich genug war, öffentlich zu veröffentlichen.

Und hier ist ein Link zu der Garmin E / A-Spezifikation: http: // www.garmin.com/support/pdf/IOSDK.zip

Andere Tipps

Ich würde beginnen, die Daten in einem Hex-Editor suchen, hoffentlich ein guten, die die am häufigsten verwendeten Kodierungen (ASCII, Unicode, etc.) wissen, und dann versuchen, Sinn für sie aus den Daten zu machen wissen Sie, es hat gespeichert.

Als ein weiteres Plakat erwähnt, Reverse Engineering haarig sein kann, in der Praxis nicht aber in Legalität.

Dass gesagt wird, können Sie in der Lage sein, alles zu finden im Zusammenhang mit Ihrer Wurzel Frage auf der Hand durch dieses Projekt überprüft und seinen Code ... und sie tun die Herzfrequenz / GPS Combo Daten Läufer behandeln und

http://www.gpsbabel.org/

Ich würde vorschlagen, dass Sie mit der Überprüfung der Rechtmäßigkeit des Reverse Engineering in Ihrem Herkunftsland beginnen. Die meisten Länder haben sehr strenge Gesetze über das, was erlaubt ist und was in Bezug auf nicht Reverse-Engineering-Geräte und Code.

ich sehen, welche Daten beginnen würde, wird vom Gerät gesendet werden, dann überlegen, wie solche Daten könnten dargestellt und verpackt werden.

Ich würde zunächst viele Proben erfassen, und sehen, ob irgendein Muster selbst präsentiert, da Herzschlag etwas ist, das regelmäßig ist und dass würde vorschlagen, es Messung an das Herz selbst bezogen ist. Ich würde auch für Bitfelder, die monoton steigenden werden, denn das würde eine Art Zeitstempel vor.

eine Hypothese für gebildet zu haben, was ist, wo ich ein Programm schreiben, würde es zu testen und die Ergebnisse grafisch dar und sehen, ob es Sinn macht. Ist dies der Fall, aber nicht ganz, dann genaueres Hinsehen wohl offenbaren würden Sie müssen einige Skalierungsfaktoren hier oder dort. Es ist auch durchaus möglich, ich brauche zuerst die Daten zu verarbeiten, bevor es etwas aussieht, was ihr Programm zeigt, das heißt möglicherweise die Datenpunkte integrieren müssen. Wenn ich Müll zu bekommen, dann ist es wieder auf das Reißbrett: -)

Ich würde auch die Website des Herstellers überprüfen, oder vielleicht strings auf ihre Binaries laufen. Jemanden zu finden, die auf dem Gebiet der biomedizinischen Technik funktionieren auch auf meiner Liste sein würde, da sie wahrscheinlich wissen würden, welche Protokolle typischerweise verwendet werden, falls vorhanden. Ich würde auch für diese Protokolle schauen und sehen, ob auf die Daten angewandt wird, kann ich sehen bin.

Ich würde zunächst einen Hex-Dump der Daten zu schaffen. Abbildung es wahrscheinlich in einigen Power-of-two-Chunks blockiert wird. Starten Sie für sich wiederholende Muster suchen. Denken Sie darüber nach, welche Art von Daten sie wahrscheinlich zu senden. Entweder sie Aufzeichnen jedes Herz höher schlagen einzeln oder sie die Aufnahme, was der Sensor in festen Abständen sendet. Wenn es einzelne Beats ist, dann gibt es wird ein Zeit-Delta sein (seit dem letzten Takt), eine Dauer und eine max oder avg Stärke irgendeine Art. Wenn es feste Intervalle ist, dann wird es wahrscheinlich ein einfacher Vektor von Lesungen sein. Es wird wahrscheinlich eine Präambel von einer Art, mit einem Start-Zeitstempel und der Abtastrate sein. Sie können versuchen, den Zeitstempel selbst Decodierung, oder Sie könnten versuchen, es einfach zu füttern ctime() und sehen, ob sie Standard absolutes Zeitformat verwenden sind.

Beachten Sie, dass viele billige A / D-Wandler nur 12-Bit-Ausgaben erzeugen, so dass Ihre Lesungen unwahrscheinlich sind, dass sie größer als 16 Bits (und die höherwertigen 4 Bits für Flags verwendet werden können). Ich würde empfehlen, das Gerät zurückzusetzen, so dass es „leer“, Dumping und die Inhalte zu speichern, dann nehmen Sie eine Reihe von Lesungen, die Ergebnisse aufzuzeichnen (was auch immer das Gerät normalerweise berichtet), dann den Inhalt Dump wieder und versuchen, die aufgezeichneten Ergebnisse zu korrelieren mit dem, was erschienen Daten nach dem „leeren“ Dump.

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

http://developer.garmin.com/web-device/garmin -communicator-Plugin /

API-Funktionen

  

Automatische Erkennung von Geräten an einen Computer Zugriff auf Gerät verbunden   Produktinformationen wie Produktname und Softwareversion lesen   Tracks, Routen und Wegpunkte von unterstützten Bereichen Erholung, Fitness und   Navigationsgeräte schreiben Tracks, Routen und Wegpunkte unterstützt   Freizeit-, Fitness- und Navigationsgeräte Lesen Fitnessdaten aus   unterstützt Fitnessgeräte Geo-Code-Adresse und als eine Vorrichtung speichern   Wegpunkt oder Lieblings Lesen und Schreiben von Garmin XML-Dateien (GPX und TCX) als   auch 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 auf Microsoft Windows. Unterstützung für Safari, Firefox   und Chrome auf Mac OS X.

Können Sie synthetisieren ein Herz schlug so etwas wie ein Computer-Lautsprecher verwenden? (Ich habe keine Ahnung, wie solche Geräte tatsächlich funktionieren). Beobachten Sie, wie die binären Ergebnisse auf verschiedenen Eingängen basierend ändern.

Ripping das Gerät auseinander und Check-out, was drin ist wahrscheinlich helfen würde.

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