Что заставляет firefox внутри контейнера запускать новое окно firefox снаружи на хосте с UID пользователя хоста? Разве это не странно для LXC?

Недостаточно знать алгоритм RC2; вам также необходимо согласовать режим работы и схему заполнения для некоторых режимов. Командная строка OpenSSL (и, по большей части, API EVP) по умолчанию использует режим CBC и заполнение PKCS5 (технически PKCS7), что может быть правильным, а может и нет.

openssl enc по умолчанию выполняет шифрование и дешифрование на основе пароля , что означает фактический ключ и IV (за исключением ECB, у которого нет IV), используемые для шифры получены с помощью процесса хеширования , называемого функцией вывода ключа на основе пароля (PBKDF), и нестандартный для загрузки; любой аргумент, который вы даете как -iv , игнорируется - что хорошо, потому что указанный вами аргумент в любом случае недействителен, см. ниже. OpenSSL PBKDF (как и другие лучшие) использует случайную «соль», которая должна храниться в формате, специфичном для OpenSSL, в начале зашифрованного текста, и отсутствие этой соли вызывает ваше сообщение об ошибке bad magic number . Подробнее см. https://crypto.stackexchange.com/questions/3298/is-there-a-standard-for-openssl-interoperable-aes-encryption/35614#35614 .

Поскольку у вас есть ключ, НЕ пароль и IV, преобразуйте их оба в шестнадцатеричный (не base64) и используйте:

 openssl enc -base64 -d -rc2[-mode] -K $key_in_hex -iv $iv_in_hex
 # note that's -K uppercase not -k lowercase 
 # you can use -a as a synonym for -base64 
 # For a block mode like CBC if standard PKCS5/7 padding wasn't used
 # add -nopad and handle the last few bytes manually as needed.
 # If your input is more than 76 chars per line (as your Q showed) 
 # and OpenSSL version before 1.1.0 you also need -A (uppercase).

Есть много способов преобразовать base64 в шестнадцатеричный, но удобный вариант:

 somevar=$( echo some_base64 | openssl base64 -d | xxd -p )
 # xxd -p outputs only the hex with no labels or ASCII etc
 # and thus is suitable as an argument to openssl enc 
 # without any processing by tools like sed, tr, awk 

2
16.08.2016, 12:28
1 ответ

подстановка команд заключена в двойные кавычки в (t) csh (который вы, кажется, используете), как в оболочках типа Борна.

Итак, в:

alias search "find `pwd` -name "

Вы фактически делаете что-то вроде:

alias search 'find /some/dir -name '

Где / some / dir был текущим каталогом на момент выполнения команды alias .

Здесь вы хотите:

alias search 'find $cwd:q -name'

$ cwd автоматически устанавливается tcsh (как и $ PWD в современных версиях, например, в оболочках POSIX), поэтому вы можно использовать его вместо менее эффективного и менее надежного `pwd` .

Мы используем одинарные (строгие) кавычки, чтобы $ cwd не раскрывались внутри.

$ cwd: q - передать значение переменной как один аргумент, а не позволить ему разделиться.

Также обратите внимание, что вам не нужен пробел после -name выше.

Если вы хотите использовать pwd (например, чтобы получить канонический (без символьных ссылок) путь к текущему рабочему каталогу, как в некоторых реализациях pwd , таких как GNU) когда POSIXLY_CORRECT не находится в среде), вы должны использовать:

alias search 'find "`pwd`" -name'

Хотя это не сработает, если путь к текущему каталогу содержит символы новой строки.

Обратите внимание, что вы не можете использовать sudo search , поскольку псевдонимы раскрываются только в позиции команды в (t) csh. В оболочках POSIX вы можете:

alias sudo='sudo '

Сообщать оболочке, что слово, следующее за sudo , также должно подвергаться расширению псевдонима, но этот трюк не работает в (t) csh.

Эквивалент POSIX sh (или bash / zsh / ksh ...) будет иметь следующий вид:

alias search='find "$PWD" -name'
-121) --- 57925-

Он подключается к работающему экземпляру Firefox на том же дисплее X и просит его просто открыть новое окно.

Такое же поведение наблюдается при попытке запустить Firefox под ssh -Y (даже на другом хосте). (Однако по какой-то причине не под su - SOME_USER . Это загадка для меня.)

Это поведение можно отключить с помощью параметра:

firefox --new-instance
2
27.01.2020, 22:20

Теги

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