Capture o tráfego da Web agrupado por streams TCP individuais

3

Até onde eu sei, uma solicitação e resposta HTTP constrói uma conexão TCP. Para depurar um aplicativo da Web em um servidor sem GUI, gostaria de poder capturar esses fluxos TCP em uma única entidade identificável (mesma cor, arquivo, registro de db, qualquer coisa).

tcpdump só pode salvar pacotes IP à medida que eles chegam ou saem, sem pedidos ou remontagens. O tcpflow vai um passo além para remontar as conexões TCP em arquivos separados, mas coloca os fluxos de envio e recebimento em arquivos separados, o que torna a rápida depuração irritante. Tenho certeza de que posso escrever um script ou mesmo uma linha para mesclar arquivos relacionados, mas acredito que um wrapper em torno de tcpflow para esse trabalho possa introduzir complexidades que não existiriam dentro de tcpflow . Também sou preguiçosa e procuro uma solução mais limpa.

Qualquer sugestão seria apreciada.

    
por zaadeh 29.06.2014 / 11:51

1 resposta

4

Você pode copiar (ou transmitir) o arquivo pcap para sua área de trabalho e usar a GUI do Wireshark para análise de pacotes. Além da GUI, há também o comando tshark (incluído no Wireshark). Dado um número de fluxo, você pode obter suas solicitações e respostas combinadas em uma única saída com:

$ tshark -q -r http.pcapng -z follow,tcp,ascii,1

===================================================================
Follow: tcp,ascii
Filter: tcp.stream eq 1
Node 0: 10.44.1.8:47833
Node 1: 178.21.112.251:80
77
GET / HTTP/1.1
User-Agent: curl/7.37.0
Host: lekensteyn.nl
Accept: */*


        356
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.4.7
Date: Sun, 29 Jun 2014 10:24:34 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: https://lekensteyn.nl/

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.4.7</center>
</body>
</html>

===================================================================

Consulte a página de manual de tshark para mais detalhes. Basicamente, -q suprime a exibição normal de pacotes, -r http.pcapng seleciona o arquivo de captura e -z follow,... é o equivalente do Seguir Fluxo TCP na GUI. Infelizmente, você deve repetir este comando para cada fluxo, não realmente ideal.

Quanto ao streaming de uma conexão com a GUI do Wireshark, você pode usar este comando:

ssh you@server 'tcpdump -w - "tcp port 80"' | wireshark -i - -k

Se isso ainda não é o que você está procurando, então você pode considerar a criação de um proxy e, em seguida, o registro de tudo através desse proxy.

    
por 29.06.2014 / 12:35