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
| Campo | Valor |
|---|---|
| No data yet | |
Estrutura de Bytes
| Offset | Bytes (hex) | Parte | Decodificado |
|---|---|---|---|
| No data yet | |||
Payload
| Campo | Valor |
|---|---|
| No data yet | |
Exportar JSON
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
- Cole os bytes do frame bruto como hex (separados por espaço, dois-pontos ou
0x—81 05 48 65 6c 6c 6fe0x81,0x05,0x48,0x65,0x6c,0x6c,0x6fambos funcionam) ou como uma string de bits binária (p. ex.10000001 00000101 ...). - 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.
- 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.
- 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.
- 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
- Hex Dump Viewer — para uma visualização geral em nível de byte de qualquer blob binário.
- HTTP Header Analyzer — decodifique o handshake HTTP Upgrade que precede uma conexão WebSocket.
- Raw HTTP Request Parser — faça parse da linha de requisição HTTP bruta e dos cabeçalhos.
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_HERECole 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 chamada | A partir de 5 créditos |
|---|