Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How would you go about reverse engineering a set of binary data pulled from a device?

A friend of mine brought up this questiont he other day, he's recently bought a garmin heart rate moniter device which keeps track of his heart rate and allows him to upload his heart rate stats for a day to his computer.

The only problem is there are no linux drivers for the garmin USB device, he's managed to interpret some of the data, such as the model number and his user details and has identified that there are some binary datatables essentially which we assume represent a series of recordings of his heart rate and the time the recording was taken.

Where does one start when reverse engineering data when you know nothing about the structure?

like image 921
Omar Kooheji Avatar asked Sep 22 '08 16:09

Omar Kooheji


3 Answers

I had the same problem and initially found this project at Google Code that aims to complete a cross-platform version of tools for the Garmin devices ... see: http://code.google.com/p/garmintools/. There's a link on the front page of that project to the protocols you need, which Garmin was thoughtful enough to release publically.

And here's a direct link to the Garmin I/O specification: http://www.garmin.com/support/pdf/IOSDK.zip

like image 192
Steve Moyer Avatar answered Nov 07 '22 21:11

Steve Moyer


I'd start looking at the data in a hexadecimal editor, hopefully a good one which knows the most common encodings (ASCII, Unicode, etc.) and then try to make sense of it out of the data you know it has stored.

like image 24
Vinko Vrsalovic Avatar answered Nov 07 '22 22:11

Vinko Vrsalovic


As another poster mentioned, reverse engineering can be hairy, not in practice but in legality.

That being said, you may be able to find everything related to your root question at hand by checking out this project and its' code...and they do handle the runner's heart rate/GPS combo data as well

http://www.gpsbabel.org/

like image 32
curtisk Avatar answered Nov 07 '22 22:11

curtisk