Pular para o conteúdo principal

Decodificador de Frame WebSocket (RFC 6455)

Cole bytes de frame WebSocket bruto (hexadecimal ou binário) e decodifique o cabeçalho RFC 6455 campo por campo — FIN, RSV, opcode, MASK, formas de comprimento de payload de 7/16/64 bits, chave de mascaramento e payload desmascarado XOR — com detalhamento por offset de byte.

Entrada

Saída

Campos do Frame

Resultado
CampoValor
No data yet

Estrutura de Bytes

Resultado
OffsetBytes (hex)ParteDecodificado
No data yet

Payload

Resultado
CampoValor
No data yet

Exportar JSON

JSON
 
Isso foi útil?

Guias

O que é um frame WebSocket?

Cada mensagem enviada por uma conexão WebSocket é encapsulada em um frame — um pequeno cabeçalho binário (definido por RFC 6455 §5.2) seguido pelos dados de payload. O cabeçalho compacta vários campos em seus primeiros um ou dois bytes: um bit FIN, três bits RSV (reservados), um opcode de 4 bits que identifica o tipo de frame (text, binary, ping, pong, close…), um bit MASK e um comprimento de payload que pode levar três larguras de byte diferentes dependendo de quão grande é o payload. Se o frame for mascarado, o payload também será feito XOR contra uma chave de mascaramento de 4 bytes antes de você poder lê-lo. Nenhum disso é legível a olho nu — esta ferramenta o decodifica campo por campo.

Como usar

  1. Cole os bytes do frame bruto como hex (separados por espaço, dois-pontos ou 0x81 05 48 65 6c 6c 6f e 0x81,0x05,0x48,0x65,0x6c,0x6c,0x6f ambos funcionam) ou como uma string de bits binária (p. ex. 10000001 00000101 ...).
  2. Frame Fields mostra FIN, RSV1–3, opcode (com seu nome), MASK, tanto o campo de comprimento de 7 bits bruto quanto o comprimento de payload real resolvido, chave de mascaramento (se houver) e quaisquer avisos de protocolo.
  3. Byte Structure divide o frame por offset de byte — quais bytes compõem o cabeçalho, o comprimento estendido (se presente), a chave de mascaramento (se presente) e o payload — espelhando o layout no diagrama RFC 6455.
  4. Payload mostra o payload conforme recebido (ainda mascarado, se aplicável), o hex não-XOR-mascarado e — para frames de texto — o texto UTF-8 decodificado. Frames de fechamento têm seu código de status de 2 bytes e frase de motivo UTF-8 separados individualmente.
  5. JSON Export fornece os mesmos campos decodificados como um único objeto JSON para scripts ou relatórios de bugs.

As três formas de comprimento de payload

Os 7 bits inferiores do segundo byte codificam o comprimento, mas qual significado eles carregam depende do valor:

  • 0–125 — esse é o comprimento de payload real.
  • 126 — o comprimento real segue como os próximos 2 bytes (big-endian, unsigned 16-bit).
  • 127 — o comprimento real segue como os próximos 8 bytes (big-endian, unsigned 64-bit; o bit superior deve ser 0 por RFC).

Mascaramento

Frames cliente-para-servidor devem ser mascarados (MASK=1) — o payload é feito XOR byte-a-byte contra uma chave de mascaramento de 4 bytes que segue imediatamente o campo de comprimento, reciclando a chave a cada 4 bytes (payload[i] XOR key[i mod 4]). Frames servidor-para-cliente normalmente não são mascarados. Esta ferramenta desmascaraautomaticamente sempre que MASK=1 e mostra o hex bruto e não-mascarado para que você possa comparar.

O que essa ferramenta sinaliza como aviso

  • Um control frame (close/ping/pong, opcode 0x8–0xA) com FIN=0, ou com payload maior que 125 bytes — ambos são inválidos por RFC 6455 §5.5 (control frames não podem ser fragmentados ou carregar payloads grandes).
  • Qualquer bit RSV definido sem uma extensão negociada para defini-lo.
  • Um opcode reservado (0x3–0x7 ou 0xB–0xF) — indefinido sem uma extensão.
  • Um frame truncado — comprimento declarado excede os bytes realmente fornecidos.

O que essa ferramenta não faz

Decodifica o cabeçalho de um único frame já capturado — não abre uma conexão WebSocket ativa, não monta uma sequência de frames fragmentados (frames de continuação opcode 0x0) em uma mensagem lógica, e não valida o handshake HTTP Upgrade que precede qualquer tráfego WebSocket.

FAQ

Onde obtenho bytes de frame bruto para colar? Capture-os do painel DevTools Network do seu navegador (aba WS → clique em um frame → bytes brutos), de uma captura de pacotes (Wireshark's "Follow → WebSocket Stream" ou visualização hex do payload TCP) ou de uma ferramenta proxy como Burp/mitmproxy.

Por que minha entrada falha ao fazer parse? Um cabeçalho de frame é de no mínimo 2 bytes — certifique-se de ter colado o frame completo, não apenas o payload. Entrada hex precisa de um número par de dígitos hex; entrada binária precisa de um número de bits que seja múltiplo de 8.

Meus dados foram enviados para algum lugar? Não — a decodificação é executada completamente em seu navegador. Nada que você cola sai do seu dispositivo.

Ferramentas relacionadas

rfc6455wsopcodehandshakehexprotocolmaskpingpongnetwork

Mais formas de usar esta ferramenta

API REST

curl -X POST https://api.iotools.cloud/v1/tool/websocket-frame-decoder \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "frameInput": "81 05 48 65 6c 6c 6f"
  }'

Troque pela sua própria chave, da sua conta. Os campos da ferramenta viram o corpo da requisição — sem envelope.

Peça a um agente de IA

Use the IOTools `websocket-frame-decoder` tool (WebSocket Frame Decoder (RFC 6455)) on this input:

YOUR_INPUT_HERE

Cole isto em qualquer agente conectado ao servidor MCP do IOTools e depois adicione sua entrada.

Widget para incorporar

<iframe
  src="https://iotools.cloud/embed/websocket-frame-decoder/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Decodificador de Frame WebSocket (RFC 6455) — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

Coloque isso na sua própria página — grátis, sem chave, só um link de volta.

Custo por chamadaA partir de 5 créditos

Também disponível via

Ama as ferramentas? Livre-se dos anúncios.

Um único pagamento remove todos os anúncios da sua conta, para sempre. Sem assinatura, sem rastreamento.