Pull to refresh

Телефон Android тоже следит…

Reading time 2 min
Views 12K
Все, наверное, заметили шумиху последних дней вокруг «слежки» за пользователями iPhone. Ребята с O'Reilly, которые опубликовали информацию о пресловутом файле consolidated.db, сами удивлены, насколько большой резонанс история вызвала на телевидении и в других СМИ.

Но продолжение этой истории ещё более интересное. Вполне возможно, что разработчики iOS 4 внедрили эту функцию по примеру Android, но в силу криворукости непонятных причин реализовали её не совсем корректно.

Некий разработчик Магнус Эрикксон (Magnus Eriksson), услышав про скандал с айфонами, решил покопаться в кэше своего смартфона Android. И после некоторых изысканий обнаружил файлы cache.cell и cache.wifi, очень похожие на вышеупомянутый consolidated.db. Файлы находятся в папке /data/data/com.google.android.location/files.

Вот пример данных, которые там хранятся (тоже в незащищённом виде): Это координаты (долгота и широта), а также время и дата.

$ ./parse.py cache.cell 
db version:  1
total:       41

key               accuracy  conf.   latitude    longitude  time
240:5:15:983885       1186     75   57.704031   11.910801  04/11/11 20:03:14 +0200
240:5:15:983882        883     75   57.706322   11.911692  04/13/11 01:41:29 +0200
240:5:75:4915956       678     75   57.700175   11.976824  04/13/11 11:52:16 +0200
240:5:75:4915953       678     75   57.700064   11.976629  04/13/11 11:53:09 +0200
240:7:61954:58929     1406     75   57.710205   11.921849  04/15/11 19:46:31 +0200
240:7:15:58929          -1      0    0.000000    0.000000  04/15/11 19:46:32 +0200
240:5:75:4915832       831     75   57.690024   11.998419  04/15/11 16:13:53 +0200


Эрикксон написал программку, которая ищет и показывает данные с координатами из этих файлов. Можете установить и посмотреть на своём телефоне.

Однако, есть важное отличие в том, как эта функция работает на Android-устройствах.

// Maximum time (in millis) that a record is valid for, before it needs
// to be refreshed from the server.
private static final long MAX_CELL_REFRESH_RECORD_AGE = 12 * 60 * 60 * 1000; // 12 hours
private static final long MAX_WIFI_REFRESH_RECORD_AGE = 48 * 60 * 60 * 1000; // 48 hours

// Cache sizes
private static final int MAX_CELL_RECORDS = 50;
private static final int MAX_WIFI_RECORDS = 200;


Здесь максимальное количество хранимых данных ограничено 50 записями для сот и 200 записями для WiFi-точек, соответственно. Есть также ограничение по времени: 12 часов для сот и 48 часов для WiFi, тогда как у iPhone хранится полный архив месяцами (с момента установки iOS 4).

Как и в случае с iPhone, если абонент попал в зону действия соты, где уже был раньше, то старая информация заменяется новой. Кстати, по этой причине и «шпион» от iPhone не такой страшный, как показалось сначала. В большинстве случаев эти данные вообще не пригодны для составления истории перемещений пользователя, разве что только можно увидеть отдельные путешествия по уникальным маршрутам.

По мнению Эрикссона, данная фича работает в Android таким же образом, как и в iPhone: координаты вычисляются точно так же, по координатам ближайших сот, и, возможно, периодически отправляются в Apple/Google. Отличие в том, что Google аккуратно подошёл к защите данных, а разработчики из Apple, видимо, допустили обидный баг, не озаботившись условиями на уничтожение данных, и теперь расплачиваются за это кармой репутацией бренда. Очевидно, баг будет исправлен ближайшим патчем для iOS.
Tags:
Hubs:
+19
Comments 53
Comments Comments 53

Articles