Tcpdump
Parametreler

Tcpdump ağ davranışını, performansı ve ağ trafiğini oluşturan uygulamaları analiz ederken, belli parametreler kullanabilir. Tüm özellikler, parametreler ile belirlenir. Komut parametresiz çalıştırıldığında, bulduğu ilk aktif ağ arabirimini dinlemeye alır. Bu işlem yalnızca, sisteme root olarak giriş yapıldığı takdirde gerçekleştirilebilir. Tcpdump komutunun pek çok parametresi bulunur ve bunları ezberlemek gereksizdir. 
Bir makine, kendisine gelmeyen paketleri, yalnızca promiscuous (karışık) moddayken alabilir. Tüm Snifferlar otomatik olarak ağ arabirimini bu moda geçirir ve Snifferlar durunca ağ arabirimini normal haline alır.
ifconfig: Ethernet kartının (ağ arabiriminin) ayarlarını ve hangi modda olduğunu görüntüler. Yetkili kişinin, ayarları değiştirebilmesine imkân verir.
promisc: Hedef IP adresi olmadığı halde, gelen paketleri almayı sağlar.
Hangi ağ arabiriminin dinlenmesi gerektiğini belirtmez isek, numarası en düşük olan arabirim dinlenmeye başlanır. Örneğin, ağımızda aktif olarak bulunan, 3 tane ağ olsun ve isimleri eth0, eth1, eth2 şeklinde belirtilmiş olsun. Bu durumda, en düşük ağ numaralı olan eth0 yani, 1. ağ dinlenir.
==> Hangi ağın dinlenmesi gerektiğini -i parametresi ile belirtiriz.
#tcpdump -i eth2 (3. ethernet kartı dinlenir)
==> Sistemde bulunan ve dinlenebilecek durumda olan arabirimlerin listesini -D parametresi ile belirtiriz.
#tcpdump -D
==> Yakalanan paketlerin DNS isimleri çözülmesin istiyorsak, -n parametresini kullanırız.
#tcpdump -n
* Dezavantajı: İsimlerin çözülmesi için belli bir zaman gerekir ve bu yoğun ağlarda işlemin yavaşlamasına sebep olur.
==> Yakalanan paketlerde DNS isim bilgisinin yanında, protocol ve port numaraları da çözülmesin istiyorsak, -nn parametresini kullanırız.
#tcpdump -nn
* Örneğin, ilk kullanımda ayrıntılı olarak, telnet şeklinde belirtilen alanda herhangi bir çözümleme yapılmaksızın 23 yazacaktır.
==> Yakalanan paketlerde daha sade bir görünüm arıyor ve zaman çıktısı (timestamp) vermesin istiyorsak, -t parametresini kullanırız.
#tcpdump -t
==> Yakalanan paketler ekranda görüntülenmesin istiyor olabiliriz. Bu durumda, elde edilen bilgiyi cap uyumlu başka bir dosyaya yazabiliriz.
#tcpdump -w dosya_adi
* -w ile kaydedilen paketler -r parametresi kullanılarak okunabilir.-w ile herhangi bir dosyaya kaydederken filtreleme yapabiliriz .Aynı şekilde -r ile paketleri okurken filtre belirtebiliriz.Bu filtre -w ile belirlediğimiz filtre ile aynı olmak zorunda değildir.
==> Okuma işlemi şu şekilde gerçekleştirilir.
#tcpdump -r dosya_adı
* Dosya kaydedilirken ya da okunurken, filtreleme yapılabilir. Mesela sadece şu tip paketleri kaydet ya da timestampleri kaydetme gibi.
* Aynı şekilde -r ile paketleri okurken filtre belirtebiliriz. Ayrıca bu filtrenin -w ile belirtilen filtre ile aynı olma zorunluluğu yoktur.
==> Ne kadar paket yakalanıp, durulacağını belirtmek istiyorsak, -c parametresini kullanırız.
#tcpdump -i eth0 -c 5 TCP
* 1. porttan 5 tane TCP paketi yakalar ve durur.
==> Yakalanacak paketlerin boyutunu byte olarak belirtmek istiyorsak, -s parametresini kullanırız.
#tcpdump -s 1500
==> Detaylı loglama yapmak istiyorsak, -v parametresini kullanırız.
#tcpdump -i eth0 -n -c 5 -v
* Bu komut, TTL ve ID değerlerini de döndürür.
==> Promisc moddan kaçmak istiyorsak, -p parametresini kullanırız.
#tcpdump -p - i eth0
* Yararları: Bu moddan çıkarsak, sadece o birime gelen ve o birimi ilgilendiren paketler işlenir. Ki bu, gelen paketlerin Broadcast ya da direkt o arabirimin adresi olması demektir.
* Bu komutu, genellikle kendi makinemizde işlem yapacağımız zaman kullanırız.
==> Ethernet başlık bilgisini yakalamak istersek, -e parametresini kullanırız.
#tcpdump -e
* Bu komut bize, MAC bilgisini verir.
#tcpdump greator 42 > dosya.txt = paket bilgilerini dosya isimli dosyaya yazar.
#tcpdump -c 42 greator 42 -w ozlem.dump = 42'den büyük olan ilk 42 paketi kaydeder.
#tcpdump -r ozlem.dump
==> Hedef host olarak belli bir adresi kullanmak istersek, dst host parametresini kullanırız.
#tcpdump -i eth0 dst host 10.0.0.1
==> Kaynak host olarak belli bir adresi kullanmak istersek, src host parametresini kullanırız.
#tcpdump -i eth0 src host 10.1.0.59
* dst ve src i aynı komutta kullanabiliriz.
#tcpdump -i eth0 src host 10.1.0.59 and dst host 10.0.0.1
==> Kaynak veya hedef port bilgisini belirtmek istiyorsak, port parametresini kullanırız.
#tcpdump port 23
* Kaynak veya Hedef portu 23 olan paketler.
#tcpdump src port 23
* Kaynak portu 23 olan paketler.
-X: Paketin içeriğini hem hex hem de ascii olarak görünmesini sağlayan bir parametredir.
-XX: Paketin içeriğini hem hex hem de ascii olarak görünmesini sağlayan bir parametredir ve ethernet başlığını da gösterir.
-nS: Çok fazla seçenek olmadan paket analizi yapar
-nnvvXS: Trafikte çok detaylı bir incelemedir.
-E: Bu protokol ile bir şifreleme anahtarı tarafından IPSEC trafiği şifrelenir.