Tshark permet de :
- réaliser des captures réseau en ligne de commande
- lire un fichier de capture réseau
sudo tshark -D permet de lister les interfaces que l'on peut écouter
sudo tshark affiche à l'écran les paquets capturés sur l'interface numéro 1
sudo tshark -T fields -e frame.number -e ip.src -e ip.dst -e ip.len affiche à l'écran le numéro de trame, l'ip src, l'ip destination et la longueur du paquet IP
Capturer dans un fichier pcap
touch maCapture.pcap
chmod o=rw maCapture.pcap # cette ligne et la ligne qui précède sont nécessaires, sinon, pour une raison inconnu, on aura une erreur "could not be opened: Permission denied" pour créer le fichier maCapture.pcap
sudo tshark -T fields -e frame.number -e ip.src -e ip.dst -w maCapture.pcap # la capture ira dans le fichier maCapture.pcap.
!! Attention, ce fichier ne contiendra pas seulement les colonnes affichées (frame.number, ip.src, ip.dst).
Capture sélective
L'option -f (capture filter) permet de sélectionner les données à capturer.
sudo tshark -f "ip or arp" => permet de ne capturer que les paquets de type IP ou ARP
Affichage sélectif
sudo tshark -f "ip or arp" -Y "ip.src == 192.168.1.6"
Affichage formatté
tsudo tshark -f "ip or arp" -T fields -E separator=, -E quote=d -e ip.src -e ip.dst
"172.217.18.194","192.168.1.6"
"172.217.18.194","192.168.1.6"
"192.168.1.6","172.217.18.194"
"172.217.18.194","192.168.1.6"
Lire depuis un fichier pcap
Lire un pcap
tshark -r maCapture.pcap # affiche le fichier pcap, uniquement les colonnes principales
1 12:54:58,838325659 2001:861:3a02:dff0:a433:c73d:ae9f:672e → 2a00:1450:4007:812::2003 TLSv1.2 125 2 12:54:58,857405445 2a00:1450:4007:812::2003 → 2001:861:3a02:dff0:a433:c73d:ae9f:672e TCP 86 3 12:54:58,858259678 2a00:1450:4007:812::2003 → 2001:861:3a02:dff0:a433:c73d:ae9f:672e TLSv1.2 126 4 12:54:58,901022717 2001:861:3a02:dff0:a433:c73d:ae9f:672e → 2a00:1450:4007:812::2003 TCP 86 5 12:54:59,169301812 Netgear_cc:e9:e6 → Broadcast HomePlug AV 60
Lire une ligne spécifique du pcap
tshark -r maCapture.pcap -Y frame.number==61 # lit le fichier maCapture.pcap et affiche seulement la frame 61
Filltrer le pcap et mettre le résultat dans un nouveau pcap
Dans l'exemple, on s'intéresse à tous les paquets dont l'IP source est 192.168.1.6
tshark -r maCapture.pcap -w maCaptureSrcSpecifique.pcap ip.src == 192.168.1.6
Analyser un fichier pcap avec Python via Pyshark
import pyshark
cap = pyshark.FileCapture('maCapture.pcap')
i=0
for pkt in cap:
print("==================%d=========================" % i)
print(pkt)
i+=1
pkt=cap[58]
print(pkt)
print(f"IP.src:{pkt['ip'].src}, IP.dst:{pkt['ip'].dst}")
....
==================65=========================
Packet (Length: 60)
Layer ETH:
Destination: ff:ff:ff:ff:ff:ff
Address: ff:ff:ff:ff:ff:ff
....
IP.src:54.149.19.17, IP.dst:192.168.1.6