Du bist hier:Start»CyanogenMod»Hacks»Positionsbestimmung

Ortung und Positionsbestimmung mit CyanogenMod

12.04.2015

world location

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.

# become root user
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 jetzt der ungefähre Smartphone-Standort herausfinden:
http://opencellid.org/#action=filters.measuresOfGivenBaseStation&mcc=262&mnc=02&lac=312&cellid=13804316

Update 2017: Mittlerweile muss man sich bei Opencellid leider anmelden, um den Dienst nutzen zu können.

Beispiel für Mobilfunk Ortung

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. Mit dem oberen Beispiel und einem "REGISTRATION_KEY" ergibt sich folgende URL:

http://location-api.com/cps/?key=REGISTRATION_KEY&cell=G,262,2,0138,d2a31c

Als Antwort kommen Latitude und Longitude also geographische Breite und Länge mit einem Genauigkeitswert heraus:

status=0;lat=52.54632;lon=13.418;acc=835

Diese Werte können in Openstreetmap.org eingegeben werden: http://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:

# list all available WLAN devices in the area

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 Ortung mit Openwlanmap

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.

Kommentar schreiben