Ich habe ein HTC Hero Mobiltelefon, eines der ersten in meinen Augen wirklich attraktiven Android Handys. Lange Zeit hat HTC die Hero Nutzer vertröstet, was ein Android Update angeht. Bereits vor einigen Monaten erschien dann pünktlich zum Markstart von Android 2.2 das Update auf Android 2.1 für das HTC Hero.

Ich wollte mal sehen, was eigentlich so passiert während das Android Handy nach Softwareaktualisierungen bei HTC sucht. Dazu habe ich den Datenverkehr über WLAN mit tcpdump mitgeschnitten und dann mit Wireshark ausgewertet.

POST /android/checkin HTTP/1.1
Content-type: org/x-json
Content-Length: 502
Host: andchin.htc.com
Connection: Keep-Alive
User-Agent: Android-Checkin/1.2


{"digest":"a3ab719702d5369344545716a74c2bc","imei":"3579880205XXXXXX",
"locale":"en_DE",
"logging_id":-5997289630894730370,"id":2306200997234244131,
"checkin":{"build":{"firmware_version":"2.73.405.93 CL#154788
release-keys","bootloader":"1.76.0007","serialno":"HT97JL902XXXX","carrier":"htc_wwe",
"build_type":"user","radio":"63.18.55.06EU_6.35.06.18","revision":"128",
"id":"htc_wwe/htc_hero/hero/hero:1.5/CUPCAKE/154788:user/release-keys",
"changelist":"154788","product":"hero"}},"model_number":"HTC Hero"}

Man beachte die von mir fett hervorgehobenen Daten (imei und serialno, Firefox stellt das nicht fett dar) – hier wird neben der Seriennummer auch die IMEI übermittelt. Datensparsamkeit ist das sicherlich nicht. Damit hat HTC neben der IP Adresse auch die Seriennummern, die das Hero eindeutig identifizierbar machen. Ob in dem „digest“ oder den „id“ Daten noch anderes versteckt ist, wie z.B. die SIM Karten ID oder Telefonnummer kann ich nicht erkennen.

Schade, dass HTC hier nicht darauf hinweist, welche Daten für das Android „checkin“ übermittelt werden, und dies still und heimlich passiert. Ich habe dabei das Gefühl, dass HTC hier mehr schnüffelt als erforderlich – die Seriennummer oder IMEI hätte es sicherlich getan. Beides und dann noch „digest“ und andere ID Werte machen mich stutzig.

Die Antwort vom HTC Server scheint übrigens den digest Wert nicht zu verwenden:


HTTP/1.1 200 OK
Connection: close
Date: Fri, 18 Jun 2010 22:45:45 GMT
Accept-Ranges: bytes
Server: Noelios-Restlet-Engine/1.1.6
Content-Length: 104
Content-Type: application/json; charset=UTF-8
X-Powered-By: Servlet/2.5 JSP/2.1


{"time_msec":"1276901145060","stats_ok":true,"intent":[{"action":"android.server.checkin.FOTA_CANCEL"}]}