iPhone Database Details
A useful resource for the different databases in the iPhone
iPhone databases
SMS DB
/private/var/root/Library/SMS/sms.db
TABLE | _SqliteDatabaseProperties | |
key (TEXT) | value (TEXT) | |
_ClientVersion | 2 | |
_UniqueIdentifier | GUID |
TABLE | message | |
ROWID (INTEGER PRIMARY KEY AUTOINCREMENT) | ||
Auto-incrementing field/counter | ||
address (TEXT) | ||
International-formatted foreign address | ||
(18005551212) | ||
date (INTEGER) | ||
OSX-epoch based datetime, convertable via date -r | ||
(1187200801) | ||
text (TEXT) | ||
Content of text message | ||
(This is the text message) | ||
flags (INTEGER) | ||
Flags controlling the type of record | ||
2 - Message sent from address to iPhone | ||
3 - Message sent from iPhone to address | ||
129 - Message log erased from iPhone but addressee still in SMS index | ||
replace (INTEGER) | ||
Unknown, always 0 in my case | ||
svc_center (TEXT) | ||
service center, seems null in my case |
CallData DB
/System/Library/Frameworks/AppSupport.framework/calldata.db
TABLE | _SqliteDatabaseProperties |
TABLE | citycode | |
code (INTEGER) | ||
Not sure what the significance of these entries are, I’m wondering if they have something to do with the geocoding of calls not made from your phonebook? | ||
(3888) | ||
city (TEXT) | ||
Not sure what the significance of these entries are, I’m wondering if they have something to do with the geocoding of calls not made from your phonebook? | ||
(RED CLOUD) |
INDEX | citycode_codeIndex |
citycode (code) |
TABLE | npa | |
npa (TEXT) | ||
Numbering Plan Area, aka Area Code | ||
(415) | ||
location (TEXT) | ||
State/Province Assigned to the NPA | ||
(CA) | ||
country (TEXT) | ||
Country Assigned to the NPA, may be null if “location” is specific enough | ||
(USA) |
TABLE | npalocation | |
npa (TEXT) | ||
Numbering Plan Area, aka Area Code | ||
(415) | ||
location (TEXT) | ||
Descriptive location info | ||
(San Francisco/North Bay Area) |
TABLE | npanxx | |
npa (INTEGER) | ||
Numbering Plan Area, aka Area Code | ||
(907) | ||
nxx (INTEGER) | ||
Unknown | ||
(200) | ||
rate_center (INTEGER) | ||
Unknown | ||
(1) |
INDEX | npanxx_npanxxIndex |
npanxx (npa,nxx) |
CallHistory DB
/private/var/root/Library/CallHistory/call_history.db
TABLE | _SqliteDatabaseProperties | |
your values will certainly be different here…when you “restore” your iPhone from iTunes the counters all reset | ||
key (TEXT) | value (TEXT) | |
call_history_limit | 100 | |
timer_last | 60 | |
timer_outgoing | 900 | |
timer_incoming | 540 | |
timer_all | 1440 | |
timer_lifetime | 1440 | |
timer_last_reset | ||
data_up_last | 2.5439454125 | |
data_down_last | 20.86328125 | |
data_up_all | 719.9228515625 | |
data_down_all | 8677.8427734375 | |
data_up_lifetime | 719.9228515625 | |
data_down_lifetime | 8677.8427734375 | |
data_last_reset | ||
_ClientVersion | 3 | |
_UniqueIdentifier | GUID |
TABLE | call | |
ROWID (INTEGER PRIMARY KEY AUTOINCREMENT) | ||
Auto-incrementing field/counter | ||
address (TEXT) | ||
International-formatted foreign address | ||
(18005551212) | ||
date (INTEGER) | ||
OSX-epoch based datetime, convertable via date -r | ||
(1187200801) | ||
duration (INTEGER) | ||
Length of call in seconds rounded to next minute, 0 = missed call | ||
(60) | ||
flags (INTEGER) | ||
Flags controlling the type of record | ||
5 - Outgoing call | ||
4 - Incoming call | ||
id (INTEGER) | ||
AddressBook ID for outgoing calls selected from AddressBook, otherwise -1 | ||
(67) |
INDEX | date_index |
call (date) |
KeyChain DB
/private/var/root/Library/Keychains/keychain-2.db
Encrypted, I don’t know how to parse this yet
Notes DB
/private/var/root/Library/Notes/notes.db
TABLE | _SqliteDatabaseProperties | |
key (TEXT) | value (TEXT) | |
_ClientVersion | 2 | |
_UniqueIdentifier | GUID |
TABLE | Note | |
creation_date (INTEGER) | ||
title (TEXT) | ||
summary (TEXT) |
TABLE | note_bodies | |
note_id (INTEGER UNIQUE) | ||
data |
Voicemail DB
/private/var/root/Library/Voicemail/voicemail.db
TABLE | _SqliteDatabaseProperties | |
key (TEXT) | value (TEXT) | |
VMVersion | 4 | |
_UniqueIdentifier | GUID | |
token | string containing various values, including your phone number | |
uid_validity | 1183172695 | |
mailboxusage | 57 |
TABLE | voicemail | |
ROWID (INTEGER PRIMARY KEY AUTOINCREMENT) | ||
Auto-incrementing field/counter | ||
remote_uid (INTEGER) | ||
International-formatted foreign address | ||
(18005551212) | ||
date (INTEGER) | ||
OSX-epoch based datetime, convertable via date -r | ||
(1187200801) | ||
token (TEXT) | ||
Always reads “Complete” from what I can tell | ||
sender (TEXT) | ||
CallerID from the calling party leaving the voicemail message | ||
(8885551212) | ||
callback_num (TEXT) | ||
Callback number left by calling party, usually caller ID | ||
(8885551212) | ||
duration (INTEGER) | ||
Duration in seconds | ||
(5) | ||
expiration (INTEGER) | ||
OSX-epoch based datetime, convertable via date -r | ||
(1189431482) | ||
trashed_date (INTEGER) | ||
definitely based in seconds, haven’t figured out the epoch yet or why it isn’t the same as the other dates based on OSX’s epoch | ||
flags (INTEGER) | ||
Voicemail flags | ||
0 - Not downloaded yet | ||
1 - Partially downloaded | ||
2 - New, unlistened or only partially listened to | ||
3 - Listened completely | ||
11 - Pending delete, in “Deleted Items” | ||
15 - Deleted from iPhone, pending delete from voicemail hq |
INDEX | date_index |
voicemail (date) |
INDEX | remote_uid_index |
voicemail (remote_uid) |
Other, more complicated DBs, involved in syncing
AddressBook DB
/private/var/root/Library/AddressBook/AddressBook.sqlitedb
AddressBook Images DB
/private/var/root/Library/AddressBook/AddressBookImages.sqlitedb
Maptiles DB
/private/var/root/Library/Caches/MapTiles/MapTiles.sqlitedb
Calendar DB
/private/var/root/Library/Calendar/Calendar.sqlitedb