Sat 13 Feb 2010
A fellow examiner at the Lakewood PD had to examine an iPhone and was researching the sms.db format. Under normal circumstances, the sms.db is a SQLite database, however, and for currently unknown reasons, when loading the sms.db database file into SQLite, it only provided the most recent SMS record. We were quick to load the database file into a HEX editor and identified that additional SMS records were in fact still present within the file. This discovery led to my involvement in writing an EnScript to parse the SMS record section within the sms.db database file.
Well, if you need to parse out SMS records from an iPhone sms.db file, you might find the following EnScript useful.
Usage:
- Copy the EnPack you downloaded into your <EnCase-Install>/EnScript directory. You may want to create a sub-folder called “Custom”, so 3rd party scripts clearly separated.
- Load the exported sms.db file into EnCase as a single file.
- Blue-check the sms.db file.
- Double-click the script “CellPhoneMessages”.
- The console view will provide status information.
NOTE: No guarantee is made that this EnScript is error free. Please use at your own risk and validate your findings.
Please report any bugs or suggestions to EnScript Support
Developing, maintaining and hosting this content does take time and financial resources. Your support is much appreciated.
The EnScript can be downloaded here: iPhone_SMS_DB (38 KB, 17 downloads), version: v1.0.63 (Requires EnCase 6.14.3)
ver 1.0.63: February 13, 2010
(+) improved SMS record recognition
ver 1.0.59: December 07, 2009
After receiving another sms.db file from a fellow examiner in Italy, I had the opportunity to update the script with the following:
(+) account international country codes prefixes
(+) improve record identification for parsing
(+) “fuzzy” record parsing if a reference; such as a name is used instead of a phone number. It is fuzzy, because I am trying to identify a date based on other records, since the record structure does not have a fixed offset for the date. This makes parsing “non-phone#” records more difficult. Although it has a high success rate, I hope to improve this feature in the near future. Records that are “unparsable” are still stored in the log file created.
ver 1.0.58: November 15, 2009
Note: This script should be considered a BETA release, as it was developed based on only one sms.db file. Other sms.db files may contain more complex sms record structures. If you are able to share other sms.db files for research, please contact us.