Pour analyser et déboguer des services réseaux, les captures de trames peuvent s'avérer utile. Le programme tcpdump permet de capturer tous les paquets passant sur le réseau local.
Pour utiliser tcpdump, il faut placer l'interface Ethernet dans le mode promiscuous, ce qui permet à l'interface de capturer tous les paquets, même ceux qui ne sont pas destinés à la machine locale :
# ifconfig eth0 promisc # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:C0:0C:03:EC:83 inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::c0:c03:ec83/10 Scope:Link inet6 addr: fe80::2c0:cff:fe03:ec83/10 Scope:Link UP BROADCAST RUNNING PROMISC MTU:1500 Metric:1 RX packets:829 errors:0 dropped:0 overruns:0 frame:0 TX packets:754 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:3 Base address:0x300 #
On voit maintenant que l'interface eth0 est en mode promiscuous (UP BROADCAST RUNNING PROMISC).
Maintenant, on peut capturer tous les paquets à destination du port telnet (port 23) :
# tcpdump dst port telnet Kernel filter, protocol ALL, datagram packet socket tcpdump: listening on eth0 15:45:32.955840 zecastor.1036 > tarsier.chez.moi.telnet: S 1046517:1046517(0) win 8192 <mss 1460,nop,nop,sackOK> (DF) 15:45:32.956669 zecastor.1036 > tarsier.chez.moi.telnet: . 1046518:1046518(0) ack 1626559845 win 8760 (DF) 15:45:32.970444 zecastor.1036 > tarsier.chez.moi.telnet: P 0:3(3) ack 13 win 8748 (DF) 15:45:32.971139 zecastor.1036 > tarsier.chez.moi.telnet: P 3:12(9) ack 13 win 8748 (DF) 15:45:32.972770 zecastor.1036 > tarsier.chez.moi.telnet: P 12:23(11) ack 19 win 8742 (DF) [...] #
L'option -x permet d'avoir plus de détails :
# tcpdump -x dst port telnet Kernel filter, protocol ALL, datagram packet socket tcpdump: listening on eth0 16:12:39.041879 zecastor.1040 > tarsier.chez.moi.telnet: S 2673068:2673068(0) win 8192 <mss 1460,nop,nop,sackOK> (DF) 4500 0030 1803 4000 8006 5f6f c0a8 0101 c0a8 0104 0410 0017 0028 c9ac 0000 0000 7002 2000 11ce 0000 0204 05b4 0101 0402 16:12:39.042846 zecastor.1040 > tarsier.chez.moi.telnet: . 2673069:2673069(0) ack 3345550185 win 8760 (DF) 4500 0028 1903 4000 8006 5e77 c0a8 0101 c0a8 0104 0410 0017 0028 c9ad c769 0b69 5010 2238 6977 0000 2020 2020 2000 16:12:39.210167 zecastor.1040 > tarsier.chez.moi.telnet: P 0:3(3) ack 13 win 8748 (DF) 4500 002b 1b03 4000 8006 5c74 c0a8 0101 c0a8 0104 0410 0017 0028 c9ad c769 0b75 5018 222c 5170 0000 fffb 1820 2000 16:12:39.210837 zecastor.1040 > tarsier.chez.moi.telnet: P 3:12(9) ack 13 win 8748 (DF) 4500 0031 1c03 4000 8006 5b6e c0a8 0101 c0a8 0104 0410 0017 0028 c9b0 c769 0b75 5018 222c 2546 0000 fffc 20ff fc23 fffc 27 [...] #
On peut également préciser l'hôte émetteur (src host) et destniataire (dst host) :
# tcpdump src host zecastor.chez.moi and dst host tarsier.chez.moi and dst port telnet [...] #
ethereal réalise les mêmes fonctionnalités que tcpdump avec une interface graphique, permettant quasiment de reconstituer les pages HTML transitant dans le réseau.