#powershell #encryption #base64 #citrix #one-time-password
Вопрос:
С обновлением citrix netscaler OTP теперь включен в атрибут active Directory.
Инструмент OTP explorer, созданный Андреасом Ником, до сих пор работал идеально.
https://www.andreasnick.com/102-otpedit.html
В документации citrix говорится, что секрет OTP теперь зашифрован сертификатом. После шифрования строка ХЭША, хранящаяся в атрибуте Active Directory, выглядит следующим образом.
Секрет ОТП 3ДАЖНБЫЛК72СФКВУОЛУ6Е4ЗЕ
Хэш (в Active Directory) jjtTl0YY3MGIF77HPcqYs2w2bAc=.sbntdorhH2Ju15c5.kbJ8_AP8Ytu7BiNuICEfkiSgOVJMudtNXgn2eStfoOGyV42v6VbzLA==
Я попытался зашифровать секрет OTP с помощью используемого сертификата, но их намного больше (всего 346 — шифрование citrix содержит 102).
На веб-сайте citrix говорится, что он использует base64 для шифрования данных.
Я пытался использовать этот код, но ХЭШ не очень хорош.
$enc = [system.Text.Encoding]::UTF8
$string = "3DHAZHNBYLK72SFKVUOLU6E4ZE"
$data=$enc.GetBytes($string)
$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
$ResultHash = $sha1.ComputeHash($data)
$str_out = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($ResultHash))
write-host $str_out
Я предполагаю, что он использует отпечаток пальца сертификата в качестве «ключа», но я не смог найти функцию, которая шифрует строку в base64 с помощью ключа / парольной фразы.
Я пробовал другие функции, созданные для шифрования строк из сертификата, но не смог найти ту, которая соответствует той, что была создана Citrix.
Я не очень хорошо разбираюсь во всем шифровании. Я знаю только самые основы, поэтому ответ может быть очевиден, и я просто не вижу его из-за отсутствия у меня навыков в этой области.
Заранее благодарю вас за вашу помощь.
Комментарии:
1. Base64-это просто формат данных, а не метод шифрования. Я предполагаю, что они меняют данные на Base64, а затем шифруют их с помощью шифра/ключа
2. Добро пожаловать в SO.
Hash (in Active Directory)
Выглядит так, какbase64encode(kid).base64encode(IV).base64encode(cipherdata)
описано в этом citrix.com статья.kid
должен быть идентификатор ключа (отпечаток большого пальца сертификата).IV
является вектором инициализации, уникальным значением (для каждого устройства) или первыми 32 (или 16) байтами зашифрованных данных.cipherdata
это зашифрованный текст или зашифрованная структура, состоящая из секрета, тега и алгоритма. Вы должны быть в состоянии расшифровать информацию с помощью сертификата (хэш открытые/закрытые ключи).varnetscalerotptoolmain.py
должно дать дополнительные подсказки. Удачи.