Wednesday, April 20, 2011

MyPhoneTracker - analyze iPhone and Android tracking databases

MyPhoneTracker, an application brought to you by this blog, allows you to visualize the location tracking database of iPhones and Androids  on a interactive map.

Be aware that the data the devices collect are determined through cell tower triangulation so its by far not 100% correct.

You can import the database from a local iTunes Backup, the application will display all backups for your devices ordered by date.
Or load the file from an actual iPhone (jailbreak required). The file is named "consolidated.db" and you find it inside "/private/var/root/Library/Caches/locationd/consolidated.db".

For Android devices the file is called "cache.cell" for cell determined locations and "cache.wifi" for WiFi determined locations.
You can find the file(s) inside the folder "/data/data/".

The tracked locations are visualized through markers and colored dots.
A dot indicates that inside the displayed area more then 1 location was tracked. The number inside the dot tells you how many times your location inside this area was saved. Click a dot to zoom in and get a more detailed view till you see the exact marked locations.

MyPhoneTracker allows you to import data from iTunes/iPhone and Android OS.
You can open an existing location database, import more data from the consolidated.db and save it again. This way you can keep track of your locations even with the iOS 4.3.3 limitation of only 7 days location location data.


Version 0.6
  • fixed opening files
  • fixed viewarea
  • better performance
Version 0.8
  • can open android tracking databases (cache.cell & cache.wifi)
Version 0.9
  • new interface
  • selectable itunes backup device and date
  • crashs fixed
  • starts "clean" without a automated loaded location database
  • universal 32/64bit binary
Version 0.9.1
  • self update functionality
Version 0.9.2
  • support for CDMA (Verizon) iPhone thanks R. Hamilton
  • fixed self update (please download again ;_;)
Version 0.9.5
  • GoogleMaps API v3 (Streetview, arial images)
  • Timestamps on single markers
Version 0.9.9
  • internal rework
  • own mpt format
  • save/open mpt databases

Next version(s) will include:
info window with timestamp on location groups


Anonymous said...

Neat. Did you make this yourself? I'm not sure I'll need this though, because I know where my iphone goes :)

Maybe I'll get it in case of losing my phone

Unknown said...

It wont help you if you loose youre phone, its an tool to analyze the local tracking db that ios4 introduced. Check the last blog post for more details.

ed said...

nicely done, looks good

Jay said...

hey, that's awesome!

kudos on this exclusive release!

John said...

I heard apple was spying on people with this technology.

Scott O'Donnell said...

The points collected are rather inaccurate to as much as 1km.

Also this doesn't run on my older iMac. Is it 64 bit?

Otherwise. Nice quickie app!

Unknown said...

@John: ready understand what "not transfered to apple" means

Unknown said...

@Scott O'Donnell
Yes since its determined through cell tower triangulation the points are not very correct, i upload a 32bit binary and the source later today.


The Angry Lurker said...

Aren't Apple tracking all Iphones anyway, heard it on the UK news, it's even in the 15,000 word contract/terms and conditions and is given to third parties but without your details/name. Tracks everywhere you go to, all locations.

Robert said...

lol that is kind of creepy. @The Angry Lurker, they are even worse than the united states government.

fabio_2007 said...

well done

Patti D. said...

awesome software, and love the new icon!

Unknown said...

Even though you can open files from elsewhere, you can't start the app if you don't have the files in the default location

Unknown said...

thanks for the info, gonna fix it in 0.7 (later today)

Anonymous said...

as what Woody brought up, it currently always quits immediately showing "couldn't load consolidated.db file from..." without allowing opening anything manually. thanks.

Unknown said...

updated it so it wont quite if it cant find your consolidated.db

Kenzo said...

So who wants to fund my plan to make iphone cases out of lead to block any tracking signal?

phthalo. said...

Ooh, exclusive. Nice!

Piets said...

Cool :3

Danny Murphy said...

Interesting stuff mate.

taylor said...

Well done...sometimes I worry about how much data Apple has on me.

Ke3user said...

Scary yet interesting, I must say.

Niek said...

Can't believe it is all being logged, awesome application.

Unknown said...

This is a great app, thanks for sharing it.

Unknown said...

version 0.9.2
new user interface, selfupdate and support for cdma iphones (Verizon)

R. Hamilton said...

Thanks for 0.9.2 - I'm now seeing data from my Verizon iPhone.

FYI, when I ran
SELECT COUNT(*) FROM _tablename_;

on each table of consolidated.db (being curious),
I saw errors like the following:
SELECT COUNT(*) FROM CdmaCellLocationBoxes;
SQL error near line 3: no such module: rtree
SELECT COUNT(*) FORM CdmaCellLocationLocalBoxes;
SQL error near line 11: no such module: rtree
SELECT COUNT(*) FORM CellLocationBoxes;
SQL error near line 18: no such module: rtree

Using the version of sqlite3 from MacPorts rather
than the one that comes with the Mac let me count those
too; they had the same number of rows as the corresponding
table whose name did not end in "Boxes".

Some googling told me that apparently the version of sqlite3
with the Mac is not compiled with the RTREE option. I think
perhaps, but haven't looked that far yet, that there may be
some trade-off that explains why the default version wasn't
compiled with that option.

So if there's ever a reason to access those tables, you may
need to supply your own build of sqlite3.

I also saw that in addition to CdmaCellLocation (with 642
records on my copy of consolidated.db), there's also
CdmaCellLocationLocal, with 155 records. The layout of
those two tables is the same. The highest timestamp is in
CdmaCellLocationLocal, about 53341 higher than the highest in
CdmaCellLocation. But I have no idea what the difference is
in the _meaning_ of those two tables.

R. Hamilton said...

One could of course use a query like

SELECT * FROM CdmaCellLocation
SELECT * FROM CdmaCellLocationLocal;

to retrieve all the rows in both tables (excluding duplicates).

Unknown said...

Thanks for your feedback R. Hamilton, i am currently checking the date in those tables and will prolly include them in v1.0.

v0.9.5 up with Google Maps API v3 and Timestamp info on each maker

Unknown said...

for me it shows nothing from my iPhone backups - only from the iPad backup. Versio:n 0.95

Unknown said...

Imperator: are you're iphone backups crypted?

paidvacation1605 said...

Not to keen on the idea that folks can track ya down.

Butcher Bradley said...

Awesome man, nice work.