Introdução
A Lantern Room organiza pequenas oficinas de lanternas de papel. Seu aplicativo de reservas usa HTTPS, portanto uma captura comum mostra tráfego criptografado em vez dos detalhes da reserva. Você tem autorização para analisar este serviço de treinamento controlado e seus visitantes sintéticos. Primeiro, lerá um registro normal de referência; depois, fará e capturará uma nova visita própria.
Você produzirá um arquivo PCAPNG real e um arquivo separado de chaves TLS que outro analista autorizado poderá abrir. São necessários conhecimentos básicos de navegação no Wireshark, filtros de exibição, entrada simples no terminal e caminhos. Não é preciso programar nem administrar certificados. Você usará o Terminal Emulator e as janelas do Wireshark em Desktop. Este laboratório prepara seus próprios arquivos e serviço local de forma independente. A duração é uma estimativa do autor que inclui leitura e erros comuns de digitação.
Torne legível o registro normal de referência
Nesta etapa, você decifrará uma reserva normal e aprenderá quais campos estabelecem seu resultado.
Comece em Desktop. Abra Applications → Terminal Emulator, no canto inferior esquerdo, e execute o comando completo. Este terminal ficará ocupado até você fechar o Wireshark.
wireshark -C Booking /home/labex/project/booking/input/casebook.pcapng
-C Booking seleciona o perfil de configuração preparado e inicialmente vazio Booking. Um perfil armazena as configurações da janela de análise. Maximize o Wireshark pelo botão na barra de título. A captura de entrada e input/casebook.keys são originais somente para leitura. Salve seu trabalho em output/.
HTTPS transporta HTTP dentro de TLS, que criptografa a conversa do aplicativo. TCP transporta os registros TLS entre as extremidades. Este registro usa TLS 1.3 e HTTP/1.1. O serviço local está em 127.0.0.1:18443, e a identidade local de teste de Hazel usa 127.0.0.21. Esses endereços compartilham o mesmo contêiner de treinamento; não são computadores físicos separados.
Digite http na barra de filtro de exibição e pressione Enter. Inicialmente, não há linhas HTTP decifradas. Limpe a barra e procure o handshake TLS e Application Data criptografados. O handshake estabelece a sessão; Application Data transporta as mensagens de reserva. A captura sozinha não fornece o texto em claro.
Um arquivo de chaves TLS contém segredos que um cliente autorizado registrou deliberadamente para sessões específicas. Não é uma lista de senhas nem o certificado do servidor. Um certificado de servidor ou uma chave privada RSA não substitui os segredos desta sessão TLS 1.3. No trabalho real, trate capturas e arquivos de chaves como dados sensíveis e compartilhe-os apenas dentro do escopo autorizado de análise. Aqui, as identidades, reservas e segredos pertencem ao exercício local.
Abra Edit → Preferences. Expanda Protocols, clique na lista de protocolos, digite tls e selecione TLS. Em (Pre)-Master-Secret log filename, informe o caminho absoluto abaixo. Mantenha habilitados Reassemble TLS records spanning multiple TCP segments e Reassemble TLS Application Data spanning multiple TLS records, e clique em OK.
/home/labex/project/booking/input/casebook.keys
Aplique novamente o filtro http. Agora há uma requisição POST e uma resposta HTTP. Se continuar vazio, limpe o filtro, confira a grafia do caminho e volte às preferências TLS. Um arquivo de chaves incorreto ou não relacionado deixa Application Data criptografados, mas não comprova a ausência de uma requisição.
Selecione o POST. HTTP é um protocolo de requisições e respostas. POST envia dados, e /api/bookings é o URI do recurso de reservas. Clique com o botão direito na requisição e selecione Follow → TLS Stream. Follow TLS Stream mostra os bytes decifrados do aplicativo; Follow TCP Stream ainda mostra os bytes criptografados do transporte. Leia ambos os lados, rolando se necessário. Identifique o emissor pelas linhas de requisição e de status da resposta, não apenas pela cor do texto.
O corpo da requisição é JSON, um conjunto de valores nomeados entre chaves. Leia visitor, attempt, workshop e slot. A resposta repete esses valores e acrescenta accepted, reason e confirmation. A reserva normal de Hazel tem accepted: true, reason: "confirmed", e sua confirmação pertence a hazel-01. Em JSON, true é um booleano, os valores entre aspas são strings, e null representa a ausência de valor.
HTTP/1.1 200 OK significa que o servidor processou esta requisição HTTP. O resultado da reserva no aplicativo é determinado pelos campos JSON. Essa distinção será importante no próximo laboratório. O grande espaço em branco após o JSON é um preenchimento didático intencional que divide a resposta real em vários segmentos TLS/TCP. Não é outra reserva.

Leia o attempt repetido na resposta junto com accepted, reason e confirmation. O status HTTP sozinho não basta.
Feche Follow usando Close. O Wireshark deixa um filtro tcp.stream eq ..., exibindo toda a conexão TCP selecionada, inclusive o handshake e os segmentos. Um filtro de exibição muda apenas a visualização. Feche a janela principal para salvar as configurações do perfil e liberar o terminal. A configuração está pronta quando Booking decifra a requisição e a resposta completas do registro de referência.
Capture e reabra sua própria visita
Nesta etapa, você capturará uma nova visita autorizada e reabrirá de forma independente seus pacotes realmente salvos.
Comece em Desktop, no prompt do Terminal Emulator após fechar a janela de referência. O arquivo de chaves da referência não abre outra sessão TLS. Você capturará uma nova visita e manterá seus próprios segredos junto da captura.
Execute o inicializador de captura preparado:
python3 /opt/labex/booking/capture.py
Isso abre a interface real de captura ao vivo do Wireshark no perfil separado BookingLive. A fonte fixa de pacotes captura somente tráfego TCP de loopback na porta do curso 18443, com limites de 15 minutos e 4 MB. Ela usa um pipe, um canal de bytes ao vivo para o Wireshark, em vez de uma reprodução. Não concede privilégios gerais de captura nem altera as configurações de login. Deixe este terminal e o Wireshark abertos. Aguarde Live packet feed ready no terminal e a janela ativa de captura antes de enviar tráfego.
Abra um segundo Terminal Emulator por Applications → Terminal Emulator. O painel inferior permite alternar entre os dois terminais e o Wireshark. No novo terminal, execute o cliente autorizado:
python3 /opt/labex/booking/booking.py client
O cliente preparado verifica o certificado e o nome do host do serviço local, faz uma requisição real de reserva e grava os segredos desta nova sessão em /home/labex/project/booking/output/live.keys. Ele informa que a visita terminou sem imprimir a resposta. O novo valor de attempt será diferente a cada execução. O cliente your-visit usa 127.0.0.26.
Volte ao Wireshark pelo painel inferior. Espere os pacotes realmente aparecerem, inclusive o último pacote de encerramento da conexão TCP, antes de clicar no quadrado vermelho Stop da barra de ferramentas. O término do cliente não significa que a interface de captura já entregou todos os pacotes. Você deve ver o handshake, o tráfego criptografado do aplicativo e o FIN ou RST final. FIN fecha uma direção TCP; RST encerra a conexão imediatamente. O RST de encerramento deste cliente controlado não é o resultado da reserva.
Escolha File → Save As (ou Ctrl+S para a captura ainda não salva), mantenha o formato pcapng e salve:
/home/labex/project/booking/output/live.pcapng
Salve a captura real, não o texto da lista de pacotes nem uma captura de tela. Mantenha o arquivo de chaves separado; não use Inject TLS Secrets. Feche a janela principal de captura após salvar. No primeiro terminal, o inicializador deve terminar com native dumpcap status: 0 e devolver o prompt. Fechar a janela também encerra a fonte do curso; reconectar um terminal não redefine o serviço de reservas.
Em qualquer terminal, abra o arquivo salvo no perfil de revisão inicialmente vazio:
wireshark -C BookingReview /home/labex/project/booking/output/live.pcapng
Aplique http: inicialmente, está vazio novamente. Em Edit → Preferences → Protocols → TLS, tente primeiro o arquivo de referência input/casebook.keys, usando seu caminho absoluto completo da etapa 1. Aplique com OK. Ele continua sem decifrar esta nova sessão. Agora substitua a configuração pelo novo arquivo correspondente:
/home/labex/project/booking/output/live.keys
Clique em OK e aplique http. Você deve ver um POST e sua resposta. Clique com o botão direito no POST e escolha Follow → TLS Stream. Leia seu novo attempt, confirme que a resposta o repete, e confira accepted, reason e sua própria confirmation. O resultado válido é uma reserva paper-lantern confirmada para sat-14. Feche Follow e a janela principal. Você reabriu de forma independente a captura realmente salva, sem emprestar os segredos da sessão de referência.

A requisição e a resposta mostram o mesmo novo attempt. O valor gerado será diferente deste exemplo; o que importa é a correspondência.
Se interrompeu cedo demais, preserve a tentativa incompleta antes de repetir. No terminal, execute os dois comandos abaixo somente se os dois arquivos anteriores de saída existirem. mv renomeia cada arquivo. Esses caminhos não contêm espaços, por isso não precisam de aspas. Nenhum comando altera os arquivos de entrada ou o serviço.
mv /home/labex/project/booking/output/live.pcapng /home/labex/project/booking/output/live-previous.pcapng
mv /home/labex/project/booking/output/live.keys /home/labex/project/booking/output/live-previous.keys
Depois, repita a sequência: inicializador de captura → cliente no segundo terminal → últimos pacotes visíveis → Stop → Save → Close → reabrir. Se já existir um arquivo live-previous, escolha antes outro nome de backup ainda não usado. O cliente recusa deliberadamente sobrescrever live.keys, protegendo a captura da perda de seus segredos correspondentes. Um caminho de salvamento errado pode ser corrigido com File → Save As, sem outra visita. Para um filtro digitado errado, limpe-o e digite http novamente; não redefina o ambiente.
Resumo
Você decifrou um registro autorizado de referência no Wireshark, capturou uma nova visita HTTPS real e reabriu o PCAPNG salvo com seu próprio arquivo de chaves. Os segredos incorretos da referência não decifram a nova sessão. Seus resultados reutilizáveis são output/live.pcapng e output/live.keys.
Você também distinguiu o status HTTP do resultado da reserva e leu o attempt repetido na resposta. No próximo laboratório, aplicará essa distinção a uma reserva recusada e à nova tentativa na mesma conexão persistente.



