Como salvar os “pedaços” de uma resposta http?

0

Eu gostaria de salvar os "pedaços" de uma resposta http, de preferência usando curl ou alguma outra ferramenta de linha de comando gratuita que funcione em mac ou linux, mas estou aberto a qualquer tipo de solução.

Então, por exemplo, se uma resposta está sendo enviada em 10 partes, eu gostaria de salvar cada uma dessas partes em um arquivo separado, chunk1.txt - > chunk10.txt

E, claro, se um arquivo estiver sendo enviado em um único bloco, o arquivo será salvo em um único arquivo.

Como posso salvar os blocos de uma resposta http usando curl ou alguma outra ferramenta?

EDIT: Gostaria de "ver" isso para verificar se Transfer-Encoding: chunked está atendendo blocos 1-N e Content-Length:XXX está enviando uma única resposta. E salvá-los em um arquivo não é necessário, eu acho. Se é claramente anotado em um único arquivo o que cada pedaço é, isso é ótimo!

    
por Brad Parks 21.11.2017 / 15:26

2 respostas

3
O

tcpdump sustenta o Wireshark e outros utilitários similares e possui uma interface de linha de comando que pode realizar o que você deseja. Um comando semelhante a:

tcpdump -A -i en0 src XXX.YYY.ZZZ.AAA and port 80

Despejaria para o console todos os pacotes brutos de XXX.YYY.ZZZ.AAA port 80 que passam por en0 . Você pode eliminar o -i en0 de qualquer interface e a expressão é bastante configurável.

Você pode encontrar alguns exemplos interessantes tecmint.com e < href="https://danielmiessler.com/study/tcpdump/"> danielmiessler.com .

Embora você possa salvar a captura inteira com essa solução, ela não salva os fragmentos em arquivos diferentes conforme solicitado. Você teria que pós-processar o arquivo de despejo para obter isso.

[Esclarecimento] Você executaria curl em um terminal separado ao mesmo tempo em que estava capturando pacotes.

[Adição] Há também uma discussão sobre Wireshark e http chunking que pode ser útil. E este remontar traços pcap para recuperar dados de nível http pergunta tem uma solução aceita para analisar novamente as capturas usando Bro .

    
por 23.03.2018 / 13:42
-1

Você pode usar um utilitário como Wireshark , que geralmente é um pacote padrão no Linux.

Wireshark permite a inspeção profunda de mensagens e protocolos em todos os níveis do protocolo TCP / IP e fornece muitas ferramentas sofisticadas.

Você pode com o Wireshark exibir o fluxo de bytes da mensagem ou ir para o nível do protocolo e exibir níveis mais altos de abstração.

A parte em que você está interessado é chamada Remontagem de pacotes , descrito como:

Network protocols often need to transport large chunks of data which are complete in themselves, e.g. when transferring a file. The underlying protocol might not be able to handle that chunk size (e.g. limitation of the network packet size), or is stream-based like TCP, which doesn’t know data chunks at all.

In that case the network protocol has to handle the chunk boundaries itself and (if required) spread the data over multiple packets. It obviously also needs a mechanism to determine the chunk boundaries on the receiving side.

Wireshark calls this mechanism reassembly, although a specific protocol specification might use a different term for this (e.g. desegmentation, defragmentation, etc).

Reassembly might take place at several protocol layers, so it’s possible that multiple tabs in the “Packet Bytes” pane appear.

Depois de ver os blocos, você também pode exportá-los.

Aqui está um exemplo do painel "Packet Bytes" com uma guia reagrupada:

    
por 19.03.2018 / 22:43

Tags