Open JoeGretch opened 1 year ago
I'm not promising to do it, but I'll consider it. The format doesn't look too complicated. Are there MMS messages, or only SMS?
I do not think Silence exports MMS successfully. There certainly are no image or other files associated with these messages.
Thank you. I appreciate your just looking at it.
Thank you!
Unfortunately, emojis, seem to break the Element Tree parser. There weren't any emojis in the sample I sent you; I apologize. This is the result I got:
xml.etree.ElementTree.ParseError: reference to invalid character number: line 12, column 93
and this is line 12 from my file:
<sms protocol="0" address="+15557639101" date="1601816103259" type="2" subject="null" body="��" toa="null" sc_toa="null" service_center="null" read="1" status="-1" locked="0" />
I might just manually strip out the lines with emojis and see if I can make the file work that way, but I wanted to let you know how the initial test went.
Thank you again.
I looked into this, and it turns out that the problem is that Silence is emitting invalid XML - this was first reported seven years ago! You can try the entityfixer
code posted by Calvin-L in that thread.
@tmo1 Can you implement entityfixer
in the https://github.com/tmo1/sms-ie/blob/master/tools/silence-convert.py ?
./silence-convert.py SilencePlaintextBackup.xml
Traceback (most recent call last):
File "/tmp/l/./silence-convert.py", line 46, in <module>
tree = ET.parse(input_file)
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/xml/etree/ElementTree.py", line 1218, in parse
tree.parse(source, parser)
File "/usr/lib/python3.11/xml/etree/ElementTree.py", line 580, in parse
self._root = parser._parse_whole(source)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
xml.etree.ElementTree.ParseError: reference to invalid character number: line 75, column 108
Nice feature, SMS are imported with emoji :+1:
Do you think MMS can be save and restore ?
SMS groups (2 or 3 people are not restored) -> they're not in SilencePlaintextBackup.xml
Nice feature, SMS are imported with emoji 👍
I'm glad it's working!
Do you think MMS can be save and restore ? SMS groups (2 or 3 people are not restored) -> they're not in SilencePlaintextBackup.xml
We can obviously only restore data that's present in the XML file. If there's anything there that isn't being converted / restored, please post some examples and I'll take a look.
We can obviously only restore data that's present in the XML file. If there's anything there that isn't being converted / restored, please post some examples and I'll take a look.
MMS are stored in /data/data/org.smssecure.smssecure/app_parts/part1001758286944762215.mms
These files are encrypted :
file part1001235047216594581.mms
part1001235047216594581.mms: data
Where do those files come from? What's the encryption scheme, and where are the keys? If you provide sample files and keys, I can take a look (if you're willing expose potentially private data and metadata), but there's no way I can do anything without that.
Where do those files come from? What's the encryption scheme, and where are the keys? If you provide sample files and keys, I can take a look (if you're willing expose potentially private data and metadata), but there's no way I can do anything without that.
I'd like to decrypt a file first , in order to see what file it's and then post it.
Here's the MMS database structure : https://git.silence.dev/Silence/Silence-Android/-/blob/master/src/org/smssecure/smssecure/database/MmsDatabase.java
The keys to decrpyt are located in : org.smssecure.smssecure/shared_prefs/SecureSMS-Preferences.xml
Thanks. I'm not planning to comb through the code to figure out the database structure and encryption scheme, but if you make progress on it, please post your results here.
I created a tool to do this in python to txt format https://github.com/dngray/silence-backup-parse/blob/main/silence_backup_parse.py there were some specifics regarding emojis.
as for MMS those are not exported in the XML file.
@dngray Nice, emoji and SMS are well exported by using @tmo1 source code What is missing :
SMS with more than 2 people (which is not present in the XML)
That's probably because those are actually MMS messages and not SMS.
Yes, I don't have found what kind of algo is used to encrypt MMS files :
/data/data/org.smssecure.smssecure/app_parts/part1001758286944762215.mms
Do you have any ideas about these files ? How to decrypt them ?
Keys are locate in :
org.smssecure.smssecure/shared_prefs/SecureSMS-Preferences.xml
That's probably because those are actually MMS messages and not SMS.
Correct. SMS messages cannot have more than one recipient - messages sent to more than one recipient are automatically sent as MMS messages, even when they're only simple text messages with no "media" involved.
Hi
sure i'm a stupid
but i tried
python silence-convert.py SilencePlaintextBackup.xml
and i've got:
Traceback (most recent call last):
File "/home/user/silence-convert.py", line 46, in
then i did like recommended:
python silence-xml-fixer.py SilencePlaintextBackup.xml SilencePlaintextBackupfixed.xml and i've got nothing happened..after 15min...i quit..
and _python3 silence_backupparse.py SilencePlaintextBackup.xml
and i've got a SilencePlaintextBackup1.zip (as i wrote in the python file) but empty file....
somebody can help me ??? :-( thks !
that's what i did, (first command) or something wrong on my command?
xml.etree.ElementTree.ParseError: reference to invalid character number: line nnn, column mmm
If this error is encountered, first use the XML fixer tool to produce valid XML:
silence-xml-fixer.py < silence-xxx.xml > silence-xxx-fixed.xml
then run the converter on the fixed XML:
silence-convert.py <silence-xxx-fixed.xml>
thank for your response but i did all that (it's my text.. :-()
You've missed <
and >
yeah the first command worked
python silence-xml-fixer.py
but python silence-convert.py SilencePlaintextBackupfixed.xml i've got a zip with something....i'll try to another sms app thks
it's workin !! :-) many thks. no mms but it's a silence issue ?
MMS are not located in the XML still working about it
oki, very good job, i was afraid to be stuck with silence rrrr
I'm looking at org.smssecure.smssecure/shared_prefs/Secure/SMS-Preferences.xml
it mentions curve25519
Rapid search can lead to : https://github.com/topics/curve25519 The rage project may can decrypt file ??
-d, --decrypt Decrypt the input.
https://github.com/str4d/rage#passphrase-protected-identity-files
https://github.com/str4d/rage
Silence / SMSSecure uses the Signal encryption protocol, which uses / can use curve25519 in its operation. I think that this may be only applicable to the encryption used for messages in transit, though, and not to the encryption used for the on-disk message databases.
There are various tools for decoding the encypted backups produced by Signal, including signalbackup-tools and signal_for_android_decryption, but they are not designed to be used with the raw database files retrieved from the Android filesystem.
There's also ; that may be needs to be adapted to Silence https://github.com/alexlance/signal-sms-mms-importer
@tmo1 any news on this? Silence is not compatible with Android 14 and all messages are hostage to it. This feature is very much needed.
As I've said, I don't plan to try to figure out how to decrypt Silence's encrypted database files. If someone figures out how to do that, then I can try to help figure out how to get the resulting plaintext messages into a form readable by SMS I/E.
@tmo1 Silence can export to plaintext, @dngray also created a parser should you need it, there is no need to work on the encrypted database.
And for MMS ? I've already exported SMS with commands above :smiley:
@tmo1 Silence can export to plaintext
I've already written a Silence XML to SMS I/E JSON converter; the problem, as @DavidHenryThoreau points out, is that this doesn't help for MMS messages, which Silence doesn't export at all, as @dngray himself has noted above, and are only available in Silence's internal database.
@tmo1 Why not enable export/import for SMS only for the time being? The majority of the database will be comprised of SMS anyway. Switching to Android 14 means losing the whole SMS database as things are now, if you implemented at least SMS import one could safely ditch Silence and lose only MMS instead of everything.
Why not enable export/import for SMS only for the time being?
I don't understand what you're asking for - transferring SMS messages from Silence is currently working fine via the converter I wrote, as I noted above. The workflow is:
Use Silence to export SMS messages in Silence XML format.
Use the SMS I/E Silence converter script to convert the XML file to a SMS I/E v2 compatible ZIP file.
Use SMS I/E to import the ZIP file.
I tried running python silence-convert.py SilencePlaintextBackup.xml
but it spits this error:
Traceback (most recent call last):
File "./silence-convert.py", line 46, in <module>
tree = ET.parse(input_file)
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/xml/etree/ElementTree.py", line 1218, in parse
tree.parse(source, parser)
File "/usr/lib/python3.11/xml/etree/ElementTree.py", line 580, in parse
self._root = parser._parse_whole(source)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
xml.etree.ElementTree.ParseError: reference to invalid character number: line 33, column 152
I tried running python silence-convert.py SilencePlaintextBackup.xml but it spits this error:
Thank you for creating such a useful app.
Would you be willing to write a script that will convert the Silence XML plaintext backup file into a JSON file to be imported?
Here is a sample from the Silence backup:
Thank you again.