Project

General

Profile

import iPhone sms into replicant 4.2 0003 on Samsung » doc android MMS-SMS DB (english).txt

Fil Lupin, 05/03/2015 12:32 PM

 
source :
https://stackoverflow.com/questions/3012287/how-to-read-mms-data-in-android
http://minhdanh2002.blogspot.de/2012/02/raw-access-to-sms-database-on-android.html
https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/jb-release/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
http://www.etsi.org/deliver/etsi_gts/03/0340/05.03.00_60/gsmts_0340v050300p.pdf
SMS type 0 (SMS ping, SMS furtifs): https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/issues/69
https://github.com/domi007/silentSMS
http://forum.xda-developers.com/showthread.php?t=1422969
http://rednaxela.net/pdu.php
localisation GSM: http://blog.ptsecurity.com/2014/04/search-and-neutralize-how-to-determine.html
http://events.ccc.de/congress/2008/Fahrplan/attachments/1262_25c3-locating-mobile-phones.pdf
carte GSM: http://gsmmap.org/

The /data/data/com.android.providers.telephony/databases/mmssms.db
file use sqlite format and is accessible into root mode ont the phone.



table addr
----------
_id: INTEGER (primary key) ID
msg_id: INTEGER The ID of MM which this Address entry belongs to
contact_id: INTEGER The ID of contact entry in Phone Book
address: TEXT The address text
type: INTEGER Type of address,must be one of PduHeaders.BCC,
PduHeaders.CC, PduHeaders.FROM, PduHeaders.TO
charset: INTEGER Character set of entry

table android_metadata
----------------------
locale: TEXT

table SMS (info on SMS)
----------------------------
This table is used by the SMS dispatcher to hold incomplete partial messages
until all the parts arrive.

_id: INTEGER (primary key) SMS ID
thread_id: INTEGER The thread ID of the message
address: TEXT The address of the other party
person: INTEGER
date: INTEGER The date the message was received
date_sent: INTEGER The date the message was sent
protocol: INTEGER The protocol identifier code
read: INTEGER Has the message been read? (boolean)
status: INTEGER a TP-Status value or -1 if it status hasn't been
received (default)
STATUS_COMPLETE=0 TP-Status: complete.
STATUS_FAILED=64 TP-Status: failed.
STATUS_NONE=-1 TP-Status: no status received.
STATUS_PENDING=32 TP-Status: pending.
http://www.etsi.org/deliver/etsi_gts/03/0340/05.03.00_60/gsmts_0340v050300p.pdf
type: INTEGER The type of message
unsure sense ?
1 if sent
2 if receiverd
3 if ?
reply_path_present: INTEGER
subject: TEXT The subject of the message, if present
body: TEXT The body of the message
service_center: TEXT The service center (SC) through which to send the
message, if present
locked: INTEGER Is the message locked? (default 0)
error_code: INTEGER Error code associated with sending or receiving this message
(default 0)
seen: INTEGER Indicates whether this message has been seen by
the user. The "seen" flag will be used to figure
out whether we need to throw up a statusbar
notification or not (default 0)

table sr_pending
----------------
This table is used by the SMS dispatcher to hold pending delivery status report
intents.

reference_number: INTEGER
action: TEXT
data: TEXT

table threads
-------------
This table maps the subject and an ordered set of recipient
IDs, separated by spaces, to a unique thread ID. The IDs
come from the canonical_addresses table. This works
because messages are considered to be part of the same
thread if they have the same subject (or a null subject)
and the same set of recipients.

_id: INTEGER PRIMARY KEY identifier autoincremented
date: INTEGER The date at which the thread was created
(default 0)
message_count: INTEGER The message count of the thread (default 0)
recipient_ids: TEXT A string encoding of the recipient IDs of the
recipients of the message, in numerical order and
separated by spaces
= canonical_addresses
snippet: TEXT The snippet of the latest message in the thread
snippet_cs: INTEGER The charset of the snippet (default 0)
read: INTEGER Indicates whether all messages of the thread have
been read (default 1)
type: INTEGER Type of the thread, either Threads.COMMON_THREAD=0
or Threads.BROADCAST_THREAD=1
error: INTEGER Indicates whether there is a transmission error
in the thread (default 0)
has_attachment: INTEGER Indicates whether this thread contains any
attachments (1), or 0 (default) if pure text

table words (FTS3)
------------------
_id (2<<32)+source_id
index_text
source_id
table_to_use 1 or 2

table words_content
-------------------
docid: INTEGER PRIMARY KEY
c0_id (2<<32)+ c2source_id
c1index_text
c2source_id
c3table_to_use 1 or 2

table words_segments
--------------------
blockid: INTEGER PRIMARY KEY
block: BLOB

table words_segdir
------------------
level: INTEGER PRIMARY KEY
idx: INTEGER
start_block: INTEGER
leaves_end_block: INTEGER
end_block: INTEGER
root: BLOB

table attachments
-----------------
sms_id: INTEGER ID
content_url: TEXT URL
offset: INTEGER

table canonical_addresses
-------------------------
This table maps the first instance seen of any particular
MMS/SMS address to an ID, which is then used as its
canonical representation. If the same address or an
equivalent address (as determined by our Sqlite
PHONE_NUMBERS_EQUAL extension) is seen later, this same ID
will be used. The _id is created with AUTOINCREMENT so it
will never be reused again if a recipient is deleted.

_id: INTEGER PRIMARY KEY
address: TEXT An address used in MMS or SMS. Email addresses
are converted to lower case and are compared by
string equality. Other addresses are compared
using PHONE_NUMBERS_EQUAL

table drm
---------
_id: INTEGER PRIMARY KEY
_data: TEXT

table part
----------
_id: INTEGER PRIMARY KEY
mid: INTEGER The identifier of the message which this part belongs to
part._id = pdu._id
seq: INTEGER The order of the part
ct: TEXT type MIME (cf. https://fr.wikipedia.org/wiki/Type_MIME)
text/plain, image/jpeg, image/bmp, image/gif,
image/jpg, image/png
if text/plain or application/smil, MMS is not pure text
and there is some attachment (has_attachment=1
in the thread from threads table)
name: TEXT The name of the part
chset: INTEGER The charset of the part
cd: TEXT The content disposition of the part
fn: TEXT The file name of the part
cid: TEXT The content ID of the part
cl: TEXT The content location of the part
ctt_s: INTEGER The start of content-type of the message
ctt_t: TEXT The type of content-type of the message
_data: TEXT The location(on filesystem) of the binary data of the part
(empty if text)
text: TEXT content if text, empty else

table pdu (info on MMS)
----------------------------
http://www.xuebuyuan.com/1068475.html
https://developer.android.com/reference/android/provider/Telephony.BaseMmsColumns.html1
_id: INTEGER PRIMARY KEY
thread_id: INTEGER thread id
date: INTEGER The date the message was received (unix format)
date_sent: INTEGER The date the message was sent (default 0)
msg_box: INTEGER The box which the message belong to
MESSAGE_BOX_ALL = 0
MESSAGE_BOX_INBOX = 1
MESSAGE_BOX_SENT = 2
MESSAGE_BOX_DRAFTS = 3
MESSAGE_BOX_OUTBOX = 4
read: INTEGER Has the message been read? (boolean)
m_id: TEXT The Message-ID of the message
sub: TEXT The subject of the message, if present
sub_cs: INTEGER The character set of the subject, if present
ct_t: TEXT The Content-Type of the message
ct_l: TEXT The Content-Location of the message
exp: INTEGER The expiry time of the message
m_cls: TEXT The class of the message
m_type: INTEGER The type of the message defined by MMS spec
128 if sent
130 if to send again
132 if resent
v: INTEGER The version of specification that this message
conform
m_size: INTEGER The size of the message
pri: INTEGER The priority of the message
rr: INTEGER The read-report of the message
rpt_a: INTEGER Whether the report is allowed
resp_st: INTEGER The response-status of the message
st: INTEGER The status of the message
tr_id: TEXT The transaction-id of the message
retr_st: INTEGER The retrieve-status of the message
retr_txt: TEXT The retrieve-text of the message
retr_txt_cs: INTEGER The character set of the retrieve-text
read_status: INTEGER The read-status of the message
ct_cls: INTEGER The content-class of the message
resp_txt: TEXT The response-text of the message
d_tm: INTEGER The delivery-time of the message
d_rpt: INTEGER The delivery-report of the message
locked: INTEGER Has the message been locked?
seen: INTEGER Indicates whether this message has been seen by
the user. The "seen" flag will be used to figure
out whether we need to throw up a statusbar
notification or not (default 0)

table pending_msgs
------------------
This table stores the queue of messages to be sent/downloaded.

_id: INTEGER PRIMARY KEY ID
proto_type: INTEGER The type of transport protocol(MMS or SMS)
msg_id: INTEGER The ID of the message to be sent or downloaded
msg_type: INTEGER The type of the message to be sent or downloaded
err_type: INTEGER The type of the error code
err_code: INTEGER The error code of sending/retrieving process
retry_index: INTEGER How many times we tried to send or download the
message
due_time: INTEGER The time to do next retry
last_try: INTEGER The time we last tried to send or download the
message

table rate
----------
sent_time: INTEGER When a message was successfully sent

table raw
---------
_id: INTEGER PRIMARY KEY
date: INTEGER
reference_number: INTEGER one per full message
count: INTEGER the number of parts
sequence: INTEGER the part number of this message
destination_port: INTEGER
address: TEXT
pdu: TEXT the raw PDU for this part


sqlite_autoindex_words_segdir_1
typeThreadIdIndex
(2-2/2)