Полагаю, цель состоит в том, чтобы убедиться, что эти каталоги пусты после перезагрузки. Эти тарандиски потребляют лишь крошечное количество оперативной памяти.
Если вы их отключите, то вы должны позаботиться о том, чтобы эти каталоги были пустыми. Возможно, это действие не так просто выполнить в той части фазы загрузки, когда это необходимо
. инструмент командной строки openssl
является демонстрацией библиотеки OpenSSL. Она имеет довольно бессистемный интерфейс и плохую документацию. Я не рекомендую использовать его ни для чего, кроме тестирования библиотеки OpenSSL. (Да, есть люди, которые управляют ЦС с помощью openssl
. Боюсь за их вменяемость.)
AES работает с ключом, а не с паролем. Ключ AES-128 равен ровно 16 байтам.
Опция -k
не принимает ключ за ввод, а берет пароль. Этот пароль хэшируется для получения ключа; по умолчанию используется MD5 и его можно переопределить опцией командной строки -md
. Это не документировано в руководстве, насколько я вижу, вы просто должны прочитать источник (apps/enc.c
, вызвать EVP_BytesToKey
). Дайджест MD5 выдает 16-байтовое значение из любой строки, но это не то, что здесь использовалось. В данном случае ключом на самом деле является REDRYDER\0\0\0\0\0\0
, где \0
- нулевые байты.
Опция -K
позволяет передать ключ, в шестнадцатеричной системе. Если передается меньше байт, чем размер ключа, то OpenSSL завершается нулевым байтом. Таким образом, чтобы передать ключ -COPY17\0\0\0\0\0
, можно передать $(echo REDRYDER | od -An -tx1 | tr -d ' ')
, что равно 5245445259444552
.
Операция расшифровки AES-128-ECB блока шифрованного текста FC89BFC2B05F1C2E64B8784392783AC9 с ключом 524544525944455200000000000000 дает 464c41473d4441495359000000000000 (используя шестнадцатеричную форму для представления последовательностей байтов). Это FLAG=DAISY\0\0\0\0\0
.
За небольшие криптографические манипуляции, подобные этим, мне нравится топ-уровень Python с библиотекой Pycrypto.
>>> from binascii import hexlify, unhexlify
>>> from Crypto.Cipher import AES
>>> ciphertext = unhexlify('FC 89 BF C2 B0 5F 1C 2E 64 B8 78 43 92 78 3A C9'.replace(' ', ''))
>>> key = 'REDRYDER'.ljust(16, '\0')
>>> AES.new(key, AES.MODE_ECB).decrypt(ciphertext)
'FLAG=DAISY\x00\x00\x00\x00\x00\x00'
Это работает:
echo '0: FC89BFC2B05F1C2E64B8784392783AC9' | xxd -r | openssl enc -aes-128-ecb -d -nopad -nosalt -K 5245445259444552
Я не понимаю ввода для опции -k, но если вы конвертируете ваш простой текстовый ключ в hex (правильный порядок байт) и используете вместо него -K, это работает.
openssl - это вуду!
.