Notice: I have neither posted nor updated any content on this blog since the mid 2010's. (😱) Please check out the homepage and my bio, for more recent information.

In re: iPhone Tracking

To catch up: last week, a couple O’Reilly analysts discovered a database file on the iPhone that appears to track the location of the phone, over time. They also released a companion program to view the data, on any computer used to sync an iPhone.

My life, according to my iPhone

Inspired by this piece in The Atlantic, I downloaded the iPhoneTracker application to take a look at my own data. Below is my full location track over a map of the United States.

(Note: I intentionally reset my iPhone and removed my backups so I could “start clean” in May 2010. This is unfortunate, but I think the following map would have rendered exactly the same since I’ve repeated road trips and routes over the past few years.)

my iPhone location tracking map

Of note:

  • Proud to say that I practically own the majority of the I-70 corridor.
  • There is an interestingly large “dead spot” in coverage over Eastern Montana, Wyoming, and South Dakota, along I-90.
  • I’ve never stepped foot in New Mexico, so I don’t know why it placed points there.
  • I believe I’ve travelled south of the 37th parallel within the United States a mere handful of times in my life, and this map is slightly representative of that fact. Connecting flights make up the bulk of my experience through the Southwestern United States.

For fun, here’s a map of my trip to the New Jersey / New York City area last June.

NJ/NYC

We need to go deeper

Unimpressed with the granularity of iPhoneTracker’s maps at high-zoom (example), I decided to take apart the data myself. (Python’s native sqlite3 support helped. I’ll likely publish some source code when I follow-up on this.)

Here’s a very rough map of every point my iPhone stored in the Spokane area: blue points from the “CellLocation” table (likely AT&T cell signal transmitters), red points from the “WifiLocation” table (likely a list of every access point seen).

Spokane wifi map

(Compare to iPhoneTracker’s version.)

And, for good measure, a detail view of Downtown Spokane:

Downtown Spokane map

Future analysis

The above images are fairly rough: I’m not filtering duplicate MAC addresses, nor am I taking into account the accuracy of any of the data points. I do no date filtering or time-based analysis — it’s just a mass of points. But, I think visualizing the density of information stored on my device is interesting nonetheless. There are at least 10,000 data points in the above maps, dating as far back as the end of June last year.

As an en masse set of points, the data isn’t nearly as damning as the “location tracking log” moniker would suggest — there are no telltale “dense spots” to give away locations I frequent. But, as I said, it’s a rough view of the data and not representative of an actual attempt to run forensics.

Where can I go from here?

  • With the higher granularity in the raw data: how precise can I guesstimate my whereabouts at any given moment in time solely on the nearby Wifi locations? Can I pull together an accurate location track such as this one, detailing the movements of German politician, Malte Spitz? (See also: the corresponding report published by Zeit Online and this perspective from the EFF.)
  • Noticed that MAC addresses are part of the data stored for WifiLocation. Could be interesting to see what manufacturers make the most common routers/access points.

Complexity is the enemy

It turns out that, much like it’s easier to write a long blog post than it is to make the same point succinctly, it’s difficult to write software that is straightforward. […]

Another word for this problem is cleverness: to quote another one of the C hackers, “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”