Случайно наткнулся на статью “
Сразу же замечу, что если вы параноидальны и не хотите, чтобы ваши SMS прочитали, то криптуйте свои бекапы (панель опций на закладке Summary вашего iPhone):
Бекапы iOS-устройств находятся в каталоге ~/Library/Application Support/MobileSync/Backup. Меня интересует список, отсортированный в порядке проведения бекапов, для этого использую “ls -lt”:
$ cd "~/Library/Application Support/MobileSync/Backup" $ ls -lt drwxr-xr-x 6026 ctrld staff 204884 Nov 12 16:34 09213b6660a22d13977258d480ced2a880ff8390 drwxr-xr-x 5633 ctrld staff 191522 Oct 19 23:07 09213b6660a22d13977258d480ced2a880ff8390-20101019-230647
Имя состоит из UDID устройства и времени формирования предыдущих копий.
Метод, приведённый в указанной выше
Первый способ – поиск по известному фрагменту текста
Я знаю, что мне приходил SMS из банка о снятии денег за программу из iTunes в пользу “ITUNES-USD”. Нахожу grep’ом файл, убеждаюсь, что это SQLite:
$ cd "~/Library/Application Support/MobileSync/Backup/" $ cd 09213b6660a22d13977258d480ced2a880ff8390 $ grep ITUNES-USD * Binary file 3d0d7e5fb2ce288813306e4d4636395e047a3d28 matches $ file 3d0d7e5fb2ce288813306e4d4636395e047a3d28 3d0d7e5fb2ce288813306e4d4636395e047a3d28: SQLite 3.x database
Второй способ – поиск по структуре базы
Сделал скрипт 1.sh, который снимает схемы всех баз SQLite (в него нужно вставить ваши данные):
#!/bin/bash UDID=09213b6660a22d13977258d480ced2a880ff8390 dir=~/Library/Application\ Support/MobileSync/Backup/$UDID if [ -e "$dir" ]; then echo "Time: $(date)" else echo "Directory $dir does not exists" exit fi cd "${dir}" lst=$(file * | grep SQLite | awk -F : '{print $1}') for l in ${lst}; do echo ${l} echo ".schema" | sqlite3 ${l} done echo "Time: $(date)"
Запускаю скрипт, записываю вывод в файл:
$ ./1.sh > 1.out
Ищу в результатах строку “CREATE TABLE message” – именно так определяется таблица с SMS. Нахожу нужный файл, у меня это 3d0d7e5fb2ce288813306e4d4636395e047a3d28.
Вывод данных
Копирую найденный файл в рабочий каталог
$ cp "~/Library/Application Support/MobileSync/Backup/09213b6660a22d13977258d480ced2a880ff8390/3d0d7e5fb2ce288813306e4d4636395e047a3d28" ~/sms.sqlite
Открываю, смотрю схему (несколько приёмов работы с SQLite я приводил в статье по Mail.app):
$ sqlite3 sms.sqlite sqlite> .schema CREATE TABLE _SqliteDatabaseProperties (key TEXT, value TEXT, UNIQUE(key)); CREATE TABLE group_member (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, group_id INTEGER, address TEXT, country TEXT); CREATE TABLE message (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, address TEXT, date INTEGER, text TEXT, flags INTEGER, replace INTEGER, svc_center TEXT, group_id INTEGER, association_id INTEGER, height INTEGER, UIFlags INTEGER, version INTEGER, subject TEXT, country TEXT, headers BLOB, recipients BLOB, read INTEGER); CREATE TABLE msg_group (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, type INTEGER, newest_message INTEGER, unread_count INTEGER, hash INTEGER); CREATE TABLE msg_pieces (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, message_id INTEGER, data BLOB, part_id INTEGER, preview_part INTEGER, content_type TEXT, height INTEGER, version INTEGER, flags INTEGER, content_id TEXT, content_loc TEXT, headers BLOB); ...
Делаю выборку из messages:
sqlite> select * from message; ... 2925|10060|1289398514|Parol: 11111111 www.privat24.ua -- Modem naprokat za 0 grn. v mesyats. Zakagi na privat24.ua i plati za Internet 60 ili 80 grn.|2|0||481|0|0|0|0||ua|||0 ...
Данные видны, а уже с ними можно работать.
Если вы ищете клиент под Mac OS X, то не смотрите на