Как получить встроенное имя зашифрованного файла GPG

Есть несколько способов... Проще всего использоватьnmcli d

нмкл д

[root@localhost ~]# nmcli d
DEVICE  TYPE      STATE      CONNECTION         
enp0s8  ethernet  connected  Wired connection 1 
enp0s3  ethernet  connected  enp0s3             
lo      loopback  unmanaged  --                 
[root@localhost ~]# 

В качестве альтернативы;

состояние сервисной сети

[root@localhost ~]# service network status
Configured devices:
lo enp0s3
Currently active devices:
lo enp0s3 enp0s8
[root@localhost ~]# 
3
02.09.2021, 12:53
3 ответа

Я думаю, что одним из способов было бы использовать библиотеку gpg и делать то же самое, что и утилита CLI.

В противном случае вы можете отфильтровать вывод gpg:

#!/bin/bash
if [ -z "$1" ]; then
    echo "No filename specified" 1>&2
    exit 1
fi
if [ ! -r "$1" ]; then
    echo "File not found" 1>&2
    exit 2
fi
gpg --list-packets "$1" \
    | grep ", name=" | cut -f2 -d '"'

(Предполагается, что встроенное имя не содержит двойных кавычек ).

1
02.09.2021, 13:12

Чтобы получить данные между name="и ",в строке после строки с надписью :literal data packet:, используйтеsed:

gpg --list-packets file.gpg |
sed -e '/^:literal data packet:$/!d' \
    -e 'N' \
    -e 's/[^=]*name="//' \
    -e 's/",$//' \
    -e 'q'

Выражение sedсначала удаляет все строки, считанные из gpg, пока не найдет строку :literal data packet:. Затем он немедленно добавляет следующую строку с Nи удаляет все, что сейчас находится в буфере, вплоть до первой подстроки name="включительно. Затем он удаляет ",из конца строки и завершает работу (, выводя то, что осталось в буфере ).

Это позволяет нам обрабатывать имена файлов, такие как file",или name="hello", встроенные в данные gpg.

Обратите внимание, что перед внедрением в файл gpgспециальные символы будут закодированы как шестнадцатеричная управляющая последовательность. Например, каждый символ новой строки будет закодирован как \x0a.

3
02.09.2021, 13:34

Краткая версия:

gpg --list-packets file.gpg | awk -F\" '/created/ {print $2}'
0
02.09.2021, 15:56

Теги

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