Поиск по сайту:

Unprotect-CmsMessage (Microsoft.PowerShell.Security)


Unprotect-CmsMessage

Модуль:
Microsoft.PowerShell.Security

Расшифровывает содержимое, зашифрованное с использованием формата синтаксиса криптографического сообщения.

Синтаксис

Unprotect-CmsMessage
         [-EventLogRecord] <EventLogRecord>
         [[-To] <CmsMessageRecipient[]>]
         [-IncludeContext]
         [<CommonParameters>]
Unprotect-CmsMessage
         [-Content] <string>
         [[-To] <CmsMessageRecipient[]>]
         [-IncludeContext]
         [<CommonParameters>]
Unprotect-CmsMessage
         [-Path] <string>
         [[-To] <CmsMessageRecipient[]>]
         [-IncludeContext]
         [<CommonParameters>]
Unprotect-CmsMessage
         [-LiteralPath] <string>
         [[-To] <CmsMessageRecipient[]>]
         [-IncludeContext]
         [<CommonParameters>]

Описание

Командлет Unprotect-CmsMessage расшифровывает содержимое, зашифрованное с использованием формата синтаксиса криптографических сообщений (CMS).

Командлеты CMS поддерживают шифрование и дешифрование содержимого с использованием стандартного формата IETF для криптографической защиты сообщений, как описано в RFC5652.

Стандарт шифрования CMS использует криптографию с открытым ключом, при которой ключи, используемые для шифрования контента (открытый ключ), и ключи, используемые для расшифровки контента (закрытый ключ), являются отдельными. Ваш открытый ключ может широко использоваться и не является конфиденциальными данными. Если какой-либо контент зашифрован с помощью этого открытого ключа, его можно расшифровать только вашим закрытым ключом. Дополнительные сведения см. в разделе Криптография с открытым ключом.

Unprotect-CmsMessage расшифровывает содержимое, зашифрованное в формате CMS. Вы можете запустить этот командлет для расшифровки зашифрованного содержимого, запустив командлет Protect-CmsMessage. Вы можете указать содержимое, которое хотите расшифровать, в виде строки, по идентификационному номеру записи журнала событий шифрования или по пути к зашифрованному содержимому. Командлет Unprotect-CmsMessage возвращает расшифрованное содержимое.

Поддержка Linux и macOS была добавлена в PowerShell 7.1.

Примеры

Пример 1: Расшифровать сообщение

В следующем примере вы расшифровываете содержимое, расположенное по буквальному пути C:\Users\Test\Documents\PowerShell. В качестве значения обязательного параметра To в этом примере используется отпечаток сертификата, который использовался для выполнения шифрования. Результатом является расшифрованное сообщение «Попробуйте новую команду «Разорвать все».

$parameters = @{
  LiteralPath = "C:\Users\Test\Documents\PowerShell\Future_Plans.txt"
  To = '0f 8j b1 ab e0 ce 35 1d 67 d2 f2 6f a2 d2 00 cl 22 z9 m9 85'
}
Unprotect-CmsMessage -LiteralPath @parameters

Try the new Break All command

Пример 2. Расшифровка зашифрованного сообщения журнала событий.

В следующем примере получается зашифрованное событие из журнала событий PowerShell и расшифровывается его с помощью Unprotect-CmsMessage.

$event = Get-WinEvent Microsoft-Windows-PowerShell/Operational -MaxEvents 1 |
    Where-Object Id -eq 4104
Unprotect-CmsMessage -EventLogRecord $event

Пример 3. Расшифровка зашифрованных сообщений журнала событий с помощью конвейера

В следующем примере все зашифрованные события получаются из журнала событий PowerShell и расшифровываются с помощью Unprotect-CmsMessage.

Get-WinEvent Microsoft-Windows-PowerShell/Operational |
    Where-Object Id -eq 4104 |
    Unprotect-CmsMessage

Параметры

-Content

Указывает зашифрованную строку или переменную, содержащую зашифрованную строку.

Тип :

String

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-EventLogRecord

Указывает запись журнала событий, содержащую зашифрованное сообщение CMS.

Тип :

PSОбъект

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-IncludeContext

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-LiteralPath

Указывает путь к зашифрованному содержимому, которое вы хотите расшифровать. В отличие от Path, значение LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности.

Тип :

String

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Path

Указывает путь к зашифрованному содержимому, которое вы хотите расшифровать.

Тип :

String

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-To

Указывает одного или нескольких получателей сообщения CMS, указанных в любом из следующих форматов:

  • Фактический сертификат (полученный от поставщика сертификатов).
  • Путь к файлу, содержащему сертификат.
  • Путь к каталогу, содержащему сертификат.
  • Отпечаток сертификата (используется для просмотра в хранилище сертификатов).
  • Имя субъекта сертификата (используется для поиска в хранилище сертификатов).
Тип :

CmsMessageRecipient[]

Позиция:

1

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

Запись журнала событий

Строка

В этот командлет можно передать объект, содержащий зашифрованное содержимое.

Выходы

Строка

Этот командлет возвращает незашифрованное сообщение.