I have a IoT scale that stores my measurements into records and passes them onto my phone. I was able to read directly off a flash chip and create a binary file. The chipset is ARMv7.

I want to be able to verify my recordings on the device match what I have on my phone.

I ran the binary through strings and was only able to obtain the make and model of the device. I ran it through binwalk and no signatures were detected. I ran an entropy analysis and the entropy doesn't ever seem to be high enough to 1 to contain obfuscation/encryption/compression.

Looking at the hexdump I notice that the first block of data on the binary is ARM execution code and the rest is mostly empty except for some blocks of data. I extracted the binary between multiple recordings and noticed (through diffs) that these blocks of data are created almost on-par with each recording.

The problem im having is that each recording seemingly only adds on 32 bytes of data and none of the hex converts to the measurements or timestamps of the recordings.

What would be the methodology to decode these 32 bytes of data?

  • Perhaps you can try getting a bunch of identical weights, put one more on before each measurement and try to recognize a pattern. Or trying to take measurements at regularly spaced points in time. You could also try to monitor the writes live with a cheap USB based logic analyzer feeding into sigrok and a custom python decoder... Also note that if the stock app uses BLE and you have an Android phone the BLE HCI snoop option under the developer menu will record data the stock app is exchanging with the device, wireshark can process the resulting capture file. – Chris Stratton Mar 18 '19 at 19:12
  • 1
    Are you able to share a few consecutive binary files and the corresponding real-life data from the phone app ? – Ian Cook Mar 22 '19 at 19:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.