Altera o protocolo associado à porta no tcpdump?

1

Na sequência de esta pergunta , como posso saber tcpdump para usar um analisador de protocolo específico para uma porta específica?

Estou fazendo algum desenvolvimento de DNS usando um servidor de teste em execução na porta 5053, mas não consigo descobrir como dizer tcpdump para fingir que esse é realmente o tráfego de DNS.

Eu não posso usar o wireshark - os pacotes não estão passando por uma máquina que tem uma GUI.

    
por Alnitak 27.07.2009 / 17:14

4 respostas

5

tshark, parte do pacote Wireshark, é somente texto.

Portanto, tshark -d udp.port==5053,dns deve funcionar.

    
por 27.07.2009 / 17:28
3

Pergunta interessante. Parece que deveria estar acessível com a opção:

-T  Force  packets  selected  by  "expression" to be interpreted the
    specified type.  Currently known  types  are  aodv  (Ad-hoc  On-
    demand Distance Vector protocol), cnfp (Cisco NetFlow protocol),
    rpc (Remote Procedure Call), rtp (Real-Time Applications  proto-
    col), rtcp (Real-Time Applications control protocol), snmp (Sim-
    ple Network Management Protocol), tftp  (Trivial  File  Transfer
    Protocol),  vat  (Visual  Audio Tool), and wb (distributed White
    Board).

Exceto que "domínio" obviamente não é uma opção válida. Eu imagino que seja possível com uma pequena emenda ao código-fonte do tcpdump, se você fosse assim inclinado.

Atualizar

Como assim. Use a seu próprio risco:

diff -ru tcpdump-3.9.8/interface.h tcpdump-3.9.8_modified/interface.h
--- tcpdump-3.9.8/interface.h   2007-06-14 02:03:20.000000000 +0100
+++ tcpdump-3.9.8_modified/interface.h  2009-07-27 19:40:55.831913794 +0100
@@ -74,6 +74,7 @@
 #define PT_CNFP                7       /* Cisco NetFlow protocol */
 #define PT_TFTP                8       /* trivial file transfer protocol */
 #define PT_AODV                9       /* Ad-hoc On-demand Distance Vector Protocol */
+#define PT_DOMAIN              10      /* Domain Name Service */

 #ifndef min
 #define min(a,b) ((a)>(b)?(b):(a))
diff -ru tcpdump-3.9.8/print-udp.c tcpdump-3.9.8_modified/print-udp.c
--- tcpdump-3.9.8/print-udp.c   2007-06-14 02:03:21.000000000 +0100
+++ tcpdump-3.9.8_modified/print-udp.c  2009-07-27 19:39:13.893442797 +0100
@@ -520,6 +520,11 @@
                        tftp_print(cp, length);
                        break;

+               case PT_DOMAIN:
+                       udpipaddr_print(ip, sport, dport);
+                       ns_print((const u_char *)(up + 1), length, 0);
+                       break;
+
                case PT_AODV:
                        udpipaddr_print(ip, sport, dport);
                        aodv_print((const u_char *)(up + 1), length,
diff -ru tcpdump-3.9.8/tcpdump.c tcpdump-3.9.8_modified/tcpdump.c
--- tcpdump-3.9.8/tcpdump.c     2007-09-26 02:59:54.000000000 +0100
+++ tcpdump-3.9.8_modified/tcpdump.c    2009-07-27 19:27:40.199449150 +0100
@@ -718,6 +718,8 @@
                                packettype = PT_TFTP;
                        else if (strcasecmp(optarg, "aodv") == 0)
                                packettype = PT_AODV;
+                       else if (strcasecmp(optarg, "domain") == 0)
+                               packettype = PT_DOMAIN;
                        else
                                error("unknown packet type '%s'", optarg);
                        break;
    
por 27.07.2009 / 20:12
1

pode não ser explicitamente útil para responder à sua pergunta, mas você não precisa de uma GUI para executar o wireshark.

O X11 encapsulado por SSH permitiria que você executasse o aplicativo completo remotamente. Funciona bem com cygwin-x ou openssh, dependendo se você usa windows ou linux em sua área de trabalho.

editado: o grawity está certo, não é o encaminhamento de porta.

    
por 27.07.2009 / 17:27
0

Ou você poderia colocar uma máquina GUI entre os dois hosts e apenas fazer uma ponte entre as duas interfaces. Eu construí um pequeno computador para esse propósito, ele ajudou a depurar todos os tipos de instalações onde o wireshark não é uma opção (por exemplo, roteadores)

    
por 27.07.2009 / 19:44