Friday, October 9, 2020

App HealthMate on Android Part 1 - Users, Messages, Devices

Hey there. In the last few month I had no time to write a new post but now I am back with a bit time and something I want to write down and share.

This post is about the available data of the app HealthMate on Android. Health Mate is Fitness, Activity and Health Tracker App from the company Withings. I have a Withings Tracker/Smart Watch and so I decided to find out what is stored by the App on an Android device.

This is the first time that I will split my posts. I think it would be a too long post if I write everything in one go. So, this post is only about where to find the data in the filesystem, user, messages and contacts, the device data. The following post will be about gps data, activities, heart rate .

Used Watch: Withings Steel HR Sport

Android-Version: Android 6 (yeah I know, old, I really need a new version for testing)

HealthMate-App Version: HealtMate 5.1.4


The path of the application data is:


The main file we will look at is the SQLITE database Withings-WiScale on the subfolder databases.

The following tables exist in the databse:

Used Account

In the database Withings-WiScale you can find information on the user account.

Table users is our friend. (Here only some of the available columns are shown)

We have an ID, first and last name, the used email-address, and the creation and modify date (Unix-epoch, UTC). We also have a birthdate, it is also in Unix-epoch time.


Do we have contacts in the HealthMate App? Yes, at least something like that. You can compete with other users of the app. If you do this you will see information like the number steps this user has done and the user id.

This information is in the table leaderboard of the database Withings-WiScale. 

So we have the date of the measurement, the name, the user id and the score. In this particular case this means the number of steps in the ongoing week.

I couldn't find anything like a complete contact list. But with this I have the information I need for the next one, the chats/messages.


And yes, it is possible to write messages via this app. But only if you are in a competition with the other user.
It is only possible to send text messages. No media transmission is possible.
The messages are stored in the table chats of the database Withings-WiScale.

If the receiver ID is "0", it means that the user of the app is the receiver of the message.
Timestamp is again in Unix-epoch, UTC. 
We also have a state. Meaning is for the messages I created:
2 - Sent
4 - Received from user
6 - Status received from system (e.g. the other user has now more steps than you)

It is possible that there are more values for state, I only found these three.

One cannot delete a message. But it is possible to delete to whole contact from the leaderboard. If this is done it is not possible anymore for the other person to write you any message or see your number of steps in the app. But is the data really deleted? Let's see. Well, simple answer: no, it is still there, nothing is deleted in the table chats. But in the table leaderboard the data is gone. I didn't check if I can recover it. Could be possible when parsing the free pages of the database.

Device data

What devices are used? No problem, also stored in the database Withings-WiScale. In table devices.
In the picture are not all fields shown.

We have the field id here, which is the id of the device. I don't know if this is auto generated by the app for identification or it is a real id from the davice.
Additionally we have the associated userId and three time stamps.
  1. associationDate: The date when the device was first connected to the account
  2. lastUseDate: The date the watch was last synced (begin of sync)
  3. modifiedDate: I am not totally sure, I did several sync processes, it was always the end time of the sync. I also changed a setting (set that the watch is at my left arm), timestamp was changed, but this is equal to the end of a sync, because the moment you change a setting for the device it is synced to the device.

The MAC Address of the device is also stored and the current firmware version.

One interesting thing: Latitude and longitude is stored. When you first connect the device to the App you need to activate the location data of your phone. Because I always synced my device at the same location I cannot say if this values are rewritten every time the device is synced with activated location. 

What's next?

I have already done some testing on gps data, heart rate, steps. Next post will show the results on these. 

No comments:

Post a Comment