Как на практике продемонстрировать тип сжатия ядра?

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

Просто сохраните это в файл<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 -.

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

6
21.11.2019, 17:26
2 ответа

Вы можете посмотреть, какие методы сжатия поддерживает ваше ядро. Можно выбрать только один, так что это докажет, какой именно.

Здесь я использую gzip:

$ zgrep CONFIG_KERNEL_ /proc/config.gz
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
5
27.01.2020, 20:24

VMlinuz был сжат в gzip, как вы можете видеть по следующим ссылкам:

http://www.linfo.org/vmlinuz.html

https://www.ibm.com/developerworks/community/blogs/mhhaque/entry/anatomy_of_the_initrd_and_vmlinuz?lang=en

https://en.wikipedia.org/wiki/Vmlinux

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

A compiled kernel named zImage file is created on some older systems and is retained on newer ones for backward compatibility. Both zImage and bzImage are compressed with gzip. The difference is that zImage decompresses into low memory (i.e., the first 640kB), and bzImage decompresses into high memory (more than 1MB). There is a common misconception that bzImage is compressed with the bzip2 utility; actually, the b just stands for big.

Надеюсь, эта информация окажется для вас полезной.

0
27.01.2020, 20:24

Теги

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