Die von Apple mit iOS 8 eingeführte Health App ermöglicht eine umfangreiche Überwachung von Gesundheits- und Fitnessdaten in den Kategorien Aktivität, Schlaf, Achtsamkeit und Ernährung. Die Health App bezieht ihre Daten aus unterschiedlichen Quellen:

  • Apple Watch
  • Apps zu den verschiedenen Kategorien, bspw. Fitness Apps wie Runtastic oder Apps zum Verfolgen von Ernährungsgewohnheiten wie MyFitnessPal

Intern speichert die Health App umfangreiche Nutzerdaten in der Datenbank healthdb_secure.sqlite. Die Datenbank besitzt eine Vielzahl von Tabellen, die untereinander in Relation stehen und forensisch interessante Informationen beinhalten.

Tabelle 'samples'

Enthält einzelne Bewegungsaufzeichnungen inklusive Zeitstempeln im Mac Epoch Format (Spalten 'start_date' und 'end_date'). Die Spalte 'data_type' beinhaltet den Typ der gespeicherten Bewegungsaufzeichnung. In der folgenden Tabelle sind einige bekannte Typen aufgeführt.

Typ Aktion
3 Gewicht
Herzfrequenz
7 Schritte
8 Strecke, Distanz in Meter
9 Ruheenergie
10 Aktivitätsanzeige
12 Treppensteigen
67 Wöchentliches Kalorienziel
70 Watch On
75 Stehstunden
76 Aktivität
79 Trainings
83 Weitere Trainings

 

Tabelle 'quantity samples'

Speichert zusätzliche Informationen zu einzelnen Bewegungsaufzeichnungen wie Anzahl gegangener Schritte, Distanz in Meter, Größe, Herzfrequenz, Anzahl Kalorien u.a. Die Tabelle 'unit_strings' löst die genutzten Formate entsprechend auf. 

Tabelle 'activity_caches'

Beinhaltet umfangreiche Informationen zu Aktivitäten, bspw. zurückgelegte Distanz oder Schritte, verbrannte Kalorien u.a.

Tabelle 'workouts'

Speichert Informationen zu Workouts/Trainings. Trainings können beispielsweise mit der Apple Watch gestartet werden. Es werden dann u.a. Dauer, Distanz und Aktivitätstyp festgehalten. In der folgenden Tabelle sind einige bekannte Aktivitätstypen aufgeführt:

Aktivitätstyp Beschreibung
13 Rad outdoor
52 Gehen outdoor

 

Tabelle 'metadata_values'

Speichert zusätzliche Informationen zu einzelnen Trainings. Die Tabelle ist zudem verknüpft mit 'metadata_key', welche die gespeicherten Einheiten auflöst. Interessante Werte sind insbesondere Geodaten, die dann erhoben werden, wenn ein Nutzer ein Training startet. zu Beginn eines Trainings werden Standort und Wetterdaten erhoben (wenn GPS verfügbar).

Tabelle 'key_value_secure'

In der Tabelle befinden sich Informationen zum Nutzer (Notfallpass), sowie Statistiken (Datum der letzten Aktivität, Stehstunden heute, Kalorien verbrannt heute, Achtsamkeit heute).

Tabelle 'achievements'

Enthält die Erfolge des Anwenders.

Die Schwierigkeit bei der Analyse der Health App besteht hauptsächlich in der Korrelation der Tabellen untereinander und natürlich in der Interpretation der Schlüsselwerte, von welchen hier nur einige bekannte aufgeführt sind. 

Das Python Skript PyHealth.py ist ein Ansatz für die Analyse der Datenbank healthdb_secure.sqlite ohne Anspruch auf Vollständigkeit. Die Idee dabei war die Analyse in etwa an der Bedienbarkeit der Health App zu orientieren. Ein Export der Kategorie Inhalte ist als CSV- oder KML-Datei möglich.

Das Python Skript analysiert folgende Kategorien:

Aktivität

t: activity_caches, samples

Joins:

activity_caches.data_id & samples.data_id

Erfolge

t: achievements

Heute

t: key_value_secure, category == 106

Notfallpass

t: key_value_secure, category == 106

Quellen

t: data_provenances

Samples

t: samples, quantity_samples, uni_strings, data_provenances, objects 

Joins: 

samples.data_id & quantity_samples.data_id 

unit_strings.RowID & quantity_samples.original_unit

samples.data_id & objects.data_id

data_provenances.RowID & objects.provenance

Workouts

t: workouts, samples, metadata_values, metadata_keys

Joins:

workouts.data_id & samples.data_id

workouts.data_id & metadata_values.object_id

metadata_values.key_id & metadata_keys.ROWID 

Das Skript kann über GitHub/MarcBrandt/Health bezogen werden. Benötigt werden die beiden Python Skript-Dateien PyHealth.py und healthdb.py und die Datenbank healthdb_secure.sqlite. Der Aufruf erfolgt unter Python 3 mit der Syntax:

$ python3 PyHealth.py healthdb_secure.sqlite