Я использую в качестве покупателя коммерческую VPN для OS / X и iPhone. Я также инициализирую VNP на работе для iOS / MacO и имею дома VPN на основе Debian с StrongSwan.
Я записал файл обеспечения .mobileconfig
, созданный исполняемым файлом Sierra MacOS, предоставленным моим коммерческим поставщиком VPN. Я хотел бы получить детали конфигурации оттуда, чтобы не устанавливать их программное обеспечение Linux и настраивать его вручную, однако поле данных SharedSecret XML зашифровано.
На работе я использовал Apple Configurator 2
только для того, чтобы зашифровать свой общий секрет для создания скелета файлов инициализации mobileconfig для устройств Apple, однако я до сих пор не знаю, в каком формате это поле.
Я заметил, что этот «зашифрованный» пароль может быть помещен в ipsec.secrets
вместо паролей в виде открытого текста, например:
@vpngroup : PSK 0scGFzc3dvcmQK
Аналогичным образом, опять же, в поставляемых файлах Apple mobileconfig для клиентов / конечных пользователей, его можно найти снова:
SharedSecret
cGFzc3dvcmQK
Так что же на самом деле это формат? А как его зашифровать и зашифровать? Я точно знаю, что это не настоящий Общий секрет в открытом виде.
Формат кодирования Shared Secret/группового пароля на самом деле Base64.
С сайта документации strongswan:
В качестве альтернативы, общие секреты могут быть представлены в виде шестнадцатеричных или двоичные значения в кодировке Base64. Последовательность символов, начинающаяся с 0x интерпретируется как последовательность шестнадцатеричных цифр. Аналогично, последовательность символов начинающаяся с 0, интерпретируется как двоичные данные в кодировке Base64. данные.
На самом деле формат Base64 для группового пароля, помимо использования в конфигурациях Linux/FreeBSD IPsec и файлах обеспечения Apple, также используется в файлах клиентов Cisco VPN.
На самом деле оправданием использования Base64 является защита пароля от посторонних глаз и конечных пользователей. Зачем тогда использовать такой базовый алгоритм кодирования...
Итак, в конце концов, чтобы декодировать его в Linux, его нужно взять дословно из поля данных Apple SharedSecret, или, если начать захват с ipsec.secrets
, нужно игнорировать ведущие "0" из строки:
$echo cGFzc3dvcmQK | base64 -d
password
Для декодирования в FreeBSD/OS/X:
$echo cGFzc3dvcmQK | base64 -D
password
Аналогично, для обратного кодирования:
$echo password | base64
cGFzc3dvcmQK