Signal-Desktop: как экспортировать сообщения?

Этот скрипт сделает это:

#!/bin/bash
SRC=$1
DEST=$2

SRC_GROUPS=$(id -Gn ${SRC} | sed "s/${SRC} //g" | sed "s/ ${SRC}//g" | sed "s/ /,/g")
SRC_SHELL=$(awk -F : -v name=${SRC} '(name == $1) { print $7 }' /etc/passwd)

useradd --groups ${SRC_GROUPS} --shell ${SRC_SHELL} --create-home ${DEST}
passwd ${DEST}

Он получает группы исходного пользователя (не включая группу, совпадающую с его логином) и shell, затем создает нового пользователя с тем же shell и вторичными группами.

Usage: clone-user src_user_name new_user_name

Нет никакой проверки ошибок, это просто быстрый и грязный сценарий клонирования.

2
19.04.2019, 22:59
1 ответ

Да, это возможно.

Просто сохраните это в файл<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 -для открытия, расшифровки и извлечения всех сообщений в формате JSONв clearTextMsgs.csvвнутри папки вашего signal -рабочего стола ~/.config/Signal.

Помимо извлечения ключа путем фильтрации JSON с помощьюjq(из ~/.config/Signal/config.json), здесь происходит решающий бит:

sqlcipher -list -noheader <DB> <SQL>

где <SQL>содержит определение PRAGMA keyи фактический оператор SQL(SELECT json FROM messages;).

Затем можно использовать jqдля доступа к любому ключу/значению из резервной копии сообщений.

Для этого необходимо установить sqlcipherи jq.:

sudo apt install sqlcipher jq

Примечание:

Хотя при этом извлекаются все сообщения, нам нужно указать, что «all» в сигнале -desktop имеет значение «all messages actually loaded». Таким образом, чтобы извлечь каждое отдельное сообщение, ползунок активного контакта должен быть сдвинут вверх, после чего сигнал -рабочий стол загрузит ранее недоступные сообщения (и повторит полоскание, пока не будет удовлетворено ). Сделайте это так далеко в прошлом, как вы хотите, чтобы ваши сообщения загружались. Это довольно быстро надоедает. Не забудьте сделать это для истории всех ваших контактов.

При этом технически возможно сделать резервную копию истории сообщений, но на практике это ручная работа. Обойти это можно с помощью cron, выполняющего резервное копирование всех последних сообщений, может быть, один раз в день. Тогда это, вероятно, будет содержать дубликаты и может пропустить сообщения в случае перезапуска рабочего стола signal -.

В любом случае, этот метод работает нормально, если (не слишком далеко --читал :пару месяцев, может быть, )историю нужно время от времени программно искать.

14
27.01.2020, 22:08

Теги

Похожие вопросы