Home/
 www.icosaedro.it 

 Mytcpdump

In breve

Questo programmino realizza una semplice (ma per me utile) interfaccia verso il comando tcpdump. Esso permette di visualizzare col voluto grado di dettaglio il flusso dei pacchetti IP che attraversano una data interfaccia di rete, sia essa del tipo Ethernet, PPP o altro. Si tratta di uno strumento diagnostico utilissimo che io uso spesso. Unica difficoltà: il gran numero di opzioni più o meno astruse di cui il comando dispone. Ecco perché ho realizzato mytcpdumptk.
Utile per il sistemista che vuole diagnosticare oscuri mali, per il programmatore che voglia verificare le proprie applicazioni client/server, e per l'utente curioso.

Naturalmente, perché questo strumento sia veramente utile occorre anche un minimo di conoscenza del protocollo IP, TCP e dei protocolli di livello superiore che interessano (SMTP, POP-3, HTTP, FTP, ecc.).

Storico degli aggiornamenti

2002-07-22
Rilascio versione 1.1.
2002-07-18
Rilascio versione 1.0.

Indice

In lungo (ovvero: per esteso)
Finestra "Main"
Finestra "Filters"
Finestra "Advanced"
Bottoni
Esempio
Licenza
Prerequisiti
DOWNLOAD
Installazione
Argomenti correlati

In lungo (ovvero: per esteso)


Figura 1. La finestra principale di mytcpdumptk.

tcpdump è una utilità diagnostica così importante che viene inclusa in tutte versioni di Unix, GNU/Linux e sistemi operativi similari. Sulla mia Red Hat 7.3, ad esempio, il programma non viene istallato in automatico, ma è comunque presente come pacchetto RPM (sul secondo CD, per l'esattezza). Tra i possibili utilizzi, ricordo:

Una volta installato il programma tcpdump, l'utilizzatore accorto sarà andato subito a leggere la relativa man page, scoprendo però numerose opzioni dalle strane correlazioni. Poichè quando si ha necessità di usare un simile strumento diagnostico tipicamente è per via di altri problemi da risolvere, è frustrante dover perdere tempo anche per l'uso di questo comando. Ecco allora che diventa comodo poter disporre di una interfaccia a menu di uso immediato che permette di accedere in modo facilitato alle principali funzionalità di tcpdump.

mytcpdumptk presenta una interfaccia grafica su X Window (v. figura 1). Per quanto riguarda l'utilizzo non c'è molto da dire: basta scegliere le opzioni volute e premere il bottone Execute: il programma apre una finestra dove fa scorrere le informazioni sui pacchetti man mano che essi transitano (v. figura 2).


Figura 2. L'output del programma come appare in una finestra di xterm.

Il programma si può avviare specificando come parametro l'interfaccia di rete desiderata. Segue una breve descrizione delle opzioni del programma. Rimando alla man page del comando tcpdump per una discussione più approfondita.

Finestra "Main"

Contiene le opzioni di uso più comune (v. figura 1):

Interface: interface
In questo entry box si scrive il nome della interfaccia di rete che interessa. I nomi specifici che si possono indicare dipendono dal particolare sistema e dalla sua configurazione. Il comando ifconfig riporta l'elenco delle interfacce correntemente installate. Alcuni nomi tipici:
lo: loop back per seguire il traffico locale alla macchina;
eth0: prima interfaccia Ethernet (Linux);
le0: prima interfaccia Ethernet (Solaris);
ppp0: prima interfaccia PPP, tipicamente via modem;
any: qualsiasi interfaccia (solo kernel Linux v. >= 2.2).

No. of bytes to snarf from packet (from 68 to 65535)
Il programma interpreta solo i primi byte che compongono ciascun pacchetto, perché sono questi che contengono le informazioni più rilevanti delle intestazioni IP e TCP. Per analizzare anche il contenuto, innalzare questo valore a 65535.

Parse packets
Invece che mostrare il flusso grezzo dei byte, tenta di interpretare gli headers IP e TCP, mostrando le informazioni principali quali gli host di partenza e di arrivo, il protocollo e le porte utilizzate.

Print a timestamp in each dump line
Alle informazioni su ogni pacchetto viene fatta precedere l'indicazione dell'ora.

Print more protocol information on output
Aggiunge alcune informazioni relative ai pacchetti.

Convert host addresses to names
Mostra il nome degli host completo di dominio al posto degli indirizzi numerici. Ciò può comportare l'incremento del traffico a causa della risoluzione dei nomi.

Attempt to convert network and broadcast addresses to names
Nel caso di pacchetti destinati contemporaneamente a più computer, tenta di visualizzare il nome della sottorete coinvolta.

Convert protocol and port numbers to names
Indica i nomi dei protocolli coinvolti invece che i numeri.

Print each packet (minus its link level header) in hex
Permette di vedere anche il contenuto dei pacchetti in esadecimale. Vengono mostrati solo i primi byte, come indicato nel parametro snap.

Print ascii too
Mostra anche la rappresentazione ASCII dei caratteri. Probabilmente questo è utile solo quando lo snap è impostato a un valore maggiore di 68.

Verbosity level
Qui si indica la quantità di informazioni supplementari desiderate. (Vedere la man page di tcpdump per le opzioni -v, -vv e -vvv).

Save settings on exit to the file /root/.mytcpdumptk.prefs
Le impostazioni del programma vengono salvate all'uscita nel file indicato. Ogni volta che si avvia il programma, lo stesso file viene riletto in modo da presentare la situazione come la si era lasciata. Può essere utile salvare la impostazioni di uso più frequente, e poi il flag si può disabilitare.

Finestra "Filters"

Contiene alcuni criteri di filtro per la selezione dei pacchetti di interesse (v. figura 3):


Figura 3. Finestra dei criteri di filtro dei pacchetti.

Hosts to filter
Permette di indicare fino a due host di interesse: solo i pacchetti provenienti o destinati a questi host e catturati attraverso l'interfaccia di rete specificata verranno visualizzati. Siccome l'interfaccia di rete viene posta in modalità promiscua, è possibile (sotto certe condizioni) esaminare il traffico che intercorre tra due macchine escludendo tutte le altre.

Protocols to filter
Qui si possono indicare fino a tre protocolli IP che interessa analizzare. Si può scegliere tra questi valori: icmp icmp6 igmp igrp pim ah esp udp tcp. Alcuni protocolli sono riconosciuti solo su alcuni sistemi operativi e non su altri.

Ports to filter (use numbers like 20, 80, ... or names like ftp, http, ...)
Quando i protocolli che interessano sono tcp e udp, diventa possibile selezionare solo i pacchetti destinati o provenienti dalle porte indicate. Si possono usare sia numeri che nomi.

Finestra "Advanced"

Contiene alcune opzioni addizionali del programma di uso meno frequente (v. figura 4):


Figura 4. La finestra delle opzioni avanzate.

Don't put the interface into promiscuous mode
Di conseguenza verrà ignorato tutto il traffico non direttamente destinato all'host, a meno che l'interfaccia non sia già in modalità promiscua.

Drop root privileges to user:
Il programma cambia privilegi all'utente del sistema indicato subito dopo avere impostato l'interfaccia.
Nota: nel sistema operativo Red Hat Linux questa operazione avviene comunque verso l'utente pcap, a meno che non venga designato un altro utente sfruttando questa opzione.

Print the link-level header
Questo non so cosa sia.

Decrypt IPsec ESP packets:
Opzione che la man page di tcpdump descrive come sperimentale, e che permette di decrittare anche i pacchetti IPsec usando l'algoritmo e la parola segreta indicati. Il flag save permette di salvare la parola segreta, in chiaro, all'uscita del programma.

Print undecoded NFS headers
Questo non so cosa sia.

Terminal: xterm -hold -e
In questa entry box va indicato il programma da usare per la visualizzazione del dump dei pacchetti. Il comando tcpdump composto dal programma e completo di tutte le opzioni, viene aggiunto a questa stringa per formare un comando completo da eseguire. Il valore default apre una finestra di terminale virtuale xterm (v. figura 2): in questo caso l'opzione -e è indispensabile!
Naturalmente si possono usare anche altri programmi e altre opzioni. Ecco alcuni esempi interessanti:

xterm -bg black -fg green -hold -e

gnome-terminal -e

(stringa nulla)

Bottoni

Show Cmd
Mostra il comando tcpdump completo di tutte le sue opzioni, così come verrà utilizzato dal programma.

Execute
Esegue il comando tcpdump nella finestra del terminale indicata.

Close
Chiude la finestra. Se è abilitato il flag di salvataggio, vengono preventivamente salvate le opzioni impostate nel file indicato nella finestra principale.

Esempio

Ecco come potrebbe apparire l'output del programma. In questo caso ho visualizzato anche l'ASCII per facilitare l'interpretazione dei messaggi. La sequenza riguarda una connessione FTP fatta dal computer verso sè stesso. La porta TCP del server viene indicata con "ftp", mentre la porta temporanea utilizzata dal client è la 32776. Diventa così possibile seguire passo passo il dialogo tra i due programmi. Riesci a riconoscere la password che ho utilizzato?


orso.casa.lan.ftp > orso.casa.lan.32776: tcp 58 (DF)
0x0000   4500 006e 4881 4000 4006 de07 0a00 0001        E..nH.@.@.......
0x0010   0a00 0001 0015 8008 5d01 824c 5cf0 9ea9        ........]..L\...
0x0020   8018 7fff 8d5e 0000 0101 080a 0001 cad0        .....^..........
0x0030   0001 cacd 3232 3020 6f72 736f 2e63 6173        ....220.orso.cas
0x0040   612e 6c61 6e20 4654 5020 7365 7276 6572        a.lan.FTP.server
0x0050   2028 5665 7273 696f 6e20 7775 2d32 2e36        .(Version.wu-2.6
0x0060   2e32 2d35 2920 7265 6164 792e 0d0a             .2-5).ready...
orso.casa.lan.32776 > orso.casa.lan.ftp: tcp 0 (DF) [tos 0x10] 
0x0000   4510 0034 5467 4000 4006 d24b 0a00 0001        E..4Tg@.@..K....
0x0010   0a00 0001 8008 0015 5cf0 9ea9 5d01 8286        ........\...]...
0x0020   8010 7fff f1d9 0000 0101 080a 0001 cad0        ................
0x0030   0001 cad0                                      ....
orso.casa.lan.32776 > orso.casa.lan.ftp: tcp 12 (DF) [tos 0x10] 
0x0000   4510 0040 5468 4000 4006 d23e 0a00 0001        E..@Th@.@..>....
0x0010   0a00 0001 8008 0015 5cf0 9ea9 5d01 8286        ........\...]...
0x0020   8018 7fff 5426 0000 0101 080a 0001 cb77        ....T&.........w
0x0030   0001 cad0 5553 4552 2073 616c 7369 0d0a        ....USER.salsi..
orso.casa.lan.ftp > orso.casa.lan.32776: tcp 0 (DF)
0x0000   4500 0034 4882 4000 4006 de40 0a00 0001        E..4H.@.@..@....
0x0010   0a00 0001 0015 8008 5d01 8286 5cf0 9eb5        ........]...\...
0x0020   8010 7fff f07f 0000 0101 080a 0001 cb77        ...............w
0x0030   0001 cb77                                      ...w
orso.casa.lan.ftp > orso.casa.lan.32776: tcp 34 (DF)
0x0000   4500 0056 4883 4000 4006 de1d 0a00 0001        E..VH.@.@.......
0x0010   0a00 0001 0015 8008 5d01 8286 5cf0 9eb5        ........]...\...
0x0020   8018 7fff dde9 0000 0101 080a 0001 cb77        ...............w
0x0030   0001 cb77 3333 3120 5061 7373 776f 7264        ...w331.Password
0x0040   2072 6571 7569 7265 6420 666f 7220 7361        .required.for.sa
0x0050   6c73 692e 0d0a                                 lsi...
orso.casa.lan.32776 > orso.casa.lan.ftp: tcp 0 (DF) [tos 0x10] 
0x0000   4510 0034 5469 4000 4006 d249 0a00 0001        E..4Ti@.@..I....
0x0010   0a00 0001 8008 0015 5cf0 9eb5 5d01 82a8        ........\...]...
0x0020   8010 7fff f05d 0000 0101 080a 0001 cb77        .....].........w
0x0030   0001 cb77                                      ...w
orso.casa.lan.32776 > orso.casa.lan.ftp: tcp 9 (DF) [tos 0x10] 
0x0000   4510 003d 546a 4000 4006 d23f 0a00 0001        E..=Tj@.@..?....
0x0010   0a00 0001 8008 0015 5cf0 9eb5 5d01 82a8        ........\...]...
0x0020   8018 7fff a779 0000 0101 080a 0001 cc40        .....y.........@
0x0030   0001 cb77 5041 5353 2068 7a0d 0a               ...wPASS.hz..
orso.casa.lan.ftp > orso.casa.lan.32776: tcp 55 (DF)
0x0000   4500 006b 4884 4000 4006 de07 0a00 0001        E..kH.@.@.......
0x0010   0a00 0001 0015 8008 5d01 82a8 5cf0 9ebe        ........]...\...
0x0020   8018 7fff c3ed 0000 0101 080a 0001 cc41        ...............A
0x0030   0001 cc40 3233 3020 5573 6572 2073 616c        ...@230.User.sal
0x0040   7369 206c 6f67 6765 6420 696e 2e20 2041        si.logged.in...A
0x0050   6363 6573 7320 7265 7374 7269 6374 696f        ccess.restrictio
0x0060   6e73 2061 7070 6c79 2e0d 0a                    ns.apply...
...

Licenza

Il programma è assolutamente gratuito (free) e di pubblico dominio; anche i sorgenti sono utilizzabili liberamente e sono di pubblico dominio.

Prerequisiti

mytcpdumptk è uno script Tcl/Tk e richiede pertanto il relativo interprete. All'inizio dello script è indicato il path dell'interprete: se sul tuo sistema è diverso, modificalo in modo corrispondente.

mytcpdump è uno script Bash 2: occorre dunque disporre di questa versione della popolare shell di sistema. In realtà l'unica funzionalità addizionale che ho usato rispetto al vecchio Bash 1 è l'utile opzione del comando read che permette di eseguire l'input un carattere alla volta, risparmiando quindi all'utente di dover premere RETURN dopo aver selezionato una opzione.

Sia Bash che Tcl/Tk sono disponibili liberamente per tutti i principali sistemi operativi, e vengono di solito installati per default in molte distribuzioni di GNU/Linux.

Download

La versione corrente è la 1.1.

mytcpdumptk (20 KB) - Versione con interfaccia grafica X Window.

mytcpdump (3 KB) - Versione con interfaccia testuale (più limitato nelle opzioni disponibili).

Installazione

E' estremamente banale: scaricare il testo del programma voluto, impostarne il nome togliendo l'estensione .txt (è una cosa puramente estetica ;-) e quindi impostare il bit di eseguibilità con chmod +x mytcpdump*: fatto!

Argomenti correlati


Umberto Salsi
Commenti
Contatto
Mappa
Home/
Still no comments to this page. Use the Comments link above to add your contribute.