2021.04.24 17:42
jak backupować rozmowy z signala

Dziś postanowiłem zbackupować swoje rozmowy z Signala. Trochę czasu mi to zajęło, ale teraz już wiem, jak to się robi (głównie dzięki https://unix.stackexchange.com/questions/505008/signal-desktop-how-to-export-messages#505009).
Wiadomości z signala bekapuje się tak: trzeba mieć zainstalowany na komputerze Signal, w nim wejść w odpowiedni chatroom i przescrollować na sam początek (żeby pobrały się wszystkie wiadomości). Wtedy w pliku ~/.var/app/org.signal.Signal/config/Signal/sql/db.sqlite jest baza danych, w której są skeszowane wszystkie wiadomości, więc wystarczy skopiować tę bazę. Tylko że ta baza danych jest zaszyfrowana, więc trzeba ją odszyfrować. Klucz do odszyfrowania jest w pliku ~/.var/app/org.signal.Signal/config/Signal/config.json. Do odszyfrowania można użyć programu sqlcipher, tylko jak się go zainstaluje z repozytorium, to zamiast odszyfrowania program pokazuje nic nie mówiący błąd "Error: file is encrypted or is not a database". To dlatego, że do odszyfrowania tej bazy Signala potrzebna jest wersja przynajmniej 3.30, a w repozytorium jest 3.24. Więc trzeba sklonować źródła sqlcipher i je samemu skompilować, żeby mieć nową wersję. Ale do skompilowania potrzeba mieć plik libcrypto.a, ale to proste: żeby go mieć, wystarczy zainstalować z repozytorium pakiet libssl-dev. No i teraz jak mam już odpowiednią wersję sqlcipher, mogę odszyfrować tę bazę danych i zapisać ją sobie w jakimś pliku tekstowym. Robię to takim skryptem:
sigBase="${HOME}/.var/app/org.signal.Signal/config/Signal/";
key=$( /usr/bin/jq -r '."key"' ${sigBase}config.json );
db="${sigBase}sql/db.sqlite";
clearTextMsgs="${sigBase}clearTextMsgs.csv";
/home/piotr/bin/sqlcipher/sqlcipher -list -noheader "$db" "PRAGMA key = "x'"$key"'";select json from messages;" > "$clearTextMsgs";
echo result: ${clearTextMsgs}
W tym pliku tekstowym mam tylko tekstowe treści wiadomości, a jeśli były dołączone jakieś załączniki, to mam tu tylko sześćdziesięcioczteroznakowy identyfikator załącznika. Na szczęście te wszystkie załączniki Signal też zapisuje na dysku, w katalogu ~/.var/app/org.signal.Signal/config/Signal/attachments.noindex. W tym katalogu każdy załącznik to plik o nazwie takiej, jak ten sześćdziesięcioczteroznakowy identyfikator, więc w razie potrzeby łatwo powiązać załączniki z wiadomościami. No więc ten katalog z załącznikami też muszę zbackupować i to już wszystko.

komentarze:

ksywa:

tu wpisz cyfrę cztery: (tu wpisz cyfrę cztery: (to takie zabezpieczenie antyspamowe))

komentarze wulgarne albo co mi się nie spodobają będę kasował


powrót na stronę główną

RSS