Fitbit Aria Wi-Fi Smart Scale: Unterschied zwischen den Versionen

K (→‎explanation: explanation for status)
(Sprachlich aufgeräumt, Überschriften kapitalisiert)
Zeile 11: Zeile 11:
 
[[Category:Software]]
 
[[Category:Software]]
  
== description ==
+
== Description ==
=== the scale ===
+
=== The Scale ===
The scale offered by [http://fitbit.com Fitbit] measures weight and body fat. The data is then submitted to their website and can be further analysed. It is possible to use one scale for multiple users including different accounts on Fitbit website. The scale identifies the users by their weight and maybe by their body fat.
+
The scale offered by [http://fitbit.com Fitbit] measures weight and body fat. The data is then submitted to their website and can be further analysed. It is possible to use one scale for multiple users including different accounts on Fitbit's website. The scale identifies the users by their weight and maybe their body fat.
  
=== the master plan ===
+
=== The Master Plan ===
We want to create an own service to analyse the data in our own way. With that we're able to bypass limits and to extend the functionality. We are maybe able to allow more users and to identify the users in a better way. Additionally the data is not transmitted any more unencrypted to a public website. One main interest is also the reversing of the protocol and maybe more...
+
We want to create our own service to analyse the data ourselves. With that we're able to bypass existing limits and to extend the functionality. We may be able to allow more users and to identify the users in a better way. Additionally the data is not send to a public website vie unencrypted transmission anymore. One main interest is also the reverse-engineering of the protocol and maybe more...
  
== analysis ==
+
== Analysis ==
=== request ===
+
=== Request ===
* The data is transmitted with HTTP POST to http://www.fitbit.com/scale/upload
+
* The data is transmitted with HTTP POST to http://www.fitbit.com/scale/upload.
* It usually consists of 62 bytes of binary data in little endian format
+
* It usually consists of 62 bytes of binary data in little endian format.
** In case there is no connection, the data is stored inside the scale and transmitted later
+
** In case there is no connection, the data is stored inside the scale and transmitted later.
 
  0                  4                  8                  C
 
  0                  4                  8                  C
 
  +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
 
  +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
Zeile 42: Zeile 42:
 
* The covariance is also displayed inside the HTML code if you login to your account.
 
* The covariance is also displayed inside the HTML code if you login to your account.
  
=== response ===
+
=== Response ===
==== header ====                                                                               
+
==== Header ====                                                                               
 
                                                                                                
 
                                                                                                
 
  0                  4                  8                                                     
 
  0                  4                  8                                                     
Zeile 51: Zeile 51:
 
  +----+----+----+----+----+----+----+----+----+----+
 
  +----+----+----+----+----+----+----+----+----+----+
  
==== user data ====
+
==== User Data ====
 
  0                  4                  8                  C
 
  0                  4                  8                  C
 
  +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
 
  +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
Zeile 70: Zeile 70:
 
  +----+----+----+----+----+----+----+----+----+----+----+----+----+
 
  +----+----+----+----+----+----+----+----+----+----+----+----+----+
  
==== padding ====
+
==== Padding ====
 
  0                  4                  8
 
  0                  4                  8
 
  +----+----+----+----+----+----+----+----+
 
  +----+----+----+----+----+----+----+----+
Zeile 77: Zeile 77:
 
  +----+----+----+----+----+----+----+----+
 
  +----+----+----+----+----+----+----+----+
  
==== explanation ====
+
==== Explanation ====
* Unit: 00 Pfund, 01 Stone, 02 Kilo
+
* Unit: 00 Pound, 01 Stone, 02 Kilo
 
* Status: 0x32 configured, 0x64 unconfigured, no users (yet)
 
* Status: 0x32 configured, 0x64 unconfigured, no users (yet)
 
* Tolerance max/min: last weight +/- 4kg (in our tests); used by scale to recognize users
 
* Tolerance max/min: last weight +/- 4kg (in our tests); used by scale to recognize users
 
* Gender: 02 male, 00 female
 
* Gender: 02 male, 00 female
  
== own tools ==
+
== Own tools ==
 
/* to be crafted */
 
/* to be crafted */

Version vom 27. Mai 2013, 20:32 Uhr

Crystal Clear action run.png
Fitbit Aria Wi-Fi Scale

Status: beta

Fitbit cat img.jpg
Beschreibung Reverse engineering the fitbit aria wlan scale protocol
Autor: architekt, krisha
PayPal Spenden für Fitbit Aria Wi-Fi Smart Scale

Description

The Scale

The scale offered by Fitbit measures weight and body fat. The data is then submitted to their website and can be further analysed. It is possible to use one scale for multiple users including different accounts on Fitbit's website. The scale identifies the users by their weight and maybe their body fat.

The Master Plan

We want to create our own service to analyse the data ourselves. With that we're able to bypass existing limits and to extend the functionality. We may be able to allow more users and to identify the users in a better way. Additionally the data is not send to a public website vie unencrypted transmission anymore. One main interest is also the reverse-engineering of the protocol and maybe more...

Analysis

Request

  • The data is transmitted with HTTP POST to http://www.fitbit.com/scale/upload.
  • It usually consists of 62 bytes of binary data in little endian format.
    • In case there is no connection, the data is stored inside the scale and transmitted later.
0                   4                   8                   C
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|      Ident 1      |       Battery     |     MAC Address of scale    | Firmware>
|     fixed (2)     |     in percent    | 00   1D   C9   XX   XX   XX |  e.g.   >
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
> version |      unknown      |     Timestamp     | Number of measure-| Ident   >
>   28    |     fixed (33)    |     Sync; Unix    |   ments (here 1)  | fixed   >
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
>         |  Elec. impedance  |   Weight in g     |  Timestamp Meas-  |   User  >
>  (2)    |   0 for guests    |                   |   urement; Unix   |  0 for  >
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
>  ID     |  Displayed body   |    Covariance     |    Body fat 2     |
> guests  |   fat, per mil    |     as float      |                   |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+


  • For guests users id, displayed body fat, covariance and body fat 2 are set to 0.
  • The covariance is also displayed inside the HTML code if you login to your account.

Response

Header

0                   4                   8                                                    
+----+----+----+----+----+----+----+----+----+----+                                          
|     Timestamp     |Unit|Stat|  Number of users  |                                          
|                   |    | us |                   |                                          
+----+----+----+----+----+----+----+----+----+----+

User Data

0                   4                   8                   C
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|      User ID      |                     Always zero                           > 
|                   |                  (maybe reserved)                         >
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
>                   |          Name of user, only first three bytes used, rest  >
>                   |                                                           >
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
>   is filled with spaces               |    Tolerance min  |   Tolerance max   |
>                                       |                   |                   |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|   Age in years    |Gen |     Height in     |    Some weight    |    Body Fat  >
|                   |der |    millimeters    |       or 0        |              >
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
>    |   Covariance (?)  |     Some other    |     Timestamp     |
>    |  1040128544 or 0  |       weight      |                   |
+----+----+----+----+----+----+----+----+----+----+----+----+----+

Padding

0                   4                   8
+----+----+----+----+----+----+----+----+
|         Padding, always zero          |
|                                       |
+----+----+----+----+----+----+----+----+

Explanation

  • Unit: 00 Pound, 01 Stone, 02 Kilo
  • Status: 0x32 configured, 0x64 unconfigured, no users (yet)
  • Tolerance max/min: last weight +/- 4kg (in our tests); used by scale to recognize users
  • Gender: 02 male, 00 female

Own tools

/* to be crafted */