xeals / signal-back

Decrypt Signal encrypted backups outside the app
Apache License 2.0
704 stars 67 forks source link

in XML and CSV output there is no way to associate messages to group chats #60

Open frans-fuerst opened 5 years ago

frans-fuerst commented 5 years ago

Detailed description

Im trying to rebuild chat history from either the XML or CSV output but I run into trouble when it comes to group chats.

In XML output the address is __textsecure_group__!<some hash> when I'm sending to a group chat. The hash could be used to connect a message to a group chat (from which I don't know the name yet). Unfortunately messages sent by others to that group look like a normal 'sms' to me. (there's no way to see it has been sent to a group at all, right?)

In CSV messages have a THREAD_ID which can be used to associate a message with a thread which can be a group. Unfortunately messages sent to the group by me seem to be missing.

So even if I read both - XML and CSV output there is no way to reconstruct the thread

How to reproduce:

Here is the interesting content extracted from the XML output:

some 'mms' sent by me to the group:
{'text_only': '1',
 'sub': 'null',
 'retr_st': 'null',
 'date': '1563089591559',
 'ct_cls': 'null',
 'sub_cs': 'null',
 'read': '1',
 'ct_l': 'null',
 'tr_id': 'null',
 'st': 'null',
 'msg_box': '2',
 'address': '__textsecure_group__!913b8f598a39a2a326d5b525b6e6289d',
 'm_cls': 'personal',
 'd_tm': 'null',
 'read_status': 'null',
 'ct_t': 'application/vnd.wap.multipart.related',
 'retr_txt_cs': 'null',
 'd_rpt': '0',
 'm_id': '',
 'date_sent': '1563089591',
 'seen': '1',
 'm_type': '128',
 'v': '18',
 'exp': 'null',
 'pri': '0',
 'rr': '0',
 'resp_txt': 'null',
 'rpt_a': 'null',
 'locked': '0',
 'retr_txt': 'null',
 'resp_st': '0',
 'm_size': '97',
 'readable_date': 'Jul 14, 2019 9:33:11 AM',
 'text': ''}

mms/part
{'seq': '0',
 'ct': 'text/plain',
 'name': 'null',
 'chset': '106',
 'cd': 'null',
 'fn': 'null',
 'cid': 'null',
 'cl': 'txt002056.txt',
 'ctt_s': 'null',
 'ctt_t': 'null',
 'text': "hey guys please write 'xxyyzz'"}

the first one of the group members replies to my request:
sms:
{'protocol': '31337',
 'address': '+672348098432',
 'date': '1563090144943',
 'type': '1',
 'body': 'xxyyzz',
 'service_center': 'GCM',
 'read': '1',
 'status': '-1',
 'date_sent': '1563090144379',
 'readable_date': 'Jul 14, 2019 9:42:24 AM'}

the second one of the group members replies to my request:
sms:
{'protocol': '31337',
 'address': '+34234545432',
 'date': '1563090197244',
 'type': '1',
 'body': 'xxyyzz',
 'service_center': 'GCM',
 'read': '1',
 'status': '-1',
 'date_sent': '1563090198466',
 'readable_date': 'Jul 14, 2019 9:43:17 AM'}

I can't see the messages are being sent to a group (and I don't know the group name neither)

Here is what grep xxyyzz output.csv returns:

47510,136,+672348098432,1,,1563090144943,1563090144379,31337,1,-1,10485780,1,0,,xxyyzz,,GCM,-1,0,0,0,0,1
47511,136,+34234545432,1,,1563090197244,1563090198466,31337,1,-1,10485780,1,0,,xxyyzz,,GCM,-1,0,0,0,0,1

(I can see THREAD_ID=136 but with no group name and my message is missing)