Signal-Desktop:如何導出消息?
如何
signal-desktop
導出消息?我想備份我的信件。
有可能嗎?
是的,有可能。
只需將其保存在文件中
<yourFilename>
:sigBase="${HOME}/.config/Signal/"; key=$( /usr/bin/jq -r '."key"' ${sigBase}config.json ); db="${HOME}/.config/Signal/sql/db.sqlite"; clearTextMsgs="${sigBase}clearTextMsgs.csv"; /usr/bin/sqlcipher -list -noheader "$db" "PRAGMA key = \"x'"$key"'\";select json from messages;" > "$clearTextMsgs";
並通過呼叫它
bash <yourFilename>
。或使其可執行chmod 700 <yourFilename>
並直接呼叫它:./<yourFilename>
該腳本使用
sqlcipher
和jq
signal-desktop 的數據庫密鑰來打開、解密和提取所有JSON
格式的消息到clearTextMsgs.csv
您的 signal-desktop 文件夾~/.config/Signal
中。除了通過使用
jq
(from~/.config/Signal/config.json
) 過濾 JSON 來提取密鑰之外,關鍵的一點發生在這裡:sqlcipher -list -noheader <DB> <SQL>
其中
<SQL>
包含PRAGMA key
定義和實際的 SQL 語句 (SELECT json FROM messages;
)。然後可以使用
jq
從消息備份中訪問任何鍵/值。您必須安裝
sqlcipher
並jq
為此:sudo apt install sqlcipher jq
筆記:
雖然這確實提取了所有消息,但我們需要指定
all
signal-desktop 中的 " " 具有 " " 的含義all messages actually loaded
。因此,為了提取每條消息,活動聯繫人的滑塊必須向上滑動,然後 signal-desktop 將載入以前不可用的消息(泡沫沖洗重複直到滿意)。到目前為止,您希望載入您的消息。這很快就會變得乏味。請記住為所有聯繫人的歷史記錄這樣做。話雖如此,備份您的消息歷史記錄在技術上是可行的,實際上這是一項手動工作。解決這個問題的一種方法可能是備份所有最近的消息,可能每天一次。那麼這很可能包含重複的資訊,並且在重新啟動信號桌面的情況下可能會失去消息。
在任何情況下,如果(不太遠 - 閱讀:可能幾個月)歷史將不時以程式方式搜尋一次,則此方法可以正常工作。