Here's a wacky little script that connects to your iPhone through SSH, downloads its SMS database and spits out the result on standard out as an XML file. I've been planning to get around to wrapping this in an Applescript application for easy display but have been bogged down in other things. Perhaps someone else will find this of use:
Place this in a Ruby script of some sort:
#!/usr/bin/env ruby
require 'rubygems'
require 'sqlite3'
require 'builder'
# Connect and grab the db from the iphone, it needs to be WIFI connected
# It needs SSH key authentication setup for passwordless access
# It needs the host named iphone set to it's IP address in /etc/hosts
# Test the connection
system "ping -o -t 3 iphone > /dev/null"
if $? != 0
puts "Can not connect to the iphone!"
exit 1
end
# Copy over the database
system "scp -q iphone:/var/mobile/Library/SMS/sms.db /tmp/sms.db"
# Connect to the SMS database
db = SQLite3::Database.new('/tmp/sms.db')
db.results_as_hash = true
# Messages XML
messages = Builder::XmlMarkup.new()
messages.instruct!
messages.messages {
# Received Messages
messages.received {
db.execute("SELECT * FROM message WHERE flags = 2") do |message|
messages.message { messages.sender message[1]
messages.time Time.at(message[2].to_i)
messages.text message[3] }
end
}
# Sent Messages
messages.sent {
db.execute("SELECT * FROM message WHERE flags = 3") do |message|
messages.message { messages.recipient message[1]
messages.time Time.at(message[2].to_i)
messages.text message[3] }
end
}
}
puts messages.to_s
# Remove the database locally
system "rm /tmp/sms.db"
exit 0


