Этот скрипт сделает это:
#!/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
Нет никакой проверки ошибок, это просто быстрый и грязный сценарий клонирования.
Да, это возможно.
Просто сохраните это в файл<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 -.
В любом случае, этот метод работает нормально, если (не слишком далеко --читал :пару месяцев, может быть, )историю нужно время от времени программно искать.