Skip to content

Commit

Permalink
Edited README
Browse files Browse the repository at this point in the history
  • Loading branch information
petewarden committed Apr 20, 2011
1 parent 81a3fe3 commit fe65cad
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 77 deletions.
30 changes: 18 additions & 12 deletions iPhoneTracking.xcodeproj/petewarden.mode1v3
Original file line number Diff line number Diff line change
Expand Up @@ -337,16 +337,17 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>59C0BEA0135D1D2300378314</string>
<string>59C0BEBC135EC52900378314</string>
<key>history</key>
<array>
<string>59F0A34E13593DD300098746</string>
<string>59F0A37213593F3100098746</string>
<string>59F0A4911359770A00098746</string>
<string>59F0A657135A534500098746</string>
<string>59C0BDBB135BF6C600378314</string>
<string>59C0BDBC135BF6C600378314</string>
<string>59C0BE8C135D021800378314</string>
<string>59C0BEB9135EC52900378314</string>
<string>59C0BEBA135EC52900378314</string>
<string>59C0BEBB135EC52900378314</string>
</array>
</dict>
<key>SplitCount</key>
Expand All @@ -358,40 +359,45 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {617, 638}}</string>
<string>{{0, 0}, {672, 638}}</string>
<key>RubberWindowFrame</key>
<string>66 288 1645 890 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>617pt</string>
<string>672pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>iPhoneTrackingAppDelegate.h</string>
<string>index.html</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>iPhoneTrackingAppDelegate.h</string>
<string>index.html</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>59C0BEC0135EC52900378314</string>
<key>history</key>
<array>
<string>59F0A34C13593DD300098746</string>
<string>59F0A34E13593DD300098746</string>
<string>59F0A37513593F3100098746</string>
<string>59F0A3E1135950C000098746</string>
<string>59F0A523135A046B00098746</string>
<string>59F0A5C9135A35CE00098746</string>
<string>59F0A5F7135A4B3700098746</string>
<string>59C0BD7C135BB48F00378314</string>
<string>59C0BEBD135EC52900378314</string>
<string>59C0BEBE135EC52900378314</string>
</array>
</dict>
<key>SplitCount</key>
Expand All @@ -403,14 +409,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{622, 0}, {667, 638}}</string>
<string>{{677, 0}, {612, 638}}</string>
<key>RubberWindowFrame</key>
<string>66 288 1645 890 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>667pt</string>
<string>612pt</string>
</dict>
</array>
<key>Proportion</key>
Expand Down Expand Up @@ -597,13 +603,13 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>59C0BEAC135D1D2300378314</string>
<string>59C0BEC2135EC52900378314</string>
<string>59C0BEAD135D1D2300378314</string>
<string>59C0BEAE135D1D2300378314</string>
<string>1C78EAAD065D492600B07095</string>
<string>1CD10A99069EF8BA00B06720</string>
<string>/Users/petewarden/Projects/iPhoneTracker/iPhoneTracking.xcodeproj</string>
<string>59F0A2C413591AB500098746</string>
<string>/Users/petewarden/Projects/iPhoneTracker/iPhoneTracking.xcodeproj</string>
</array>
<key>WindowString</key>
<string>66 288 1645 890 0 0 1920 1178 </string>
Expand Down
115 changes: 101 additions & 14 deletions iPhoneTracking.xcodeproj/petewarden.pbxuser
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
};
256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1169, 3600}}";
sepNavSelRange = "{4287, 0}";
sepNavVisRange = "{3627, 823}";
sepNavIntBoundsRect = "{{0, 0}, {873, 3705}}";
sepNavSelRange = "{6175, 0}";
sepNavVisRange = "{5026, 1776}";
};
};
29B97313FDCFA39411CA2CEA /* Project object */ = {
Expand Down Expand Up @@ -111,6 +111,13 @@
59C0BE8A135CFFE100378314 = 59C0BE8A135CFFE100378314 /* PBXTextBookmark */;
59C0BE8C135D021800378314 = 59C0BE8C135D021800378314 /* PBXTextBookmark */;
59C0BEA0135D1D2300378314 /* PBXTextBookmark */ = 59C0BEA0135D1D2300378314 /* PBXTextBookmark */;
59C0BEB9135EC52900378314 /* PBXTextBookmark */ = 59C0BEB9135EC52900378314 /* PBXTextBookmark */;
59C0BEBA135EC52900378314 /* PBXTextBookmark */ = 59C0BEBA135EC52900378314 /* PBXTextBookmark */;
59C0BEBB135EC52900378314 /* PBXTextBookmark */ = 59C0BEBB135EC52900378314 /* PBXTextBookmark */;
59C0BEBC135EC52900378314 /* PBXTextBookmark */ = 59C0BEBC135EC52900378314 /* PBXTextBookmark */;
59C0BEBD135EC52900378314 /* PBXTextBookmark */ = 59C0BEBD135EC52900378314 /* PBXTextBookmark */;
59C0BEBE135EC52900378314 /* PBXTextBookmark */ = 59C0BEBE135EC52900378314 /* PBXTextBookmark */;
59C0BEC0135EC52900378314 /* PBXTextBookmark */ = 59C0BEC0135EC52900378314 /* PBXTextBookmark */;
59F0A34C13593DD300098746 = 59F0A34C13593DD300098746 /* PlistBookmark */;
59F0A34E13593DD300098746 = 59F0A34E13593DD300098746 /* PBXTextBookmark */;
59F0A37213593F3100098746 = 59F0A37213593F3100098746 /* PBXTextBookmark */;
Expand All @@ -131,9 +138,9 @@
};
59C0BD6C135A545200378314 /* readme.asciidoc */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {568, 1710}}";
sepNavSelRange = "{5173, 0}";
sepNavVisRange = "{3035, 2154}";
sepNavIntBoundsRect = "{{0, 0}, {623, 598}}";
sepNavSelRange = "{926, 0}";
sepNavVisRange = "{0, 926}";
};
};
59C0BD74135A570F00378314 /* PBXTextBookmark */ = {
Expand Down Expand Up @@ -232,7 +239,7 @@
fRef = 59C0BD6C135A545200378314 /* readme.asciidoc */;
name = "readme.asciidoc: 13";
rLen = 0;
rLoc = 929;
rLoc = 926;
rType = 0;
vrLen = 1814;
vrLoc = 0;
Expand All @@ -252,7 +259,7 @@
fRef = 59C0BD6C135A545200378314 /* readme.asciidoc */;
name = "readme.asciidoc: 62";
rLen = 0;
rLoc = 5173;
rLoc = 926;
rType = 0;
vrLen = 2176;
vrLoc = 3036;
Expand All @@ -262,11 +269,91 @@
fRef = 59C0BD6C135A545200378314 /* readme.asciidoc */;
name = "readme.asciidoc: 62";
rLen = 0;
rLoc = 5173;
rLoc = 926;
rType = 0;
vrLen = 2154;
vrLoc = 3035;
};
59C0BEB9135EC52900378314 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 59F0A3071359237800098746 /* index.html */;
name = "index.html: 13";
rLen = 0;
rLoc = 469;
rType = 0;
vrLen = 1152;
vrLoc = 0;
};
59C0BEBA135EC52900378314 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 256AC3D90F4B6AC300CF3369 /* iPhoneTrackingAppDelegate.m */;
name = "iPhoneTrackingAppDelegate.m: 185";
rLen = 0;
rLoc = 6175;
rType = 0;
vrLen = 1776;
vrLoc = 5026;
};
59C0BEBB135EC52900378314 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 59C0BD6C135A545200378314 /* readme.asciidoc */;
name = "readme.asciidoc: 7";
rLen = 0;
rLoc = 210;
rType = 0;
vrLen = 1785;
vrLoc = 0;
};
59C0BEBC135EC52900378314 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 59C0BD6C135A545200378314 /* readme.asciidoc */;
name = "readme.asciidoc: 12";
rLen = 0;
rLoc = 926;
rType = 0;
vrLen = 926;
vrLoc = 0;
};
59C0BEBD135EC52900378314 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 59F0A33013593AA200098746 /* FMResultSet.h */;
name = "FMResultSet.h: 26";
rLen = 0;
rLoc = 615;
rType = 0;
vrLen = 997;
vrLoc = 519;
};
59C0BEBE135EC52900378314 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 59C0BEBF135EC52900378314 /* index.html */;
rLen = 0;
rLoc = 9223372036854784121;
rType = 0;
};
59C0BEBF135EC52900378314 /* index.html */ = {
isa = PBXFileReference;
lastKnownFileType = text.html;
name = index.html;
path = /Users/petewarden/Projects/iPhoneTrackingPage/index.html;
sourceTree = "<absolute>";
};
59C0BEC0135EC52900378314 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 59C0BEC1135EC52900378314 /* index.html */;
name = "index.html: 69";
rLen = 0;
rLoc = 2517;
rType = 0;
vrLen = 1566;
vrLoc = 1366;
};
59C0BEC1135EC52900378314 /* index.html */ = {
isa = PBXFileReference;
name = index.html;
path = /Users/petewarden/Projects/iPhoneTrackingPage/index.html;
sourceTree = "<absolute>";
};
59F0A2AE13591A8200098746 /* iPhoneTracker */ = {
isa = PBXExecutable;
activeArgIndices = (
Expand Down Expand Up @@ -316,8 +403,8 @@
59F0A3071359237800098746 /* index.html */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {817, 1260}}";
sepNavSelRange = "{1401, 0}";
sepNavVisRange = "{1156, 1050}";
sepNavSelRange = "{469, 0}";
sepNavVisRange = "{0, 1152}";
};
};
59F0A32C13593AA200098746 /* FMDatabase.h */ = {
Expand All @@ -336,9 +423,9 @@
};
59F0A33013593AA200098746 /* FMResultSet.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {733, 1410}}";
sepNavSelRange = "{935, 0}";
sepNavVisRange = "{519, 1099}";
sepNavIntBoundsRect = "{{0, 0}, {969, 1530}}";
sepNavSelRange = "{615, 0}";
sepNavVisRange = "{519, 997}";
};
};
59F0A34C13593DD300098746 /* PlistBookmark */ = {
Expand Down
51 changes: 0 additions & 51 deletions readme.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -9,54 +9,3 @@ When you run this application it scans through the backup files that are automat
It *doesn't* record or share any of this information, it's purely a tool for visualizing the data on your machine. It's open source, so feel free to check the code and compile it yourself if you're concerned.

The goal is to demonstrate how much data your iPhone is collecting on your movements, and how easy it is for any program on your computer to access that information. The coordinates and time periods are deliberately shown with low accuracy to make this application less useful as a snooping tool, but the underlying data has a lot more detail.

= FAQ

== How does the application work?

If you run it on an OS X machine that you've been syncing with an iPhone or an iPad with cellular plan, it will scan through the backup files that are automatically made, looking for the hidden file containing your location. If it finds this file, it will then display the location history on the map.

== Does this application share the information with anyone?

No. All the data stays on your machine. The code behind it has been open-sourced so you can inspect the code and compile it yourself if you're a developer.

== What can I do to remove this data?

This database of your locations is stored on your iPhone as well as in any of the automatic backups that are made when you sync it with iTunes. One thing that will help is choosing encrypted backups, since that will prevent other users or programs on your machine from viewing the data, but there will still be a copy on your device.

== Why is Apple collecting this information?

It's unclear. One guess might be that they have new features in mind that require a history of your location, but that's pure speculation.

== Is Apple storing this information elsewhere?

There's no evidence that it's being transmitted beyond your device and any machines you sync it with.

== What's so bad about this?

The most immediate problem is that this data is stored in an easily-readable form on your machine. Any other program you run or user with access to your machine can look through it.

The more fundamental problem is that Apple are collecting this information at all. Cell-phone providers collect similar data almost inevitably as part of their operations, but it's kept behind their firewall. It normally requires a court order to gain access to it, whereas this is available to anyone who can get their hands on your phone or computer.

By passively logging your location without your permission, Apple have made it possible for anyone from a jealous spouse to a private investigator to get a detailed picture of your movements.

== Why did you open-source this code, won't that make the problem worse?

We did hesitate over the right thing to do in this case, but when it became clear that "Individuals familiar with iPhone forensic analysis will be quite familiar" with it, http://ryanneal.wordpress.com/2011/03/18/war-against-the-iphones-consolidated-db/[as Ryan Neal puts it] and that at least one other person http://www.courbis.fr/spip.php?page=article&id_article=255[had tried to alert the public] but apparently failed to make it clear what was going on, a demonstration application seemed the lesser evil.

To make it less useful for snoops, the spatial and temporal accuracy of the data has been artificially reduced. You can only animate week-by-week even though the data is timed to the second, and if you zoom in you'll see the points are constrained to a grid, so your exact location is not revealed. The underlying database has no such constraints, unfortunately.

== Why are some points in places I've never visited?

As far as we can tell, the location is determined by triangulating against the nearest cell-phone towers. This isn't as accurate as GPS, but presumably takes less power. In some cases it can get very confused and temporarily think you're several miles from your actual location, but these tend to be intermittent glitches.

== How was it discovered?

We've been collaborating on several location data visualization projects, for example this map of radiation levels in Japan:
http://www.guardian.co.uk/science/blog/2011/mar/24/fukushima-radiation-levels

We'd been discussing doing a visualization of mobile data, and while he was researching into what was available, Alasdair discovered this file. At first we weren't sure how much data was there, but after we dug further and visualized the extracted data, it became clear that there was a scary amount of detail on our movements.

== What's your relationship with Apple?

Pete worked for Apple for five years, and left three years ago on good terms. He had no contact with anything iPhone related, (he worked on desktop visualization software) and received no help or information from inside the company. We're both big fans of Apple's products, and take no pleasure in uncovering this issue.

0 comments on commit fe65cad

Please sign in to comment.