-
Notifications
You must be signed in to change notification settings - Fork 195
Add Pixel Watch (Wear OS) support to fitbit.py #658
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Introduces parsing for `passive_stats.db`, primarily found in Pixel Watch and Wear OS extractions. - Parses `ExerciseSummaryEntity` for workout context (Running, Walking, etc.). - Extracts raw GPS trackpoints from `ExerciseGpsEntity`. - Extracts high-frequency heart rate data from `HeartRateStatEntity` and `OpaqueHeartRateEntity`. - Note: This DB often acts as a raw sensor buffer on Wear OS devices.
- Introduces parsing for `user.db` for profile and activity attribution. - Parses `FitbitProfileEntity` for user identity (Name, DOB, User ID). - Parses `ActivityExerciseEntity` for logical workout history. - Implements JSON parsing for `SedentaryDataEntity` to extract granular hourly step counts.
|
@ganeshbs17 both paths seem too generic, can you narrow the scope down to the bundle folder? Also we already have Fitbit parsers I believe, would you be able to add to the current set? |
|
Thanks for the review @stark4n6 ! I initially planned to keep these separate as they target specific database structures found in Wear OS (Smartwatch) extractions, which differ from the standard Android app data. However, I completely get your point.. since the package name com.fitbit.FitbitMobile is identical for both the Smartphone and Wear OS versions, it makes sense to consolidate them. I will merge the Wear OS logic into the existing scripts/artifacts/fitbit.py so the artifact can intelligently handle both Phone and Watch databases within a single parser. |
- Consolidate Pixel Watch/Wear OS logic into a single function `get_fitbit_wearos` within `fitbit.py`. - Register `FitbitWearOS` artifact in `__artifacts_v2__` to target both `user.db` and `passive_stats.db` (including WAL files via wildcard). - Preserve existing `get_fitbit` function for backward compatibility with Android smartphone extractions. - Add granular reporting with forensic descriptions for all 13 Wear OS tables (User Profile, Heart Rate, GPS, AZM, etc.).
Add map visualization to report
|
@ganeshbs17 Check out the linter errors, not sure if they are from your updates or if they were residual issues from previous iterations |




This PR consolidates new artifact support for fitbit app on Pixel Watch (Wear OS) full file system extractions into the existing fitbit.py parser.
Instead of creating separate scripts, this update adds a new function get_fitbit_wearos to the existing module. This allows the parser to intelligently handle both legacy Android mobile data (activity_db, etc.) and the newer Wear OS SQLite databases found on watches.
Changes:
Updated artifacts_v2 to register FitbitWearOS targeting user.db* and passive_stats.db*.
New Data Supported:
1. Fitbit Passive Stats
Source:
*/com.fitbit.FitbitMobile/databases/passive_stats.db*Purpose
Parses high-frequency, locally buffered sensor data, commonly present on Pixel Watch devices (Wear OS ).
Data Extracted
ExerciseGpsEntityHeartRateStatEntityOpaqueHeartRateEntityPassiveAzmEntityExerciseSummaryEntity(session-level context)2. Fitbit User Database
Source:
*/com.fitbit.FitbitMobile/databases/user.db*Purpose
Establishes user attribution
Data Extracted
Attribution
FitbitProfileEntityActivity
ActivityExerciseEntity