Home/ | www.icosaedro.it | ![]() |
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.).
In lungo (ovvero: per esteso)
Finestra "Main"
Finestra "Filters"
Finestra "Advanced"
Bottoni
Esempio
Licenza
Prerequisiti
DOWNLOAD
Installazione
Argomenti correlati
![]() |
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).
![]() |
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.
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.
Contiene alcuni criteri di filtro per la selezione dei pacchetti di interesse (v. figura 3):
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.
Contiene alcune opzioni addizionali del programma di uso meno frequente (v. figura 4):
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)
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.
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... ...
Il programma è assolutamente gratuito (free) e di pubblico dominio; anche i sorgenti sono utilizzabili liberamente e sono di pubblico dominio.
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.
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).
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!
Umberto Salsi | Commenti | Contatto | Mappa | Home/ |
Still no comments to this page. Use the Comments link above to add your contribute.