De onderzoekers van de universiteit van Princeton hebben de app, genaamd PinMe, getest op drie verschillende smartphones, de Samsung Galaxy S4, iPhone 6 en iPhone 6S. PinMe kijkt als eerst naar het IP adres en de (eventuele) Wifi-verbinding en zoekt de informatie over deze verbindingen op in openbare databases om zo de locatie te bepalen. Deze data wordt gecombineerd met informatie uit gyroscoop, accelerometers en hoogtemeters.

De informatie uit die sensoren wordt gebruikt om te bepalen hoe snel de gebruiker zich verplaatst. Deze informatie kan worden gebruikt om te kijken of de gebruiker in de auto zit of in het openbaar vervoer. Deze informatie wordt dan weer gecombineerd met kaart- en ov-informatie van Google en OpenStreetMap. De hoogte-informatie wordt weer tegen de databases van Google en de US Geological Survey gehouden om zo een accurater beeld van de locatie te krijgen.

Smartphones die ook nog een thermometer en vochtigheidsmeter hebben, worden door de app gebruikt en vergeleken met informatie van The Weather Channel om te kijken of de locatie overeenkomt met het weer en zo de locatie nog preciezer te kunnen vaststellen.

Iedere appbouwer kan dit doen

De onderzoekers hebben zo kunnen achterhalen hoe een collega een vliegtrip maakte van Philidelphia naar Dallas, de app gebruikte daarvoor niet alleen de eerder genoemde sensordata, maar ook de tijdzone-instellingen en openbare vluchtinformatie.

De onderzoekers melden dat elke app-ontwikkelaar op deze manier kan achterhalen waar een gebruiker zich bevindt en dat het dus niet uitmaakt of je je GPS-instellingen in- of uitgeschakeld hebt. Deze manier van tracken kan makkelijk worden ingezet als back-up GPS-netwerk. Het is overigens mogelijk deze manier van tracken van slag te brengen door gebruik te maken van anonimiseringsdiensten als TOR.

De onderzoekers pleiten ervoor gebruikers nog meer controle te geven over de sensoren in smartphones. Gebruikers moeten de mogelijkheid krijgen deze sensoren in- en uit te kunnen schakelen net zoals dat nu met GPS het geval is.