Je kunt TShark aansturen met een handvol commandline-opties. We noemen even kort de meest belangrijke en laten vervolgens zien hoe je die tot complete commando’s kunt samenvoegen en daar andere commando’s aan koppelt.
Net als Wireshark kan TShark het in- en uitgaande netwerkverkeer van je pc loggen. Met de optie -i selecteer je de interface waar je het dataverkeer van wilt loggen en met de optie -w bestandsnaam.pcap bepaal je waar de loggegevens in terecht moeten komen.
Eerdere logsessies kun je met de optie -r bestandsnaam.pcap aan het programma meegeven. Zonder verdere parameters zal TShark echter niet veel meer doen dan de inhoud van de trace-file over het scherm heen laten zoeven. De van Wireshark bekende displayfilters kun je gebruiken met de optie -Y filterexpressie. Met -Y http.request filter je bijvoorbeeld alle HTTP-requests eruit. Geneste filtertaken kun je toevoegen door ze tussen aanhalingstekens te zetten.
Voor elk gefilterd pakket laat TShark de statusinformatie zien: het doorlopende nummer in de trace, de tijdstempel, source- en destination-IP, poortnummer en extra informatie. Met de optie -T files -e veldnaam extraheert TShark de content van bepaalde velden.
Om bepaalde toepassingen mogelijk te maken, hebben we een ongeveer 55 MB groot voorbeeldbestand van een smart-tv van LG voorbereid, dat prima geschikt is om mee te oefenen en wat ervaring te krijgen in het werken met TShark.
In eerste instantie gaat het erom om de door een smart-tv benaderde HTTP-servers te achterhalen. Daarvoor filter je op de makkelijkste manier het veld http.host eruit (-T files -e http.host).
TShark toont dan elke treffer op een aparte regel in de volgorde zoals ze in de trace-file staan. Om op meerdere velden te filteren, zet je de optie -e veldnaam meerdere keren achter elkaar.
Om andere displayfilters of veldnamen te gebruiken, test je dezelfde trace-file eerst in Wireshark. Syntaxisfouten worden door het programma in het rood getoond. Als er geen fouten in een filterexpressie zitten, verandert de kleur in groen.
In het Wireshark-voorbeeld verderop is te zien dat hier de op UPnP gebaseerde Multicast-communicatie genegeerd wordt (http.host and not ip.dst == 239.0.0.0/8). Dat is aan te raden omdat sommige apparaten tijdens het loggen heel veel UPnP-berichten verzenden. Die hebben echter niets te maken met waarin je hier geïnteresseerd bent en storen dus alleen maar. Bovendien is te zien hoe je met een klik op het te onderzoeken veld (in het midden van het vensterdeel linksonder) Wireshark ertoe kunt brengen om de exacte veldnaam weer te geven (onderaan op de statusbalk). In dit geval gebruikt Wireshark http.host, oftewel de variabele voor de namen van de HTTP-servers.
Om de syntaxis van displayfilters te leren hebben we het dataverkeer van een smart-tv geanalyseerd.
De output van TShark kan afhankelijk van het dataverkeertype en de gebruikte filters kort en overzichtelijk zijn. Maar vaak worden het lange lijsten, bijvoorbeeld met benaderde domeinen, en niet zelden komen in een trace dezelfde domeinen telkens weer voor. Dan is het aan te raden om de TShark-uitvoer te sorteren met een paar Unix-commando’s. Dan kun je de samenhangen beter herkennen en zien wat de frequentieverdelingen zijn.
Het commando sort sorteert de lijst alfabetisch. Vaker voorkomende records staan dan netjes onder elkaar. Met uniq -c voeg je meerdere records samen, bijvoorbeeld doelen die de smart-tv vaker bezocht heeft. Daarbij zorgt de -c van count ervoor dat aan het begin van de regel een getal komt dat de frequentie aangeeft. Elk item neemt daardoor nog maar één regel in beslag. Met een daaropvolgend commando sort /R wordt de lijst gesorteerd van hoog naar laag op volgorde van het aantal bezoeken, oftewel als ranglijst.
Die hele werkwijze is makkelijk te automatiseren door de commando’s met behulp van pipes (|) te koppelen. Dat ziet er onder Windows compleet dan zo uit:
tshark -r lg-tv1.pcap -Y “(http.request and not ip.dst == 239.0.0.0/8)” -T fields -e http.host | sort | uniq -c | sort /R
Bij Linux en macOS gebruik je in plaats van dat laatste sort-commando dan sort -g -r. Een analyse van een smart-tv van Philips bracht aan het licht dat het apparaat veel webservers bezocht met behulp van HTTP-requests. Daar zitten natuurlijk wat verwachte servers bij, zoals die van Netflix, maar ook een aantal onbekende doelen, zoals zeasn.tv en smartclip.net – je smart-tv leeft blijkbaar zijn eigen leventje.