Enviar um arquivo
  1. base64hub
  2. Web e tokens
  3. PowerShell -EncodedCommand

Decodificador de EncodedCommand do PowerShell

Cole uma linha de comando inteira de um alerta, como powershell.exe -nop -w hidden -enc JAB…, ou só o Base64. O decodificador encontra o argumento, transforma o Base64 UTF-16LE de volta no script e lista os payloads Base64 aninhados nele.

Grátis sem cadastro, sem limites Local nada é enviado Aninhados payloads FromBase64String encontrados e listados Atualizado 27 de out. de 2026
Entrada 0 BSaída 0 B

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como decodificar um comando PowerShell codificado

  1. Copie a linha de comando completa do alerta, do evento de criação de processo ou do console do EDR e cole em Linha de comando ou Base64. Aspas em volta do Base64 não atrapalham.
  2. O decodificador encontra o argumento -EncodedCommand em qualquer abreviação (-e, -ec, -enc e assim por diante, com - ou /) e o decodifica.
  3. O status informa qual charset foi usado: UTF-16LE, como o PowerShell espera, ou UTF-8 quando os bytes não parecem UTF-16.
  4. Leia o Script decodificado. Se ele contiver literais [Convert]::FromBase64String('…'), eles são listados abaixo com o tipo detectado e o tamanho. Payloads de texto abrem no painel de saída, os compactados (gzip, zlib ou deflate bruto, como usados com GzipStream e DeflateStream) ganham um botão para descompactar, e outros payloads binários podem ser salvos como arquivo.

Um exemplo inofensivo:

powershell.exe -NoP -NonI -W Hidden -Enc VwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAnAGgAZQBsAGwAbwAnAA==

decodifica para Write-Output 'hello'. O mesmo texto em Base64 UTF-8 seria V3JpdGUtT3V0cHV0ICdoZWxsbyc=, que o PowerShell rejeitaria ou leria errado.

Reconhecer comandos codificados em logs

Por causa do UTF-16LE, o começo de um script codificado tem uma forma Base64 reconhecível. Regras de detecção procuram por estas:

O Base64 começa comO script começa com
JAB$ (uma atribuição de variável, ex.: JABzAD0A é $s=)
SQBFAFgAIEX
aQBlAHgAiex
SQBuAHYAbwBrAGUALQBFAHgAcAByAGUAcwBzAGkAbwBuAAInvoke-Expression
SQBuAHYAbwBrAGUALQBXAGUAYgBSAGUAcQB1AGUAcwB0AAInvoke-WebRequest
TgBlAHcALQBPAGIAagBlAGMAdAANew-Object
WwBDAG8AbgB2AGUAcgB0AF0AOgA6AEYAcgBvAG0AQgBhAHMAZQA2ADQAUwB0AHIAaQBuAGcA[Convert]::FromBase64String

Essas formas só valem bem no começo. Mais adiante no script, a mesma palavra tem três grafias Base64 possíveis, conforme o deslocamento em bytes módulo 3, e é por isso que buscar uma única grafia nos logs deixa passar as outras duas.

Analisar um comando suspeito com segurança

Comandos codificados são uma forma padrão de esconder um script de quem olha de relance a lista de processos. Quando um deles aparece num alerta:

  • Só decodifique. Esta página converte texto e não consegue se conectar a outros servidores. Não cole o comando numa janela do PowerShell e nunca passe a saída decodificada para iex.
  • Leia em busca de intenção e indicadores. Anote URLs, domínios, endereços IP, caminhos de arquivo, chaves de registro e nomes de tarefas agendadas para suas notas do incidente e listas de bloqueio.
  • Procure mais camadas. Chamadas FromBase64String aninhadas, IO.Compression.DeflateStream ou GzipStream, -join sobre códigos de caracteres e inversão de strings são embrulhos comuns. Decodifique cada camada do mesmo jeito.
  • Trate binários extraídos como amostras. Um payload salvo da lista de aninhados pode ser malware. Calcule o hash e analise-o só num ambiente isolado.
  • Confira os logs que já têm o texto puro. Com o Script Block Logging ativado, o Windows registra o script decodificado como evento 4104 em Microsoft-Windows-PowerShell/Operational. Eventos de criação de processo (Security 4688 com auditoria de linha de comando, ou Sysmon evento 1) registram a própria linha de comando codificada.

Usos legítimos e a aba de codificação

Administradores usam -EncodedCommand para evitar problemas de aspas quando um script passa pelo cmd.exe, por uma tarefa agendada, um shell remoto ou uma ferramenta de gerenciamento de configuração. Codificar script gera o argumento: digite o script, escolha o prefixo em Comando (powershell -NoProfile -EncodedCommand, pwsh -NoProfile -EncodedCommand, powershell -enc ou Só Base64) e copie. Um aviso aparece quando o resultado passa do limite de 8.191 caracteres por linha de comando do cmd.exe.

Decodificar em Python e PowerShell

import base64
script = base64.b64decode(b64).decode("utf-16-le")
$script = [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($b64))

Os dois só devolvem texto. Há mais sobre o lado da codificação na página de Base64 no PowerShell e no conversor UTF-16 para Base64.

Problemas comuns

  • A saída parece cheia de caracteres chineses: Base64 UTF-8 decodificado como UTF-16. A ferramenta recorre ao UTF-8 quando o padrão de bytes não combina com UTF-16, e a linha de status diz qual charset usou.
  • Base64 inválido: o comando foi cortado pelo limite de um campo de log ou quebrado em várias linhas. Junte os pedaços e remova o que vier depois do Base64 e não fizer parte dele.
  • A linha de comando não decodifica de jeito nenhum: o Base64 pode estar dentro de uma string -Command "…FromBase64String('…')…" em vez de vir depois de -EncodedCommand. Cole só a string Base64; se ela não for texto UTF-16, o decodificador Base64 ou o Base64 para arquivo mostra o que ela é.

Perguntas frequentes

O que o powershell -enc faz?

-enc é uma forma curta de -EncodedCommand. O PowerShell decodifica o argumento Base64 como texto UTF-16LE e o executa como script. Ele também aceita outras formas curtas, como -e e -ec.

É seguro decodificar aqui um comando PowerShell malicioso?

Decodificar é uma conversão de texto; nada é executado, e a Content Security Policy desta página bloqueia todas as requisições de rede, exceto as do contador de visitas da Cloudflare. Nunca rode o script decodificado para ver o que ele faz, e manipule payloads binários salvos só dentro de um ambiente de análise isolado.

Por que um caractere sim, outro não, é A no Base64?

O PowerShell espera UTF-16LE, em que cada caractere ASCII é seguido de um byte zero. Esses bytes zero geram o padrão repetido de A, como em VwByAGkAdABlAC0A para Write-.

Como decodificar -EncodedCommand sem executá-lo no PowerShell?

Use [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($b64)), que só devolve o texto. Não passe o resultado para Invoke-Expression nem para iex.