Ortung und Positionsbestimmung mit CyanogenMod
12.04.2015
Die meisten Smartphones besitzen einen GPS-Empfänger um die aktuelle Position zu bestimmen. Wer denkt, dass es in Android beziehungsweise CyanogenMod reicht GPS auszuschalten, um installierte Apps an der Positionsbestimmung zu hindern, sollte weiterlesen. In diesem Beitrag zeige ich wie mit CyanogenMod die ungefähre Position über Mobilfunk und das WLAN herausgefunden werden kann.
Handy-Ortung über Mobilfunk
GSM-Ortung funktioniert über die Mobilfunk-Zelle, bei der sich das Smartphone automatisch anmeldet. Bei einem gerooteten Android-Smartphone oder CyanogenMod können die Registrierungsdaten der Mobilfunk-Zelle über das Programm logcat abgerufen werden. Logcat kann in dem "Terminal Emulator" als Benutzer "root" aufgerufen werden.
su
# get the mobile country code, mobile network code,
# location area code and cell id with logcat
logcat -b radio -v time -d | egrep '(REGISTRATION_STATE|OPERATOR)'
# example output:
04-30 18:38:02.450 D/RILJ ( 2536): [0866]< OPERATOR {Vodafone.de, Vodafone.de, 26202}
04-30 18:38:02.450 D/RILJ ( 2536): [0867]< DATA_REGISTRATION_STATE {1, 0138, 00d2a31c, 9}
Die Ausschriften von logcat aus dem oberen Beispiel sind wie folgt zu verstehen:
- Mobile Country Code (MCC): 262 - steht für Deutschland
- Mobile Network Code (MNC): 02 - steht für den Mobilfunkanbieter Vodafone
- Location Area Code (LAC): 312 == 0x0138 (hexadezimal)
- Zellen-ID (Cell-ID): 13804316 == 0x00d2a31c (hexadezimal)
Auf der Website Opencellid.org sind einige Funkzellen mit ihren IDs eingetragen und öffentlich abrufbar. Mit den vier Werten aus dem oberen Beispiel läßt sich der ungefähre Smartphone-Standort herausfinden.
https://opencellid.org/
Update 2017: Mittlerweile erfordert Opencellid leider eine Anmeldung, um den Dienst nutzen zu können.
Beispiel für Standortbestimmung über eine Mobilfunk-Zelle
Wie auf der Karte zu erkennen ist, umfaßt eine Mobilfunkzelle einige 100 Meter. Wer also nicht möchte, dass Android-Apps den Standort über den indirekten Weg der Log-Dateien auslesen können, sollte einer App die Berechtigung READ_LOGS entziehen. Das funktioniert zum Beispiel über das Xposed-Modul App Settings.
Eine Alternative zu Opencellid ist "Combain Positioning Solutions". Bei diesem Dienst können nach einer Registrierung bis zu 1000 Standorte abgefragt werden. Als Antwort kommen bei Combain die Latitude und Longitude also geographische Breite und Länge mit einem Genauigkeitswert heraus.
Diese Werte können in Openstreetmap.org eingegeben werden: https://www.openstreetmap.org/#map=18/52.54632/13.41800
Ortung über WLAN
Das WLAN Positioning System basiert auf bekannten Standorten von WLAN-Geräten. Dabei ist es nicht etwa notwendig, dass ein Auto wie bei Google-Streetview durch die Straßen fährt und WLAN-Adressen einsammelt. Das erledigt mittlerweile Software, die im Hintergrund auf Smartphones läuft und ohne Interaktion die WLAN-Adressen an Google bzw. Apple überträgt. Das ist auch einer der Gründe warum ich CyanogenMod ohne Google-Apps (GApps) gegenüber Android bevorzuge. Wer diese Art der Positionsbestimmung nachvollziehen möchte, kann sich das Debian-Kit und das Linux-Werkzeug iwlist zum Auflisten der WLAN-Adressen unter CyanogenMod installieren. Das Kommandozeilen-Programm iwlist läßt sich wie folgt mit Root-Rechten aufrufen:
iwlist wlan0 scanning | egrep "(ESSID|Address)"
# example output:
Cell 35 - Address: 44:AD:D9:57:DE:41
ESSID:"Kabel Deutschland Hotspot"
Beim oberen Beispiel ist die MAC-Adresse eines WLAN-Gerätes: 44:AD:D9:57:DE:41. Anhand dieser Adresse läßt sich auf der Website Openwlanmap.org der Standort des WLAN-Geräts ungefähr bestimmen.
http://www.openwlanmap.org/findmac.php?bssid=44:AD:D9:57:DE:41
Beispiel für Standortbestimmung mit Openwlanmap
Falls ein WLAN-Gerät umzieht, gibt es meistens noch genügend andere WLAN-Geräte in der Nähe, die zum Bestimmen des Standorts benutzt werden können. Das Löschen eines WLAN-Geräts aus Openwlanmap.org bringt vermutlich nicht viel, da andere Firmen mit Sicherheit ihre eigene WLAN-Datenbank pflegen. Die Ortung per WLAN scheint etwas genauer zu sein als die Ortung per Mobilfunkzelle. Wer seinen Standort nicht preisgeben möchte, sollte somit auch WLAN ausschalten oder den Apps die Rechte für WLAN entziehen.
Falls noch etwas unklar sein sollte, dann kannst du die Kommentar-Funktion benutzen.