Use o netcat como um proxy para registrar o tráfego

4

Eu quero usar o netcat como um proxy para registrar solicitações e respostas de http em arquivos, depois seguir esses procedimentos para inspecionar o tráfego. Pense wireshark.

Tentei o seguinte, onde 'fifo' é um pipe nomeado, 'in' e 'out' são arquivos, proxy netcat na porta 8080, servidor na porta 8081.

enquanto verdadeiro; do gato fifo | nc -l -p 8080 | tee -a em | nc localhost 8081 | tee -a out 1 > fifo; feito

Problemas:

  • O Netcat para de responder após a primeira solicitação (enquanto o loop é ignorado?).

  • O Netcat falha com msg localhost [127.0.0.1] 8081 (tproxy) : Connection refused se o servidor não estiver disponível no 8081. Pergunta: É possível conectar-se "preguiçosamente" ao 8081 quando a solicitação é feita? Ou seja Eu não quero ter 8081 em execução quando o netcat é iniciado.

por deephacks 06.10.2012 / 16:43

3 respostas

5

ncat pode fazer isso facilmente, usando o argumento --sh-exec.

O comando a seguir permitirá que você veja as duas direções de uma conexão TCP ao vivo e permita várias conexões. A conexão com example.com é feita uma vez para cada conexão recebida em localhost:8080 .

ncat -lkv localhost 8080 -c 'tee /dev/stderr | ncat -v example.com 80 | tee /dev/stderr'

Altere os dois comandos tee para tee -a ./file se desejar registrar em um arquivo em vez de exibi-lo ao vivo. Você também pode remover o -v para desabilitar a saída detalhada, deixando apenas os dados transferidos para o terminal.

-k, --keep-open            Accept multiple connections in listen mode
-l, --listen               Bind and listen for incoming connections
-v, --verbose              Set verbosity level (can be used several times)
-c, --sh-exec <command>    Executes the given command via /bin/sh

Veja ncat --help ou man ncat para mais detalhes.

    
por 02.12.2014 / 16:29
2

Use socat , você não precisa dos canos e fifos

    
por 06.10.2012 / 17:57
1

Eu usaria tcpdump ( tutorial ) para isso. Eu acho que o comando que você quer ficaria assim:

sudo tcpdump -i eth0 -s0 -v port 8080
    
por 06.10.2012 / 20:32