Özet
tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
[ -c count ] [ --count ] [ -C file_size ]
[ -E spi@ipaddr algo:secret,... ]
[ -F file ] [ -G rotate_seconds ] [ -i interface ]
[ --immediate-mode ] [ -j tstamp_type ] [ -k (metadata_arg) ]
[ -m module ]
[ -M secret ] [ --number ] [ --print ]
[ -Q packet-metadata-filter ] [ -Q in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
[ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
[ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision=tstamp_precision ]
[ --micro ] [ --nano ]
[ expression ]
Açıklama
Tcpdump, bir ağ arayüzündeki paketlerden Boolean ifadesiyle eşleşenlerin içeriklerinin bir açıklamasını yazdırır; bu açıklamanın önünde, varsayılan olarak gece yarısından itibaren saat, dakika, saniye ve saniyenin kesirleri şeklinde yazdırılan bir zaman damgası bulunur. Ayrıca, paket verilerini daha sonra analiz etmek üzere bir dosyaya kaydetmesini sağlayan -w bayrağıyla ve/veya paketleri bir ağ arayüzünden okumak yerine kaydedilmiş bir paket dosyasından okumasını sağlayan -r bayrağıyla da çalıştırılabilir. Kaydedilmiş paket dosyalarının bir listesini okumasını sağlayan -V bayrağıyla da çalıştırılabilir. Her durumda, tcpdump tarafından yalnızca expression (ifade) ile eşleşen paketler işlenecektir.
Tcpdump, -c bayrağıyla çalıştırılmadığı sürece, bir SIGINT sinyali (örneğin kesme karakteriniz, genellikle kontrol-C yazılarak oluşturulur) veya bir SIGTERM sinyali (genellikle kill(1) komutuyla oluşturulur) ile kesilene kadar paketleri yakalamaya devam edecektir; -c bayrağıyla çalıştırılırsa, bir SIGINT veya SIGTERM sinyaliyle kesilene kadar ya da belirtilen sayıda paket işlenene kadar paketleri yakalayacaktır.
Tcpdump paket yakalamayı bitirdiğinde, şunların sayılarını raporlayacaktır:
``yakalanan'' paketler (bu, tcpdump'ın aldığı ve işlediği paketlerin sayısıdır);
``filtre tarafından alınan'' paketler (bunun anlamı tcpdump'ı çalıştırdığınız işletim sistemine ve muhtemelen işletim sisteminin yapılandırılma şekline bağlıdir - komut satırında bir filtre belirtilmişse, bazı işletim sistemlerinde filtre ifadesiyle eşleşip eşleşmediklerine bakılmaksızın ve filtre ifadesiyle eşleşmiş olsalar bile tcpdump'ın bunları henüz okuyup işlemiş olup olmadığına bakılmaksızın paketleri sayar; diğer işletim sistemlerinde tcpdump'ın bunları henüz okuyup işlemiş olup olmadığına bakılmaksızın yalnızca filtre ifadesiyle eşleşen paketleri sayar; diğer işletim sistemlerinde ise yalnızca filtre ifadesiyle eşleşen ve tcpdump tarafından işlenen paketleri sayar);
``çekirdek tarafından bırakılan (dropped)'' paketler (bu, tcpdump'ın çalıştığı işletim sistemindeki paket yakalama mekanizması tarafından, arabellek alanı yetersizliği nedeniyle bırakılan paketlerin sayısıdır, eğer işletim sistemi bu bilgiyi uygulamalara raporluyorsa; raporlamıyorsa 0 olarak raporlanacaktır).
Çoğu BSD (macOS dahil) ve Digital/Tru64 UNIX gibi SIGINFO sinyalini destekleyen platformlarda, bir SIGINFO sinyali aldığında (örneğin genellikle kontrol-T olan durum (status)'' karakterinizi yazarak oluşturulur, ancak macOS gibi bazı platformlarda durum'' karakteri varsayılan olarak ayarlanmamıştır, bu nedenle kullanabilmek için stty(1) ile ayarlamanız gerekir) bu sayıları raporlayacak ve paketleri yakalamaya devam edecektir. SIGINFO sinyalini desteklemeyen platformlarda, aynı işlem SIGUSR1 sinyali kullanılarak gerçekleştirilebilir.
-w bayrağı ile birlikte SIGUSR2 sinyalinin kullanılması, paket arabelleğini çıktı dosyasına zorla boşaltacaktır (flush).
Bir ağ arayüzünden paketleri okumak özel ayrıcalıklara sahip olmanızı gerektirebilir; ayrıntılar için pcap(3PCAP) kılavuz sayfasına bakın. Kaydedilmiş bir paket dosyasını okumak özel ayrıcalıklar gerektirmez.
Seçenekler
-A: Her paketi (bağlantı seviyesi başlığı hariç) ASCII olarak yazdırır. Web sayfalarını yakalamak için kullanışlıdır.-b: BGP paketlerindeki AS numarasını ASPLAIN gösterimi yerine ASDOT gösterimiyle yazdırır.
-B buffer_size --buffer-size=buffer_size İşletim sistemi yakalama arabelleği boyutunu KiB (1024 bayt) biriminde buffer_size olarak ayarlar.
-c count count kadar paket aldıktan sonra çıkış yapar.
-c skip,count count kadar paket aldıktan veya görüntüledikten sonra çıkış yapar.
İkinci biçim, yoksayılacak ilk paketlerin sayısının skip parametresiyle geçirilmesine olanak tanır. skip parametresi virgülden önce zorunludur ancak count parametresi virgülden sonra isteğe bağlıdır.
--count Yakalama dosyasını/dosyalarını okurken paketleri ayrıştırmak/yazdırmak yerine yalnızca stderr üzerinde paket sayısını yazdırır. Komut satırında bir filtre belirtilmişse, tcpdump yalnızca filtre ifadesiyle eşleşen paketleri sayar.
-C file_size Ham bir paketi bir kayıt dosyasına yazmadan önce, dosyanın şu anda file_size değerinden büyük olup olmadığını kontrol eder ve büyükse mevcut kayıt dosyasını kapatıp yeni bir tane açar. İlk kayıt dosyasından sonraki kayıt dosyaları, -w bayrağıyla belirtilen ada sahip olacak ve arkasından 1'den başlayıp yukarıya doğru devam eden bir numara alacaktır. file_size birimleri milyon bayttır (1.048.576 bayt değil, 1.000.000 bayt).
-d: Derlenmiş paket eşleştirme kodunu insan tarafından okunabilir bir biçimde standart çıktıya dökümler ve durur.
Kod derlemesinin her zaman DLT'ye (Data Link Type) özgü olmasına rağmen, döküm için hangi DLT'nin kullanılacağını belirtmenin genellikle imkansız (ve gereksiz) olduğunu lütfen unutmayın; çünkü tcpdump, -r ile belirtilen girdi pcap dosyasının DLT'sini, -i ile belirtilen ağ arayüzünün varsayılan DLT'sini veya sırasıyla -y ve -i ile belirtilen ağ arayüzünün özel DLT'sini kullanır. Bu durumlarda döküm, -d olmadan girdi dosyasını veya ağ arayüzünü filtreleyecek olan kodun aynısını gösterir.
Ancak, ne -r ne de -i belirtilmediğinde, -d'nin belirtilmesi tcpdump'ın uygun bir ağ arayüzü tahmin etmesini engeller (bkz. -i). Bu durumda DLT varsayılan olarak EN10MB olur ve -y ile manuel olarak başka bir geçerli değere ayarlanabilir.
-dd: Paket eşleştirme kodunu bir C programı parçası olarak dökümler.-ddd: Paket eşleştirme kodunu ondalık sayılar olarak (önünde bir sayı olacak şekilde) dökümler.
-D --list-interfaces Sistemde mevcut olan ve tcpdump'ın üzerinde paket yakalayabileceği ağ arayüzlerinin listesini yazdırır. Her ağ arayüzü için bir numara ve bir arayüz adı, isteğe bağlı olarak arayüzün metin açıklamasıyla birlikte yazdırılır. Yakalama yapılacak arayüzü belirtmek için arayüz adı veya numarası -i bayrağına sağlanabilir.
Bu, bunları listelemek için bir komutu olmayan sistemlerde (örneğin, Windows sistemleri veya ifconfig -a bulunmayan UNIX sistemleri) yararlı olabilir; arayüz adının biraz karmaşık bir dize olduğu Windows 2000 ve sonraki sistemlerde numara yararlı olabilir.
Eğer tcpdump, pcap_findalldevs(3PCAP) işlevinden yoksun eski bir libpcap sürümüyle derlendiyse, -D bayrağı desteklenmeyecektir.
-e: Her döküm satırında bağlantı seviyesi başlığını yazdırır. Bu, örneğin, Ethernet ve IEEE 802.11 gibi protokoller için MAC katmanı adreslerini yazdırmak için kullanılabilir.-E: addr adresine yönlendirilen ve Güvenlik Parametresi İndeksi (Security Parameter Index) değeri spi içeren IPsec ESP paketlerini şifre çözmek için spi@ipaddr algo:secret kullanır. Bu kombinasyon virgül veya yeni satır ayrımıyla tekrarlanabilir.
IPv4 ESP paketleri için secret ayarlanmasının şu anda desteklendiğini unutmayın.
Algoritmalar des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc veya none olabilir. Varsayılan des-cbc'dir. Paketlerin şifresini çözme yeteneği yalnızca tcpdump kriptografi etkinleştirilerek derlenmişse mevcuttur.
secret, ESP gizli anahtarı (secret key) için ASCII metnidir. Önünde 0x varsa, bir onaltılık (hex) değer okunacaktır.
Seçenek RFC1827 ESP'yi değil, RFC2406 ESP'yi varsayar. Seçenek yalnızca hata ayıklama amaçlıdır ve bu seçeneğin gerçek bir secret anahtarla kullanılması önerilmez. IPsec gizli anahtarını komut satırına sunarak, bunu ps(1) ve diğer durumlar aracılığıyla başkaları tarafından görünür kılarsınız.
Yukarıdaki söz dizimine ek olarak, tcpdump'ın sağlanan dosyayı okumasını sağlamak için dosya adı söz dizimi kullanılabilir. Dosya, ilk ESP paketi alındığında açılır, bu nedenle tcpdump'a verilmiş olabilecek tüm özel izinlerin zaten bırakılmış olması gerekir.
-f:Yabancı(foreign) IPv4 adreslerini sembolik olarak değil, sayısal olarak yazdırır (bu seçenek, Sun'ın NIS sunucusundaki ciddi bir tasarım hatasının -genellikle yerel olmayan internet numaralarını çevirirken sonsuza kadar takılı kalır- etrafından dolaşmak için tasarlanmıştır).
Yabancı IPv4 adresleri testi, yakalamanın yapıldığı arayüzün IPv4 adresi ve ağ maskesi kullanılarak yapılır. Bu adres veya ağ maskesi mevcut değilse (yakalamanın yapıldığı arayüzün adresi veya ağ maskesi olmaması nedeniyle ya da yakalamanın birden fazla arayüzde yakalama yapabilen Linux "any" arayüzünde yapılması nedeniyle), bu seçenek düzgün çalışmayacaktır.
-F file Filtre ifadesi için girdi olarak file dosyasını kullanır. Komut satırında verilen ek bir ifade yoksayılır.
-g --apple-oneline Daha kolay ayrıştırma için ayrıntılı (verbose) modda IP başlığından sonra satır sonu eklemez. Bu bir Apple eklentisidir.
-G rotate_seconds Belirtilmişse, -w seçeneği ile belirtilen döküm dosyasını her rotate_seconds saniyede bir döndürür. Kayıt dosyaları, -w tarafından belirtilen ve strftime(3) tarafından tanımlanan bir zaman biçimini içermesi gereken ada sahip olacaktır. Hiçbir zaman biçimi belirtilmemişse, her yeni dosya öncekinin üzerine yazacaktır. Üretilen bir dosya adı benzersiz olmadığında tcpdump mevcut verilerin üzerine yazacaktır; bu nedenle yakalama süresinden daha kaba bir zaman spesifikasyonu sağlanması önerilmez.
-C seçeneği ile birlikte kullanılırsa, dosya adları dosya<sayıcı> biçimini alacaktır.
-h --help tcpdump ve libpcap sürüm dizelerini yazdırır, bir kullanım mesajı yazdırır ve çıkış yapar.
--version tcpdump ve libpcap sürüm dizelerini yazdırır ve çıkış yapar.
-H: 802.11s taslak mesh başlıklarını algılamaya çalışır.
-i interface --interface=interface interface arayüzünü dinler, bunun üzerindeki bağlantı katmanı türlerinin listesini raporlar, zaman damgası türlerinin listesini raporlar veya bir filtre ifadesinin derlenmesinin sonuçlarını raporlar. Belirtilmemişse ve -d bayrağı verilmemişse tcpdump, sistem arayüz listesinde yapılandırılmış, aktif ve en düşük numaralı arayüzü (loopback hariç) arar, bu da örneğin ``eth0'' olabilir.
2.2 veya daha yeni çekirdeklere sahip Linux sistemlerinde, tüm arayüzlerden paket yakalamak için any'' şeklinde bir arayüz bağımsız değişkeni kullanılabilir. any'' cihazında yapılan yakalamaların karma (promiscuous) modda yapılmayacağını unutmayın.
Sürüm 13 veya sonraki Darwin sistemlerinde, arayüz belirtilmediğinde tcpdump, çekirdek tarafından belirlenen bir dizi arayüzde paket yakalamak için bir sözde (pseudo) arayüz kullanacaktır (varsayılan olarak loopback ve tünel arayüzlerini hariç tutar).
Alternatif olarak, aynı anda birden fazla arayüzde yakalama yapmak için, arayüz parametresi olarak "pktap" ve ardından dahil edilecek virgülle ayrılmış isteğe bağlı arayüz adları listesi kullanılabilir. Örneğin, loopback ve en0 arayüzünde yakalama yapmak için: tcpdump -i pktap,lo0,en0
Tüm arayüzlerden (loopback ve tünel arayüzleri dahil) paket yakalamak için "all" veya "pktap,all" şeklinde bir arayüz bağımsız değişkeni kullanılabilir.
Bir pktap sözde arayüzü, varsayılan PKTAP veri bağlantısı türünü kullanarak paket meta verilerini sağlar ve dosyalar Pcap-ng dosya biçiminde yazılır. Bir pktap sözde arayüzüyle eski pcap-savefile(5) dosya biçimini kullanmaya zorlamak için RAW veri bağlantısı türü kullanılmalıdır. Bir pktap sözde arayüzündeki yakalamaların karma modda yapılmayacağını unutmayın.
IP katmanındaki paketleri yakalamak için "iptap" şeklinde bir arayüz bağımsız değişkeni kullanılabilir. Bu, ağ yığınının IPv4 ve IPv6 protokol işleyicilerinin girdi ve çıktı rutinlerine geçirilen paketleri yakalar. Yakalamaların karma modda yapılmayacağını unutmayın.
Eğer -D bayrağı destekleniyorsa, sistemde bu numaraya sahip bir arayüz adı yoksa, bu bayrak tarafından yazdırılan bir arayüz numarası arayüz bağımsız değişkeni olarak kullanılabilir.
-I --monitor-mode Arayüzü "monitör moduna" alır; bu yalnızca IEEE 802.11 Wi-Fi arayüzlerinde desteklenir ve yalnızca bazı işletim sistemlerinde desteklenir.
Monitör modunda adaptörün ilişkili olduğu ağdan ayrılabileceğini ve böylece bu adaptörle hiçbir kablosuz ağı kullanamayabileceğinizi unutmayın. Monitör modunda yakalama yapıyorsanız ve başka bir adaptörle başka bir ağa bağlı değilseniz, bu durum bir ağ sunucusundaki dosyalara erişmeyi veya ana bilgisayar adlarını ya da ağ adreslerini çözmeyi engelleyebilir.
Bu bayrak -L bayrağının çıktısını etkileyecektir. Eğer -I belirtilmemişse, yalnızca monitör modunda değilken kullanılabilen bağlantı katmanı türleri gösterilecektir; eğer -I belirtilmişse, yalnızca monitör modundayken kullanılabilen bağlantı katmanı türleri gösterilecektir.
--immediate-mode "Anlık modda" (immediate mode) yakalama yapar. Bu modda paketler, verimlilik için arabelleğe alınmak yerine gelir gelmez tcpdump'a iletilir. Paketler bir dosyaya veya boruya (pipe) değil de bir terminale yazdırılıyorsa, paketleri bir ``kayıt dosyasına'' kaydetmek yerine yazdırma sırasındaki varsayılan davranış budur.
-j tstamp_type --time-stamp-type=tstamp_type Yakalama için zaman damgası türünü tstamp_type olarak ayarlar. Zaman damgası türleri için kullanılacak isimler pcap-tstamp(7) içinde verilmiştir; orada listelenen tüm türler herhangi bir arayüz için mutlaka geçerli olmayabilir.
-J --list-time-stamp-types Arayüz için desteklenen zaman damgası türlerini listeler ve çıkış yapar. Arayüz için zaman damgası türü ayarlanamıyorsa, hiçbir zaman damgası türü listelenmez.
--time-stamp-precision=tstamp_precision Yakalama yaparken, yakalama için zaman damgası hassasiyetini tstamp_precision olarak ayarlar. Yüksek hassasiyetli zaman damgalarının (nanosaniye) kullanılabilirliğinin ve bunların gerçek doğruluğunun platforma ve donanıma bağlı olduğunu unutmayın. Ayrıca, nanosaniye hassasiyetiyle yapılan yakalamaları bir kayıt dosyasına yazarken zaman damgalarının nanosaniye çözünürlüğüyle yazıldığını ve zaman damgalarının saniye ve nanosaniye cinsinden olduğunu belirtmek için dosyanın farklı bir sihirli numara (magic number) ile yazıldığını unutmayın; pcap kayıt dosyalarını okuyan tüm programlar bu yakalamaları okuyamayabilir.
Bir kayıt dosyasını okurken, zaman damgalarını timestamp_precision ile belirtilen hassasiyete dönüştürür ve bunları bu çözünürlükle görüntüler. Belirtilen hassasiyet dosyadaki zaman damgalarının hassasiyetinden daha azsa, dönüştürme işlemi hassasiyet kaybına neden olacaktır.
timestamp_precision için desteklenen değerler mikrosaniye çözünürlüğü için micro ve nanosaniye çözünürlüğü için nano'dur. Varsayılan değer mikrosaniye çözünürlüğüdür.
--micro --nano Zaman damgası hassasiyetini buna göre ayarlayan --time-stamp-precision=micro veya --time-stamp-precision=nano için kısayollardır. Bir kayıt dosyasından paketleri okurken, kayıt dosyası nanosaniye hassasiyetiyle oluşturulmuşsa --micro kullanılması zaman damgalarını kırpar. Buna karşılık, mikrosaniye hassasiyetiyle oluşturulmuş bir kayıt dosyasına --nano kullanıldığında zaman damgasına son sıfırlar eklenecektir.
-k metadata_arg --apple-md-print metadata_arg İsteğe bağlı bir metadata_arg bağımsız değişkeni aracılığıyla paket meta verilerinin görüntülenmesini kontrol eder. Bu, pcap-ng dosya biçiminde kaydedilen paketleri görüntülerken veya PKTAP veri bağlantısı türünü destekleyen arayüzlerle çalışırken kullanışlıdır.
Varsayılan olarak, metadata_arg isteğe bağlı bağımsız değişkeni belirtilmediğinde, mevcut olan tüm paket meta veri bilgileri yazdırılır.
metadata_arg bağımsız değişkeni, her bir karakterin aşağıdaki gibi bir paket meta verisi türüne karşılık geldiği bir bayrak kelimesi kullanarak belirli paket meta veri bilgilerinin görüntülenmesini kontrol eder:
I arayüz adı (veya arayüz kimliği - interface ID) N işlem adı (process name) P işlem kimliği (process ID) S hizmet sınıfı (service class) D yön (direction) C yorum (comment) F bayraklar (flags) U işlem UUID'si (varsayılan olarak gösterilmez) V pcap-ng bloklarının ayrıntılı printf çıktısı (varsayılan olarak gösterilmez) d veri bağlantısı türü (data link type) f akış tanımlayıcı (flow identifier) t izleme etiketi (trace tag) A tüm meta veri türlerini görüntüle
Bu bir Apple değişikliğidir.
-K --dont-verify-checksums IP, TCP veya UDP sağlama toplamlarını (checksum) doğrulamaya çalışmaz. Bu, bu sağlama toplamı hesaplamalarının bir kısmını veya tamamını donanımda gerçekleştiren arayüzler için kullanışlıdır; aksi takdirde giden tüm TCP sağlama toplamları hatalı olarak işaretlenecektir.
Bu seçenek ayrıca ip ve ip6 için eksik kırpılmış bayt uyarılarını da bastırır (Apple değişikliği).
-l: Standart çıktıyı (stdout) satır arabellekli (line buffered) yapar. Paketleri yakalarken verileri görmek istiyorsanız kullanışlıdır. Örn., tcpdump -l | tee dat
veya tcpdump -l > dat & tail -f dat
Windows'ta satır arabellekli'' ifadesinin arabelleksiz'' anlamına geldiğini unutmayın, bu nedenle -l belirtilirse WinDump her karakteri ayrı ayrı yazacaktır.
-U davranışı açısından -l'ye benzer, ancak çıktının ``paket arabellekli'' olmasını sağlar, böylece çıktı her satırın sonunda değil, her paketin sonunda stdout'a yazılır; bu, Windows dahil tüm platformlarda arabellekli çalışır.
-L --list-data-link-types Arayüz için bilinen veri bağlantısı türlerini belirtilen modda listeler ve çıkış yapar. Bilinen veri bağlantısı türlerinin listesi belirtilen moda bağlı olabilir; örneğin, bazı platformlarda bir Wi-Fi arayüzü monitör modunda değilken bir veri bağlantısı türü kümesini destekleyebilir (örneğin yalnızca sahte Ethernet başlıklarını destekleyebilir veya 802.11 başlıklarını destekleyip radyo bilgisi içeren 802.11 başlıklarını desteklemeyebilir) ve monitör modundayken başka bir veri bağlantısı türü kümesini destekleyebilir (örneğin, yalnızca monitör modunda 802.11 başlıklarını veya radyo bilgisi içeren 802.11 başlıklarını destekleyebilir).
-m module SMI MIB modül tanımlarını module dosyasından yükler. Bu seçenek, tcpdump'a birkaç MIB modülü yüklemek için birkaç kez kullanılabilir.
-M secret Varsa, TCP-MD5 seçeneğine (RFC 2385) sahip TCP segmentlerinde bulunan özetleri doğrulamak için secret değerini paylaşılan bir gizli anahtar (shared secret) olarak kullanır.
-n: Adresleri (yani ana bilgisayar adreslerini, bağlantı noktası numaralarını vb.) isimlere dönüştürmez.-N: Ana bilgisayar adlarının etki alanı adı niteliklerini yazdırmaz. Örneğin, bu bayrağı verirseniz tcpdumpnic.ddn.mil'' yerinenic'' yazdıracaktır.
-# --number Satırın başında isteğe bağlı bir paket numarası yazdırır.
Bu seçeneğin iki kez kullanılması, filtrelenmiş paketleri de sayarak dosyanın başından itibaren paket numarasını yazdırır. Bu, -r veya -V seçeneklerini gerektirir. Bu bir Apple eklentisidir.
-O --no-optimize Paket eşleştirme kodu optimize edicisini çalıştırmaz. Bu yalnızca optimize edicide bir hata olduğundan şüphelendiğinizde yararlıdır.
-P --apple-pcapng Dosyaları kaydederken pcap-ng dosya biçimini kullanır. Bu bir Apple eklentisidir.
-p
--no-promiscuous-mode
Arayüzü karma (promiscuous) moda almaz. Arayüzün başka bir nedenle karma modda olabileceğini unutmayın; bu nedenle -p' seçeneği ether host {yerel-donanim-adresi} veya ether broadcast' için bir kısaltma olarak kullanılamaz.
--print Ham paketler -w bayrağıyla bir dosyaya kaydediliyor olsa bile ayrıştırılmış paket çıktısını yazdırır.
-Q direction
--direction=direction
Paketlerin yakalanacağı gönderim/alım yönünü (direction) seçer. Olası değerler in (giriş), out (çıkış) ve inout (giriş-çıkış) şeklindedir. Tüm platformlarda mevcut değildir.
-Q meta-data-expression --apple-md-filter meta-data-expression Aşağıdaki PAKET META VERİ FİLTRESİ (PACKET METADATA FILTER) bölümüne bakın. Bu bir Apple eklentisidir.
-q: Hızlı (sessiz?) çıktı. Çıktı satırlarının daha kısa olması için daha az protokol bilgisi yazdırır.
-r file Paketleri file dosyasından okur (bu dosya -w seçeneği ile veya pcap ya da pcapng dosyaları yazan diğer araçlarla oluşturulmuştur). Eğer file ``-'' ise standart girdi kullanılır.
-S --absolute-tcp-sequence-numbers Göreceli (relative) yerine mutlak (absolute) TCP sıra numaralarını (sequence numbers) yazdırır.
-s snaplen --snapshot-length=snaplen Varsayılan 262144 bayt yerine her paketten snaplen bayt veri yakalar. Sınırlı bir ekran görüntüsü (snapshot) nedeniyle kırpılan paketler, çıktıda ``[|proto]'' ile belirtilir; burada proto, kırpmanın gerçekleştiği protokol seviyesinin adıdır.
Daha büyük anlık görüntüler almanın hem paketleri işlemek için geçen süreyi artıracağını hem de paket arabelleğe alma miktarını etkili bir şekilde azaltacağını unutmayın. Bu, paketlerin kaybolmasına neden olabilir. Daha küçük anlık görüntüler almanın, taşıma katmanının üzerindeki protokollerden gelen verileri atacağını ve bunun da önemli olabilecek bilgilerin kaybolmasına neden olacağını unutmayın. Örneğin, NFS ve AFS istekleri ve yanıtları çok büyüktür ve çok kısa bir anlık görüntü uzunluğu seçilirse ayrıntıların çoğu mevcut olmayacaktır.
Anlık görüntü boyutunu varsayılan değerin altına düşürmeniz gerekiyorsa, snaplen değerini ilgilendiğiniz protokol bilgilerini yakalayacak en küçük sayıyla sınırlamalısınız. snaplen değerini 0 olarak ayarlamak, tcpdump'ın son eski sürümleriyle geriye dönük uyumluluk için varsayılan 262144 değerine ayarlar.
-T type "expression" (ifade) tarafından seçilen paketlerin belirtilen type (tür) olarak yorumlanmaya zorlanmasını sağlar. Şu anda bilinen türler: aodv (Ad-hoc On-demand Distance Vector protokolü), carp (Common Address Redundancy Protokolü), cnfp (Cisco NetFlow protokolü), domain (Domain Name System), lmp (Link Management Protokolü), pgm (Pragmatic General Multicast), pgm_zmtp1 (PGM/EPGM içinde ZMTP/1.0), ptp (Precision Time Protokolü), radius (RADIUS), resp (REdis Serialization Protokolü), rpc (Remote Procedure Call), rtcp (Real-Time Applications kontrol protokolü), rtp (Real-Time Applications protokolü), snmp (Simple Network Management Protokolü), someip (SOME/IP), tftp (Trivial File Transfer Protokolü), vat (Visual Audio Tool), vxlan (Virtual eXtensible Local Area Network), wb (dağıtık White Board) ve zmtp1 (ZeroMQ Message Transport Protokolü 1.0).
Yukarıdaki pgm türünün yalnızca UDP yorumlamasını etkilediğini, yerel PGM'in her halükarda her zaman IP protokolü 113 olarak tanındığını unutmayın. UDP ile kapsüllenmiş PGM genellikle "EPGM" veya "PGM/UDP" olarak adlandırılır.
Yukarıdaki pgm_zmtp1 türünün hem yerel PGM hem de UDP yorumlamasını aynı anda etkilediğini unutmayın. Yerel PGM kod çözme sırasında, bir ODATA/RDATA paketinin uygulama verileri, ZMTP/1.0 çerçevelerine sahip bir ZeroMQ veri paketi (datagram) olarak çözülecektir. UDP kod çözme sırasında buna ek olarak, herhangi bir UDP paketi kapsüllenmiş bir PGM paketi olarak ele alınacaktır.
Kayıtlı olmayan UDP protokolleri için ek ayrıştırıcılar (dissectors): iperf (iperf 2.x), iperf3 (iperf 3.x), iperf3-64 (64 bit paket kimliğine sahip iperf 3.x), suttp (Simple UDP Throughput Test Protokolü),
-t: Her döküm satırında bir zaman damgası yazdırmaz.-tt: Her döküm satırında zaman damgasını 1 Ocak 1970, 00:00:00, UTC'den bu yana geçen saniye ve bu zamandan beri geçen saniyenin kesirleri olarak yazdırır.-ttt: Her döküm satırında mevcut satır ile önceki satır arasında bir fark (delta) (--time-stamp-precision seçeneğine bağlı olarak mikrosaniye veya nanosaniye çözünürlüğünde) yazdırır. Varsayılan değer mikrosaniye çözünürlüğüdür.-tttt: Her döküm satırında, başında tarih olacak şekilde, gece yarısından itibaren saat, dakika, saniye ve saniyenin kesirleri olarak bir zaman damgası yazdırır.
-ttttt Mevcut satır ile ilk satır arasında bir fark (delta) (seçeneğe bağlı olarak mikrosaniye veya nanosaniye çözünürlüğünde)
--time-stamp-precision seçeneği) her döküm satırında yazdırır.: Varsayılan değer mikrosaniye çözünürlüğüdür.-t n: Zaman damgası ekranının türünü belirtmek için alternatif bir biçimdir; burada n, aşağıdaki anlamlara gelen 0 ile 5 arasında bir sayıdır:
0 zaman (time) 1 zaman yok (no time) 2 biçimlendirilmemiş zaman damgası (unformatted timestamp) 3 önceki satırdan itibaren mikrosaniye (microseconds since previous line) 4 tarih ve saat (date and time) 5 ilk satırdan itibaren mikrosaniye (microseconds since first line)
Her döküm satırında birden fazla zaman damgası türü görüntülemek için bu seçenek birden fazla kez belirtilebilir.
-u: Kodu çözülmemiş NFS tanıtıcılarını (handles) yazdırır.
-U --packet-buffered Eğer -w seçeneği belirtilmemişse veya belirtilmiş ancak --print bayrağı da belirtilmişse, yazdırılan paket çıktısını ``paket arabellekli'' (packet-buffered) yapar; yani her paketin içeriğinin açıklaması yazdırılırken, bir terminale yazılmadığında yalnızca çıktı arabelleği dolduğunda yazılmak yerine standart çıktıya yazılacaktır.
Eğer -w seçeneği belirtilmişse, kaydedilen ham paket çıktısını ``paket arabellekli'' yapar; yani her paket kaydedildiğinde, yalnızca çıktı arabelleği dolduğunda yazılmak yerine çıktı dosyasına yazılacaktır.
Eğer tcpdump, pcap_dump_flush(3PCAP) işlevinden yoksun eski bir libpcap sürümüyle derlendiyse, -U bayrağı desteklenmeyecektir.
-v: Ayrıştırırken ve yazdırırken (biraz daha) ayrıntılı (verbose) çıktı üretir. Örneğin, bir IP paketindeki yaşam süresi (time to live), kimlik (identification), toplam uzunluk (total length) ve seçenekler yazdırılır. Ayrıca IP ve ICMP başlık sağlama toplamını doğrulamak gibi ek paket bütünlüğü kontrollerini etkinleştirir.
-w seçeneği ile bir dosyaya yazarken ve aynı zamanda -r seçeneği ile bir dosyadan okuma yapmazken, saniyede bir kez yakalanan paket sayısını stderr'e raporlar. Solaris, FreeBSD ve muhtemelen diğer işletim sistemlerinde bu periyodik güncelleme şu anda çekirdekten tcpdump'a giden yolda yakalanan paketlerin kaybolmasına neden olabilir.
Darwin sistemlerinde, -w seçeneğiyle bir dosyaya yazarken, son bir saniye içinde yeni paket gelmemişse yakalanan paket sayısı güncellenmez.
-vv: Daha da ayrıntılı çıktı. Örneğin, NFS yanıt paketlerinden ek alanlar yazdırılır ve SMB paketlerinin kodu tamamen çözülür.-vvv: Çok daha ayrıntılı çıktı. Örneğin, telnet SB ... SE seçenekleri eksiksiz olarak yazdırılır. -X ile Telnet seçenekleri onaltılık (hex) olarak da yazdırılır.
-V file Dosya adlarının bir listesini file dosyasından okur. Eğer file ``-'' ise standart girdi kullanılır.
-w file Paketleri ayrıştırıp yazdırmak yerine ham paketleri file dosyasına yazar. Bunlar daha sonra -r seçeneğiyle yazdırılabilir. Eğer file ``-'' ise standart çıktı kullanılır.
Bir dosyaya veya boruya yazılırsa bu çıktı arabelleğe alınacaktır, bu nedenle dosyadan veya borudan okuma yapan bir program, paketler alındıktan sonra keyfi bir süre boyunca paketleri göremeyebilir. Paketlerin alınır alınmaz yazılmasını sağlamak için -U bayrağını kullanın.
IANA'ya pcap dosyaları için application/vnd.tcpdump.pcap MIME türü kaydedilmiştir. .pcap dosya adı uzantısı, .cap ve .dmp ile birlikte en yaygın kullanılan uzantı olarak görünmektedir. Tcpdump'ın kendisi yakalama dosyalarını okurken uzantıyı kontrol etmez ve yazarken bir uzantı eklemez (bunun yerine dosya başlığındaki sihirli numaraları kullanır). Ancak birçok işletim sistemleri ve uygulamalar eğer varsa uzantıyı kullanacaktır ve bir uzantı eklenmesi (örneğin .pcap) önerilir.
Dosya biçiminin açıklaması için pcap-savefile(5) sayfasına bakın.
-W filecount -C seçeneği ile birlikte kullanıldığında, oluşturulan dosya sayısını belirtilen sayıyla sınırlayacak ve dosyaların üzerine en baştan başlayarak yazmaya başlayacaktır, böylece 'dönen' (rotating) bir arabellek oluşturacaktır. Ayrıca, dosyaları maksimum dosya sayısını destekleyecek şekilde yeterli sayıda öncü 0 ile adlandıracak ve doğru şekilde sıralanmalarını sağlayacaktır.
-G seçeneği ile birlikte kullanıldığında, oluşturulan dönen döküm dosyası sayısını sınırlayacak ve sınıra ulaşıldığında durum kodu 0 ile çıkış yapacaktır.
Hem -C hem de -G ile birlikte kullanılırsa, -W seçeneği şu anda yoksayılacak ve yalnızca dosya adını etkileyecektir.
-x: Ayrıştırırken ve yazdırırken, her paketin başlıklarını yazdırmaya ek olarak, her paketin verilerini (bağlantı seviyesi başlığı hariç) onaltılık (hex) olarak yazdırır. Tüm paketin veya snaplen baytın daha küçük olanı yazdırılacaktır. Bunun tüm bağlantı katmanı paketi olduğunu unutmayın, bu nedenle dolgu (padding) uygulayan bağlantı katmanları için (örneğin Ethernet), daha yüksek katman paketi gereken dolgudan daha kısa olduğunda dolgu baytları da yazdırılacaktır. Mevcut uygulamada, paket kırpılmışsa bu bayrak -xx ile aynı etkiye sahip olabilir.-xx: Ayrıştırırken ve yazdırırken, her paketin başlıklarını yazdırmaya ek olarak, bağlantı seviyesi başlığı dahil her paketin verilerini onaltılık (hex) olarak yazdırır.-X: Ayrıştırırken ve yazdırırken, her paketin başlıklarını yazdırmaya ek olarak, her paketin verilerini (bağlantı seviyesi başlığı hariç) onaltılık (hex) ve ASCII olarak yazdırır. Bu, yeni protokolleri analiz etmek için çok kullanışlıdır. Mevcut uygulamada, paket kırpılmışsa bu bayrak -XX ile aynı etkiye sahip olabilir.-XX: Ayrıştırırken ve yazdırırken, her paketin başlıklarını yazdırmaya ek olarak, bağlantı seviyesi başlığı dahil her paketin verilerini onaltılık (hex) ve ASCII olarak yazdırır.
-y datalinktype --linktype=datalinktype Paketleri yakalarken (bkz. -L) veya yalnızca paket eşleştirme kodunu derleyip dökümlerken (bkz. -d) kullanılacak veri bağlantısı türünü datalinktype olarak ayarlar.
-z postrotate-command -C veya -G seçenekleriyle birlikte kullanıldığında, tcpdump'ın her döndürmeden sonra kapatılan kayıt dosyası olan file için " postrotate-command file " komutunu çalıştırmasını sağlar. Örneğin, -z gzip veya -z bzip2 belirtilmesi her kayıt dosyasını gzip veya bzip2 kullanarak sıkıştıracaktır.
tcpdump'ın yakalama işlemini engellememesi için komutu en düşük önceliği kullanarak yakalamaya paralel olarak çalıştıracağını unutmayın.
Kendisi de bayraklar veya farklı bağımsız değişkenler alan bir komut kullanmak istemeniz durumunda, kayıt dosyası adını tek bağımsız değişken olarak alacak, bayrak ve bağımsız değişken düzenlemelerini yapacak ve istediğiniz komutu yürütecek bir kabuk (shell) betiği yazabilirsiniz.
-Z user --relinquish-privileges=user Eğer tcpdump root olarak çalışıyorsa, yakalama cihazını veya girdi kayıt dosyasını açtıktan sonra ancak çıktı için herhangi bir kayıt dosyası açmadan önce, kullanıcı kimliğini (user ID) user olarak ve grup kimliğini (group ID) user'ın birincil grubu olarak değiştirir.
Bu davranış, derleme zamanında varsayılan olarak da etkinleştirilebilir.
expression
hangi paketlerin dökümleneceğini seçer. Eğer hiçbir ifade (expression) verilmezse, ağ üzerindeki tüm paketler dökümlenecektir. Aksi takdirde, yalnızca expression ifadesinin true (doğru) olduğu paketler dökümlenecektir.
İfade söz dizimi için pcap-filter(7) sayfasına bakın.
expression bağımsız değişkeni tcpdump'a tek bir Shell bağımsız değişkeni veya hangisi daha kolaysa birden fazla Shell bağımsız değişkeni olarak geçirilebilir. Genellikle, ifade protokol adlarından kaçınmak için kullanılan ters eğik çizgiler gibi Shell meta karakterleri içeriyorsa, Shell meta karakterlerinden kaçınmak yerine bunu tek bir tırnak içine alınmış bağımsız değişken olarak geçirmek daha kolaydır. Birden fazla bağımsız değişken, ayrıştırılmadan önce boşluklarla birleştirilir.
Örnekler
sundown makinesine gelen veya buradan giden tüm paketleri yazdırmak için:
tcpdump host sundown
helios ile hot veya ace arasındaki trafiği yazdırmak için:
tcpdump host helios and \( hot or ace \)
ace ile helios hariç herhangi bir ana bilgisayar arasındaki tüm IP paketlerini yazdırmak için:
tcpdump ip host ace and not helios
yerel ana bilgisayarlar ile Berkeley'deki ana bilgisayarlar arasındaki tüm trafiği yazdırmak için:
tcpdump net ucb-ether
internet ağ geçidi (gateway) snup üzerindeki tüm ftp trafiğini yazdırmak için: (kabuğun parantezleri yanlış yorumlamasını önlemek için ifadenin tırnak içine alındığına dikkat edin):
tcpdump 'gateway snup and (port ftp or ftp-data)'
kaynağı veya hedefi yerel ana bilgisayarlar olmayan trafiği yazdırmak için (başka bir ağa ağ geçidi yapıyorsanız, bu verilerin yerel ağınıza asla ulaşmaması gerekir):
tcpdump ip and not net localnet
yerel olmayan bir ana bilgisayarı içeren her TCP görüşmesinin başlangıç ve bitiş paketlerini (SYN ve FIN paketleri) yazdırmak için:
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
RST ve ACK bayraklarının her ikisi de ayarlanmış TCP paketlerini yazdırmak için (yani bayraklar alanında yalnızca RST ve ACK bayraklarını seçin ve sonuç "hem RST hem de ACK ayarlanmış" ise eşleştirin):
tcpdump 'tcp[tcpflags] & (tcp-rst|tcp-ack) == (tcp-rst|tcp-ack)'
bağlantı noktası (port) 80'e gelen ve giden tüm IPv4 HTTP paketlerini yazdırmak için, yani SYN ve FIN paketleri ile yalnızca ACK paketlerini değil, yalnızca veri içeren paketleri yazdırmak için (IPv6 okuyucuya bir alıştırma olarak bırakılmıştır):
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
ağ geçidi snup üzerinden gönderilen 576 bayttan uzun IP paketlerini yazdırmak için:
tcpdump 'gateway snup and ip[2:2] > 576'
Ethernet yayını (broadcast) veya çoklu gönderim (multicast) yoluyla gönderilmeyen IP yayını veya çoklu gönderim paketlerini yazdırmak için:
tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
yankı isteği/yanıtı (echo request/reply - yani ping paketleri) olmayan tüm ICMP paketlerini yazdırmak için:
tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
Çıktı Biçimi
tcpdump'ın çıktısı protokole bağlıdır. Aşağıda çoğu biçimin kısa bir açıklaması ve örnekleri verilmiştir.
Zaman Damgaları
Varsayılan olarak, tüm çıktı satırlarının önünde bir zaman damgası bulunur. Zaman damgası, şu biçimdeki geçerli saat süresidir: saat:dakika:saniye.kesir (hh:mm:ss.frac) ve çekirdeğin (kernel) saati kadar doğrudur. Zaman damgası, çekirdeğin pakete zaman damgası uyguladığı zamanı yansıtır. Ağ arayüzünün paketi ağdan almayı bitirdiği an ile çekirdeğin pakete zaman damgası uyguladığı an arasındaki zaman gecikmesini hesaba katmak için hiçbir girişimde bulunulmaz; bu zaman gecikmesi, ağ arayüzünün paketi ağdan almayı bitirdiği zaman ile çekirdeğin paketi okumasını sağlamak için bir kesmenin (interrupt) çekirdeğe iletildiği zaman arasındaki bir gecikmeyi ve çekirdeğin `yeni paket' kesmesine hizmet ettiği zaman ile pakete bir zaman damgası uyguladığı zaman arasındaki bir gecikmeyi içerebilir.
Bağlantı Seviyesi Başlıkları
'-e' seçeneği verilirse, bağlantı seviyesi başlığı yazdırılır. Ethernet'lerde kaynak ve hedef adresleri, protokol ve paket uzunluğu yazdırılır.
FDDI ağlarında, '-e' seçeneği tcpdump'ın frame control (çerçeve kontrolü) alanını, kaynak ve hedef adreslerini ve paket uzunluğunu yazdırmasını sağlar. (frame control alanı, paketin geri kalanının yorumlanmasını yönetir. Normal paketler (IP veri paketleri içerenler gibi), 0 ile 7 arasında bir öncelik değerine sahip async (uyumsuz) paketlerdir; örneğin async4. Bu tür paketlerin bir 802.2 Logical Link Control (LLC) paketi içerdiği varsayılır; LLC başlığı, bir ISO veri paketi veya sözde bir SNAP paketi değilse yazdırılır.)
Token Ring ağlarında, '-e' seçeneği tcpdump'ın access control (erişim kontrolü) ve frame control (çerçeve kontrolü) alanlarını, kaynak ve hedef adreslerini ve paket uzunluğunu yazdırmasını sağlar. FDDI ağlarında olduğu gibi, paketlerin bir LLC paketi içerdiği varsayılır. '-e' seçeneğinin belirtilip belirtilmediğine bakılmaksızın, kaynak yönlendirmeli (source-routed) paketler için kaynak yönlendirme bilgisi yazdırılır.
802.11 ağlarında, '-e' seçeneği tcpdump'ın frame control (çerçeve kontrolü) alanlarını, 802.11 başlığındaki tüm adresleri ve paket uzunluğunu yazdırmasını sağlar. FDDI ağlarında olduğu gibi, paketlerin bir LLC paketi içerdiği varsayılır.
(N.B.: Aşağıdaki açıklama, RFC-1144'te açıklanan SLIP sıkıştırma algoritmasına aşinalık olduğunu varsayar.)
SLIP bağlantılarında, bir yön göstergesi (gelen için I'' [inbound], giden için O'' [outbound]), paket türü ve sıkıştırma bilgisi yazdırılır. Önce paket türü yazdırılır. Üç tür ip, utcp ve ctcp'dir. ip paketleri için daha fazla bağlantı bilgisi yazdırılmaz. TCP paketleri için, türün ardından bağlantı tanımlayıcısı (connection identifier) yazdırılır. Paket sıkıştırılmışsa, kodlanmış başlığı yazdırılır. Özel durumlar *S+n ve *SA+n olarak yazdırılır; burada n, sıra numarasının (veya sıra numarası ve ack değerinin) değiştiği miktardır. Özel bir durum değilse sıfır veya daha fazla değişiklik yazdırılır. Bir değişiklik U (urgent pointer [acil durum işaretçisi]), W (window [pencere]), A (ack), S (sequence number [sıra numarası]) ve I (packet ID [paket kimliği]) ile gösterilir, ardından bir fark (delta) (+n or -n) ya da yeni bir değer (=n) gelir. Son olarak paketteki veri miktarı ve sıkıştırılmış başlık uzunluğu yazdırılır.
Örneğin, aşağıdaki satır örtük bir bağlantı tanımlayıcısına sahip giden sıkıştırılmış bir TCP paketini göstermektedir; ack 6, sıra numarası 49 ve paket kimliği 6 oranında değişmiştir; 3 bayt veri ve 6 bayt sıkıştırılmış başlık vardır: O ctcp * A+6 S+49 I+6 3 (6)
ARP/RARP Paketleri
ARP/RARP çıktısı isteğin türünü ve bağımsız değişkenlerini gösterir. Biçimin kendi kendini açıklayıcı olması amaçlanmıştır. İşte rtsg ana bilgisayarından csam ana bilgisayarına yapılan bir rlogin işleminin başlangıcından alınan kısa bir örnek:
arp who-has csam tell rtsg
arp reply csam is-at CSAM
İlk satır, rtsg'nin internet ana bilgisayarı csam'in Ethernet adresini soran bir ARP paketi gönderdiğini söyler. Csam kendi Ethernet adresiyle yanıt verir (bu örnekte Ethernet adresleri büyük harfle ve internet adresleri küçük harfle gösterilmiştir).
tcpdump -n yapsaydık bu daha az tekrarlı görünürdü: arp who-has 128.3.254.6 tell 128.3.254.68 arp reply 128.3.254.6 is-at 02:07:01:00:01:c4
tcpdump -e yapsaydık, ilk paketin yayın (broadcast), ikincisinin ise noktadan noktaya (point-to-point) olduğu görülebilirdi: RTSG Broadcast 0806 64: arp who-has csam tell rtsg CSAM RTSG 0806 64: arp reply csam is-at CSAM İlk paket için bu, Ethernet kaynak adresinin RTSG, hedefin Ethernet yayın adresi olduğunu, tür (type) alanının onaltılık 0806 (ETHER_ARP türü) içerdiğini ve toplam uzunluğun 64 bayt olduğunu söyler.
IPv4 Paketleri
Bağlantı katmanı başlığı yazdırılmıyorsa, IPv4 paketleri için zaman damgasından sonra IP yazdırılır.
-v bayrağı belirtilirse, IPv4 başlığından alınan bilgiler IP veya bağlantı katmanı başlığından sonra parantez içinde gösterilir. Bu bilgilerin genel biçimi şöyledir: tos tos, ttl ttl, id id, offset offset, flags [flags], proto proto, length length, options (options) tos, hizmet türü (type of service) alanıdır; ECN bitleri sıfır dışıysa, bunlar ECT(1), ECT(0) veya CE olarak bildirilir. ttl, yaşam süresidir (time-to-live); sıfırsa bildirilmez. id, IP kimlik (IP identification) alanıdır. offset, parça kayması (fragment offset) alanıdır; bunun parçalanmış bir veri paketinin parçası olup olmadığına bakılmaksızın yazdırılır. flags, MF ve DF bayraklarıdır; MF ayarlanmışsa + bildirilir ve F ayarlanmışsa DF bildirilir. İkisi de ayarlanmamışsa . bildirilir. proto, protokol kimliği (protocol ID) alanıdır. length, toplam uzunluk (total length) alanıdır. options, varsa IP seçenekleridir.
Ardından, TCP ve UDP paketleri için, kaynak ve hedef IP adresleri ve TCP veya UDP bağlantı noktaları (portları), her IP adresi ile karşılık gelen bağlantı noktası arasında bir nokta olacak şekilde, kaynak ve hedefi ayıran bir > işareti ile yazdırılacaktır. Diğer protokoller için adresler, kaynak ve hedefi ayıran bir > işareti ile yazdırılacaktır. Varsa daha yüksek seviyeli protokol bilgileri bundan sonra yazdırılacaktır.
Parçalanmış (fragmented) IP veri paketleri için, ilk parça daha yüksek seviyeli protokol başlığını içerir; ilk parçadan sonraki parçalar daha yüksek seviyeli protokol başlığı içermez. Parçalanma bilgisi, yukarıda açıklandığı gibi yalnızca -v bayrağıyla IP başlığı bilgilerinde yazdırılacaktır.
TCP Paketleri
(N.B.: Aşağıdaki açıklama, RFC-793'te açıklanan TCP protokolüne aşinalık olduğunu varsayar. Protokole aşina değilseniz, bu açıklama sizin için pek yararlı olmayacaktır.)
Bir TCP protokol satırının genel biçimi şöyledir:
src > dst: Flags [tcpflags], seq data-seqno, ack ackno, win window, urg urgent, options [opts], length len
Src ve dst, kaynak ve hedef IP adresleri ve bağlantı noktalarıdır (portlar). Tcpflags; S (SYN), F (FIN), P (PUSH), R (RST), U (URG), W (ECN CWR), E (ECN-Echo) veya .' (ACK) işaretlerinin bir kombinasyonudur ya da hiçbir bayrak ayarlanmamışsa none' şeklindedir. Data-seqno, bu paketteki veriler tarafından kapsanan sıra alanı (sequence space) bölümünü tanımlar (aşağıdaki örneğe bakın). Ackno, bu bağlantıda diğer yönde beklenen bir sonraki verinin sıra numarasıdır. Window, bu bağlantıda diğer yönde mevcut olan alım arabelleği alanının bayt cinsinden boyutudur. Urg, pakette `acil' (urgent) veri olduğunu belirtir. Opts, TCP seçenekleridir (örneğin, mss 1024). Len, yük (payload) verisinin uzunluğudur.
Iptype, Src, dst ve flags her zaman mevcuttur. Diğer alanlar, paketin TCP protokol başlığının içeriğine bağlıdır ve yalnızca uygun olduğunda çıktı olarak verilir.
İşte rtsg ana bilgisayarından csam ana bilgisayarına yapılan bir rlogin işleminin başlangıç bölümü. IP rtsg.1023 > csam.login: Flags [S], seq 768512:768512, win 4096, opts [mss 1024] IP csam.login > rtsg.1023: Flags [S.], seq, 947648:947648, ack 768513, win 4096, opts [mss 1024] IP rtsg.1023 > csam.login: Flags [.], ack 1, win 4096 IP rtsg.1023 > csam.login: Flags [P.], seq 1:2, ack 1, win 4096, length 1 IP csam.login > rtsg.1023: Flags [.], ack 2, win 4096 IP rtsg.1023 > csam.login: Flags [P.], seq 2:21, ack 1, win 4096, length 19 IP csam.login > rtsg.1023: Flags [P.], seq 1:2, ack 21, win 4077, length 1 IP csam.login > rtsg.1023: Flags [P.], seq 2:3, ack 21, win 4077, urg 1, length 1 IP csam.login > rtsg.1023: Flags [P.], seq 3:4, ack 21, win 4077, urg 1, length 1
İlk satır, rtsg üzerindeki TCP port 1023'ün csam üzerindeki login portuna bir paket gönderdiğini söyler. S, SYN bayrağının ayarlandığını gösterir. Paket sıra numarası (sequence number) 768512'dir ve veri içermemektedir. (Gösterim ilk:son şeklindedir, bu da ilk sıra numarasından başlayıp son sıra numarasına kadar olan ancak son sıra numarasını dahil etmeyen anlamına gelir.) Sırtta taşınan (piggy-backed) bir ACK yoktu, kullanılabilir alım penceresi (receive window) 4096 bayttı ve 1024 baytlık bir MSS talep eden bir max-segment-size seçeneği vardı.
Csam, rtsg'nin SYN'i için sırtta taşınan bir ACK içermesi dışında benzer bir paketle yanıt verir. Rtsg daha sonra csam'in SYN'ini ACK'ler (onaylar). . işareti ACK bayrağının ayarlandığını gösterir. Paket veri içermediği için veri sıra numarası veya uzunluğu yoktur. ACK sıra numarasının küçük bir tamsayı (1) olduğuna dikkat edin. tcpdump bir TCP görüşmesini (conversation) ilk kez gördüğünde, paketteki sıra numarasını yazdırır. Görüşmenin sonraki paketlerinde, mevcut paketin sıra numarası ile bu ilk sıra numarası arasındaki fark yazdırılır. Bu, ilkinden sonraki sıra numaralarının görüşmenin veri akışındaki göreceli bayt konumları olarak yorumlanabileceği anlamına gelir (her iki yönde ilk veri baytı 1 olacak şekilde). -S seçeneği bu özelliği geçersiz kılarak orijinal sıra numaralarının çıktı olarak verilmesini sağlayacaktır.
- satırda, rtsg, csam'e 19 baytlık veri gönderir (görüşmenin rtsg → csam yönündeki 2 ile 20 arasındaki baytlar). Pakette PUSH bayrağı ayarlanmıştır. 7. satırda, csam rtsg tarafından gönderilen verileri 21. bayta kadar (21 dahil değil) aldığını belirtir. Csam'in alım penceresi 19 bayt küçüldüğünden, bu verilerin çoğunun soket arabelleğinde beklediği anlaşılmaktadır. Csam ayrıca bu pakette rtsg'ye bir baytlık veri gönderir. 8. ve 9. satırlarda, csam rtsg'ye iki baytlık acil, pushed (itilmiş) veri gönderir.
Anlık görüntü (snapshot) tcpdump'ın tüm TCP başlığını yakalayamayacağı kadar küçükse, başlığın yorumlayabildiği kadarını yorumlar ve ardından geri kalanının yorumlanamadığını belirtmek için [|tcp]'' raporlar. Eğer başlık sahte (bogus) bir seçenek içeriyorsa (uzunluğu çok küçük olan veya başlığın sonunun ötesinde olan bir seçenek), tcpdump bunu [bad opt]'' (hatalı seçenek) olarak raporlar ve (nereden başladıklarını söylemek imkansız olduğundan) daha fazla seçeneği yorumlamaz. Eğer başlık uzunluğu seçeneklerin mevcut olduğunu gösteriyor ancak IP veri paketi uzunluğu seçeneklerin gerçekten orada olması için yeterince uzun değilse, tcpdump bunu ``[bad hdr length]'' (hatalı başlık uzunluğu) olarak raporlar.
Belirli bayrak kombinasyonlarına sahip TCP paketlerini yakalama (SYN-ACK, URG-ACK, vb.)
TCP başlığının kontrol bitleri bölümünde 8 bit bulunur:
CWR | ECE | URG | ACK | PSH | RST | SYN | FIN
Bir TCP bağlantısı kurmak için kullanılan paketleri izlemek istediğimizi varsayalım. TCP'nin yeni bir bağlantı başlatırken 3 aşamalı el sıkışma (3-way handshake) protokolü kullandığını hatırlayın; TCP kontrol bitlerine göre bağlantı sırası şöyledir:
- Arayan (Caller) SYN gönderir
- Alıcı (Recipient) SYN, ACK ile yanıt verir
- Arayan ACK gönderir
Şimdi yalnızca SYN biti ayarlanmış paketleri yakalamakla ilgileniyoruz (Adım 1). Adım 2'deki paketleri (SYN-ACK) değil, yalnızca düz bir ilk SYN paketini istediğimizi unutmayın. İhtiyacımız olan şey, tcpdump için doğru bir filtre ifadesidir.
Seçenekler olmadan bir TCP başlığının yapısını hatırlayalım:
0 15 31
| source port | destination port |
| sequence number |
| acknowledgment number |
| HL | rsvd |C|E|U|A|P|R|S|F| window size |
| TCP checksum | urgent pointer |
Bir TCP başlığı, seçenekler bulunmadığı sürece genellikle 20 sekizli (octet) veri tutar. Grafiğin ilk satırı 0 - 3 sekizlilerini, ikinci satırı 4 - 7 sekizlilerini vb. gösterir.
0'dan başlayarak saydığımızda, ilgili TCP kontrol bitleri 13. sekizlide yer alır:
| 0 7 | 15 | 23 | 31 |
|---|---|---|---|
| HL | rsvd | C | E |
| ---------------- | --------------- | --------------- | ---------------- |
| 13. sekizli |
13 numaralı sekizliye daha yakından bakalım:
| C |
| --------------- |
| 7 5 3 0 |
Bunlar ilgilendiğimiz TCP kontrol bitleridir. Bu sekizlideki bitleri sağdan sola 0'dan 7'ye kadar numaralandırdık, böylece PSH biti 3 numaralı bit, URG biti ise 5 numaralı bittir.
Yalnızca SYN ayarlı paketleri yakalamak istediğimizi hatırlayın. Başlığında SYN biti ayarlanmış bir TCP veri paketi ulaştığında 13. sekizliye ne olduğuna bakalım:
|C|E|U|A|P|R|S|F| |---------------|
| 0 0 0 0 0 0 1 0 |
|---|
| 7 6 5 4 3 2 1 0 |
Kontrol bitleri bölümüne baktığımızda yalnızca 1 numaralı bitin (SYN) ayarlandığını görüyoruz.
13 numaralı sekizlinin ağ baytı sırasına (network byte order) göre 8 bitlik işaretsiz bir tamsayı olduğunu varsayarsak, bu sekizlinin ikili (binary) değeri
00000010
ve ondalık (decimal) gösterimi şöyledir:
7 6 5 4 3 2 1 0 02 + 02 + 02 + 02 + 02 + 02 + 12 + 02 = 2
Neredeyse bitirdik, çünkü artık yalnızca SYN ayarlandığında, TCP başlığındaki 13. sekizlinin ağ baytı sırasına göre 8 bitlik işaretsiz bir tamsayı olarak yorumlandığında değerinin tam olarak 2 olması gerektiğini biliyoruz.
Bu ilişki şu şekilde ifade edilebilir: tcp[13] == 2
Yalnızca SYN ayarlı paketleri izlemek için bu ifadeyi tcpdump filtresi olarak kullanabiliriz: tcpdump -i xl0 tcp[13] == 2
Bu ifade "bir TCP veri paketinin 13. sekizlisinin ondalık değeri 2 olsun" der, bu da tam olarak istediğimiz şeydir.
Şimdi, SYN paketlerini yakalamamız gerektiğini ancak aynı anda ACK veya başka bir TCP kontrol bitinin ayarlanıp ayarlanmadığını önemsemediğimizi varsayalım. SYN-ACK ayarlı bir TCP veri paketi geldiğinde 13. sekizliye ne olduğuna bakalım:
|C|E|U|A|P|R|S|F| |---------------|
| 0 0 0 1 0 0 1 0 |
|---|
| 7 6 5 4 3 2 1 0 |
Şimdi 13. sekizlide 1 ve 4 numaralı bitler ayarlanmıştır. 13. sekizlinin ikili değeri
00010010
bu da ondalık olarak şuna karşılık gelir:
7 6 5 4 3 2 1 0 02 + 02 + 02 + 12 + 02 + 02 + 12 + 02 = 18
Şimdi tcpdump filtre ifadesinde doğrudan 'tcp[13] == 18' kullanamayız, çünkü bu yalnızca SYN-ACK ayarlanmış paketleri seçer, yalnızca SYN ayarlanmış olanları seçmez. SYN ayarlandığı sürece ACK veya başka herhangi bir kontrol bitinin ayarlanıp ayarlanmadığını önemsemediğimizi unutmayın.
Amacımıza ulaşmak için, SYN bitini korumak üzere 13. sekizlinin ikili değerini başka bir değerle mantıksal VE (AND) işlemine tabi tutmamız gerekir. Her durumda SYN'in ayarlanmasını istediğimizi biliyoruz, bu nedenle 13. sekizlideki değeri mantıksal olarak bir SYN'in ikili değeriyle VE işlemine tabi tutacağız:
00010010 SYN-ACK 00000010 SYN VE 00000010 (SYN istiyoruz) VE 00000010 (SYN istiyoruz)
= 00000010 = 00000010
Bu VE işleminin, ACK veya başka bir TCP kontrol bitinin ayarlanmış olup olmadığına bakılmaksızın aynı sonucu verdiğini görüyoruz. VE değerinin ondalık gösterimi ve bu işlemin sonucu 2'dir (ikili 00000010), bu nedenle SYN ayarlı paketler için aşağıdaki ilişkinin doğru olması gerektiğini biliyoruz:
( ( 13. sekizlinin değeri ) VE ( 2 ) ) == ( 2 )
Bu bizi şu tcpdump filtre ifadesine yönlendirir: tcpdump -i xl0 'tcp[13] & 2 == 2'
Bazı uzaklıklar (offsets) ve alan değerleri sayısal değerler yerine isimlerle ifade edilebilir. Örneğin tcp[13] yerine tcp[tcpflags] kullanılabilir. Aşağıdaki TCP bayrak alanı değerleri de mevcuttur: tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg.
Bu şu şekilde gösterilebilir: tcpdump -i xl0 'tcp[tcpflags] & tcp-push != 0'
Kabuktan VE ('&') özel karakterini gizlemek için ifadede tek tırnak veya ters eğik çizgi kullanmanız gerektiğini unutmayın.
UDP Paketleri
UDP biçimi bu rwho paketiyle gösterilmiştir: actinide.who > broadcast.who: udp 84 Bu, actinide ana bilgisayarındaki who portunun, internet yayın adresi olan broadcast üzerindeki who portuna bir UDP veri paketi gönderdiğini söyler. Paket 84 bayt kullanıcı verisi içermektedir.
Bazı UDP hizmetleri (kaynak veya hedef port numarasından) tanınır ve daha yüksek seviyeli protokol bilgileri yazdırılır. Özellikle, Alan Adı (Domain Name) hizmeti istekleri (RFC-1034/1035) ve NFS'ye yapılan Sun RPC çağrıları (RFC-1050).
TCP veya UDP Ad Sunucusu İstekleri
(N.B.: Aşağıdaki açıklama, RFC-1035'te açıklanan Domain Service protokolüne aşinalık olduğunu varsayar. Protokole aşina değilseniz, aşağıdaki açıklama size anlaşılmaz gelecektir.)
Ad sunucusu istekleri şu şekilde biçimlendirilir:
src > dst: id op? flags qtype qclass name (len)
h2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)
h2opolo ana bilgisayarı, helios üzerindeki alan adı sunucusundan ucbvax.berkeley.edu adı ile ilişkili bir adres kaydı (qtype=A) istedi. Sorgu kimliği (query id) 3 idi. + işareti, özyineleme isteniyor (recursion desired) bayrağının ayarlandığını gösterir. Sorgu uzunluğu, TCP veya UDP ve IP protokol başlıkları hariç 37 bayttı. Sorgu işlemi normal olan Query olduğundan op alanı atlanmıştır. op başka bir şey olsaydı, 3 ile + arasında yazdırılacaktı. Benzer şekilde, qclass normal olan C_IN idi ve atlanmıştır. Başka herhangi bir qclass, doğrudan A harfinin ardından yazdırılacaktı.
Birkaç anormallik kontrol edilir ve köşeli parantez içine alınmış ek alanlarla sonuçlanabilir: Bir sorgu bir yanıt, yetkili kayıtları (authority records) veya ek kayıtlar (additional records) bölümü içeriyorsa, ancount, nscount veya arcount değerleri, n uygun sayı olmak üzere [na]', [nn]' veya [nau]' olarak yazdırılır. Yanıt bitlerinden herhangi biri ayarlanmışsa (AA, RA veya rcode) ya da iki ve üçüncü baytlardaki sıfır olmalı' (must be zero) bitlerinden herhangi biri ayarlanmışsa, x başlık baytları iki ve üçünün onaltılık değeri olmak üzere `[b2&3=x]' yazdırılır.
TCP veya UDP Ad Sunucusu Yanıtları
Ad sunucusu yanıtları şu şekilde biçimlendirilir: src > dst: id op rcode flags a/n/au type class data (len) helios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273) helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97) İlk örnekte helios, h2opolo'dan gelen sorgu kimliği 3'e 3 yanıt kaydı (answer records), 3 ad sunucusu kaydı (name server records) ve 7 ek kayıt (additional records) ile yanıt verir. İlk yanıt kaydı A (adres) türündedir ve verisi internet adresi 128.32.137.3'tür. Yanıtın toplam boyutu, TCP veya UDP ve IP başlıkları hariç 273 bayttı. op (Query) ve yanıt kodu (NoError), A kaydının sınıfı (C_IN) gibi atlanmıştır.
İkinci örnekte helios, sorgu 2'ye hiç yanıt olmaksızın, bir ad sunucusu ve yetki kaydı olmaksızın var olmayan alan adı (NXDomain) yanıt koduyla yanıt verir. * işareti, yetkili yanıt (authoritative answer) bitinin ayarlandığını gösterir. Hiçbir yanıt olmadığından hiçbir tür, sınıf veya veri yazdırılmamıştır.
Görünebilecek diğer bayrak karakterleri -' (özyineleme mevcut [recursion available], RA, ayarlanmamış) ve |' (kırpılmış mesaj [truncated message], TC, ayarlanmış) şeklindedir. Eğer soru (question) bölümü tam olarak bir giriş içermiyorsa [nq] yazdırılır.
SMB/CIFS kod çözme
tcpdump artık UDP/137, UDP/138 ve TCP/139 üzerindeki veriler için oldukça kapsamlı SMB/CIFS/NBT kod çözme özelliklerini içeriyor. Ayrıca IPX ve NetBEUI SMB verilerinin bazı ilkel kod çözme işlemleri de yapılmaktadır.
Varsayılan olarak oldukça minimal bir kod çözme yapılır, -v kullanılırsa çok daha ayrıntılı bir kod çözme yapılır. -v ile tek bir SMB paketinin bir sayfa veya daha fazla yer kaplayabileceği konusunda uyarılmalıdır, bu nedenle -v seçeneğini yalnızca tüm karmaşık ayrıntıları gerçekten istiyorsanız kullanın.
SMB paket biçimleri ve tüm alanların ne anlama geldiği hakkında bilgi edinmek için https://download.samba.org/pub/samba/specs/ adresine ve diğer çevrimiçi kaynaklara bakın. SMB yamaları Andrew Tridgell (tridge@samba.org) tarafından yazılmıştır.
NFS İstekleri ve Yanıtları
Sun NFS (Network File System - Ağ Dosya Sistemi) istekleri ve yanıtları şu şekilde yazdırılır: src.sport > dst.nfs: NFS request xid xid len op args src.nfs > dst.dport: NFS reply xid xid reply stat len op results
sushi.1023 > wrl.nfs: NFS request xid 26377 112 readlink fh 21,24/10.73165 wrl.nfs > sushi.1023: NFS reply xid 26377 reply ok 40 readlink "../var" sushi.1022 > wrl.nfs: NFS request xid 8219 144 lookup fh 9,74/4096.6878 "xcolors" wrl.nfs > sushi.1022: NFS reply xid 8219 reply ok 128 lookup fh 9,74/4134.3150
İlk satırda, sushi ana bilgisayarı wrl'ye 26377 kimlikli (id) bir işlem (transaction) gönderir. İstek, UDP ve IP başlıkları hariç 112 bayttı. İşlem, 21,24/10.731657119 dosya tanıtıcısı (file handle - fh) üzerinde bir readlink (sembolik bağlantıyı oku) işlemiydi. (Eğer kişi şanslıysa, bu durumda olduğu gibi, dosya tanıtıcısı bir ana,ikincil [major,minor] cihaz numarası çifti ve ardından inode numarası ile nesil [generation] numarası olarak yorumlanabilir.) İkinci satırda wrl, aynı işlem kimliğiyle ve bağlantının içeriğiyle birlikte ok yanıtını verir.
Üçüncü satırda sushi, (yeni bir işlem kimliği kullanarak) wrl'den 9,74/4096.6878 dizin dosyasında xcolors adını aramasını (lookup) ister. Dördüncü satırda wrl, ilgili işlem kimliğiyle bir yanıt gönderir.
Yazdırılan verilerin işlem türüne bağlı olduğunu unutmayın. NFS protokol özellikleri ile birlikte okunursa, biçimin kendi kendini açıklayıcı olması amaçlanmıştır. Ayrıca tcpdump'ın eski sürümlerinin NFS paketlerini biraz farklı bir biçimde yazdırdığını unutmayın: paketin NFS olmayan port numarası yerine işlem kimliği (xid) yazdırılırdı.
-v (verbose) bayrağı verilirse ek bilgiler yazdırılır. Örneğin:
sushi.1023 > wrl.nfs: NFS request xid 79658 148 read fh 21,11/12.195 8192 bytes @ 24576 wrl.nfs > sushi.1023: NFS reply xid 79658 reply ok 1472 read REG 100664 ids 417/0 sz 29388
(-v ayrıca bu örnekten çıkarılmış olan IP başlığı TTL, ID, uzunluk ve parçalanma alanlarını da yazdırır.) İlk satırda sushi, wrl'den 21,11/12.195 dosyasından, 24576 bayt uzaklığından (offset) başlayarak 8192 bayt okumasını ister. Wrl ok yanıtını verir; ikinci satırda gösterilen paket yanıtın ilk parçasıdır (fragment) ve bu nedenle yalnızca 1472 bayt uzunluğundadır (diğer baytlar sonraki parçalarda gelecektir, ancak bu parçalar NFS ve hatta UDP başlıklarına sahip olmadığından kullanılan filtre ifadesine bağlı olarak yazdırılmayabilir). -v bayrağı verildiği için, (dosya verilerine ek olarak döndürülen) bazı dosya öznitelikleri yazdırılır: dosya türü (normal dosya için ``REG''), dosya modu (sekizlik [octal] sistemde), UID ve GID ve dosya boyutu.
-v bayrağı birden fazla kez verilirse daha da fazla ayrıntı yazdırılır.
NFS yanıt paketleri RPC işlemini açıkça tanımlamaz. Bunun yerine tcpdump ``son'' istekleri takip eder ve işlem kimliğini (transaction ID) kullanarak bunları yanıtlarla eşleştirir. Bir yanıt ilgili isteği yakından takip etmiyorsa ayrıştırılamayabilir.
AFS İstekleri ve Yanıtları
Transarc AFS (Andrew File System - Andrew Dosya Sistemi) istekleri ve yanıtları şu şekilde yazdırılır:
src.sport > dst.dport: rx packet-type src.sport > dst.dport: rx packet-type service call call-name args src.sport > dst.dport: rx packet-type service reply call-name args
elvis.7001 > pike.afsfs: rx data fs call rename old fid 536876964/1/1 ".newsrc.new" new fid 536876964/1/1 ".newsrc" pike.afsfs > elvis.7001: rx data fs reply rename
İlk satırda, elvis ana bilgisayarı pike'a bir RX paketi gönderir. Bu, fs (dosya sunucusu [fileserver]) hizmetine gönderilen bir RX veri paketiydi ve bir RPC çağrısının başlangıcıdır. RPC çağrısı, 536876964/1/1 eski dizin dosya kimliği ve .newsrc.new' eski dosya adı ile 536876964/1/1 yeni dizin dosya kimliği ve .newsrc' yeni dosya adı içeren bir yeniden adlandırma (rename) işlemidir. pike ana bilgisayarı, yeniden adlandırma çağrısına bir RPC yanıtıyla yanıt verir (bu işlem başarılı olmuştur çünkü bir veri paketidir ve durdurma [abort] paketi değildir).
Genel olarak, tüm AFS RPC'leri en azından RPC çağrı adıyla çözümlenir. Çoğu AFS RPC'sinin en azından bazı bağımsız değişkenlerinin kodu çözülür (genellikle ilginçliğin bazı tanımlarına göre yalnızca `ilginç' bağımsız değişkenler).
Biçimin kendi kendini tanımlayıcı olması amaçlanmıştır, ancak AFS ve RX'in çalışma şekline aşina olmayan kişiler için muhtemelen yararlı olmayacaktır.
-v (verbose) bayrağı iki kez verilirse, onay (acknowledgement) paketleri ve RX çağrı kimliği (RX call ID), çağrı numarası, sıra numarası, seri numarası ve RX paket bayrakları gibi ek başlık bilgileri yazdırılır.
-v bayrağı iki kez verilirse, RX çağrı kimliği, seri numarası ve RX paket bayrakları gibi ek bilgiler yazdırılır. MTU anlaşma bilgisi de RX ack paketlerinden yazdırılır.
-v bayrağı üç kez verilirse, güvenlik indeksi (security index) ve hizmet kimliği (service id) yazdırılır.
Ubik beacon paketleri hariç olmak üzere, durdurma (abort) paketleri için hata kodları yazdırılır (çünkü durdurma paketleri Ubik protokolü için bir evet oyunu belirtmek üzere kullanılır).
AFS yanıt paketleri RPC işlemini açıkça tanımlamaz. Bunun yerine tcpdump ``son'' istekleri takip eder ve çağrı numarasını ve hizmet kimliğini kullanarak bunları yanıtlarla eşleştirir. Bir yanıt ilgili isteği yakından takip etmiyorsa ayrıştırılamayabilir.
KIP AppleTalk (UDP içinde DDP)
UDP veri paketlerinde kapsüllenmiş AppleTalk DDP paketleri kapsülden çıkarılır ve DDP paketleri olarak dökümlenir (yani tüm UDP başlık bilgileri atılır). AppleTalk ağ ve düğüm (node) numaralarını isimlere dönüştürmek için /etc/atalk.names dosyası kullanılır. Bu dosyadaki satırlar şu biçimdedir:
numara isim
1.254 ether
16.1 icsd-net
1.254.110 ace
İlk iki satır AppleTalk ağlarının isimlerini verir. Üçüncü satır belirli bir ana bilgisayarın adını verir (bir ana bilgisayar, numaradaki 3. sekizli ile bir ağdan ayırt edilir - bir ağ numarası iki sekizliye ve bir ana bilgisayar numarası üç sekizliye sahip olmalıdır). Numara ve isim beyaz boşlukla (boşluklar veya sekmeler) ayrılmalıdır. /etc/atalk.names dosyası boş satırlar veya yorum satırları (fırlatma işareti # ile başlayan satırlar) içerebilir.
AppleTalk adresleri şu biçimde yazdırılır: net.host.port
144.1.209.2 > icsd-net.112.220
office.2 > icsd-net.112.220
jssmag.149.235 > icsd-net.2
(Eğer /etc/atalk.names dosyası mevcut değilse veya bazı AppleTalk ana bilgisayar/ağ numaraları için bir giriş içermiyorsa, adresler sayısal biçimde yazdırılır.) İlk örnekte, ağ 144.1 düğüm 209 üzerindeki NBP (DDP portu 2), ağ icsd düğüm 112'nin 220 numaralı portunda dinleyen her ne ise ona gönderim yapıyor. İkinci satır, kaynak düğümün tam adının (office) bilinmesi dışında aynıdır. Üçüncü satır, ağ jssmag düğüm 149 üzerindeki 235 numaralı porttan, icsd-net NBP portundaki yayına (broadcast) yapılan bir gönderimdir (yayın adresinin (255), ana bilgisayar numarası olmayan bir ağ adıyla gösterildiğine dikkat edin - bu nedenle /etc/atalk.names dosyasında düğüm adlarını ve ağ adlarını ayrı tutmak iyi bir fikirdir).
NBP (name binding protocol [isim bağlama protokolü]) ve ATP (AppleTalk transaction protocol [AppleTalk işlem protokolü]) paketlerinin içerikleri yorumlanır. Diğer protokoller yalnızca protokol adını (veya protokol için kayıtlı bir ad yoksa numarasını) ve paket boyutunu dökümler.
NBP paketleri aşağıdaki örneklerdeki gibi biçimlendirilir: icsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@" jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@" 250 techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186 İlk satır, ağ icsd ana bilgisayarı 112 tarafından gönderilen ve ağ jssmag üzerinde yayınlanan laserwriter'lar için bir isim arama (lookup) isteğidir. Arama için nbp kimliği (id) 190'dır. İkinci satır, jssmag.209 ana bilgisayarından gelen bu isteğe verilen bir yanıtı gösterir (aynı kimliğe sahip olduğuna dikkat edin) ve port 250 üzerinde kayıtlı "RM1140" adında bir laserwriter kaynağına sahip olduğunu söyler. Üçüncü satır, techpit ana bilgisayarının port 186 üzerinde "techpit" kayıtlı laserwriter'a sahip olduğunu söyleyen aynı isteğe verilen başka bir yanıttır.
ATP packet formatting is demonstrated by the following example: jssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001 helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp12266:7 (512) 0xae040000 jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001 helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001 jssmag.209.133 > helios.132: atp-req 12267<0-7> 0xae030002
Jssmag.209, helios ana bilgisayarıyla 8 pakete kadar talep ederek (<0-7>') 12266 kimlikli işlemi başlatır. Satırın sonundaki onaltılık sayı, istekteki userdata` (kullanıcı verisi) alanının değeridir.
Helios, 8 adet 512 baytlık paketle yanıt verir. İşlem kimliğini takip eden :rakam, işlemdeki paket sıra numarasını verir ve parantez içindeki sayı, ATP başlığı hariç paketteki veri miktarıdır. Paket 7 üzerindeki * işareti, EOM bitinin ayarlandığını gösterir.
Jssmag.209 daha sonra 3 ve 5 numaralı paketlerin yeniden iletilmesini talep eder. Helios bunları yeniden gönderir, ardından jssmag.209 işlemi serbest bırakır (release). Son olarak jssmag.209 bir sonraki isteği başlatır. İstek üzerindeki * işareti XO (exactly once [tam olarak bir kez]) değerinin ayarlanmadığını gösterir.
Paket Meta Veri Filtresi
Paketleri, paket hakkındaki tanımlayıcı bilgilere (arayüz, işlem, hizmet türü veya yön) göre eşleştirmek için paket meta veri filtresi ifadesini kullanın.
Bunun yalnızca Pcap-ng dosya biçimindeki yakalama dosyalarıyla veya PKTAP veri bağlantısı türünü destekleyen arayüzlerle anlamlı olduğunu unutmayın.
Söz dizimi aşağıdaki işleçleri (operatörleri) destekler:
or mantıksal veya (or) and mantıksal ve (and) not değilleme (negation) (...) alt ifadeleri gruplamak için = eşittir != eşit değildir || mantıksal veya (alternatif) && mantıksal ve (alternatif) ! değilleme (alternatif)
Söz dizimi, paket meta veri içeriklerinden hangisinin karşılaştırılacağını belirtmek için aşağıdaki anahtar kelimeleri destekler:
if arayüz adı (interface name) proc işlem adı (process name) pid işlem kimliği (process ID) svc hizmet sınıfı (service class) dir yön (direction) eproc etkin işlem adı (effective process name) epid etkin işlem kimliği (effective process ID) dlt veri bağlantısı türü (data link type)
Örnegin, "nc" adlı işlem tarafından en0 arayüzünden "gönderilen" paketleri veya en0 arayüzünde olmayan gelen paketleri filtrelemek için:
-Q "( if=en0 and proc =nc ) || (if != en0 and dir=in)"
-Q seçeneği tek bir dize parametresi aldığından, karmaşık bir paket meta verisi filtresi ifadesinin tırnak içine alınması gerektiğini unutmayın.
Aynı şekilde boşluk içeren dizelerin de tırnak içine alınması gerekir. Örneğin:
-Q "proc = 'Some App'"
Birim numarası atlanırsa, arayüz adları kısmi dizeye göre filtrelenebilir. Örneğin, adı "en" ile başlayan arayüzleri dahil etmek için aşağıdakileri kullanın:
-Q "if = en"
Veri bağlantısı türü, sayı ile veya aşağıdaki sembolik adlardan biriyle belirtilebilir:
NULL EN10MB PPP RAW ether (EN10MB ile aynı)
Ayrıca Bakınız
stty(1), pcap(3PCAP), bpf(4), nit(4P), pcap-savefile(5), pcap-filter(7), pcap-tstamp(7)
https://www.iana.org/assignments/media-types/application/vnd.tcpdump.pcap
Yazarlar
Orijinal yazarlar:
Van Jacobson, Craig Leres ve Steven McCanne, hepsi Lawrence Berkeley National Laboratory, University of California, Berkeley, CA bünyesindendir.
Şu anda tcpdump.org tarafından sürdürülmektedir.
Mevcut sürüm HTTPS üzerinden edinilebilir:
Orijinal dağıtım anonim ftp üzerinden edinilebilir:
ftp://ftp.ee.lbl.gov/old/tcpdump.tar.Z
IPv6/IPsec desteği WIDE/KAME projesi tarafından eklenmiştir. Bu program, belirli yapılandırmalar altında OpenSSL/LibreSSL kullanır.
Hatalar
Bir güvenlik sorununu bildirmek için lütfen security@tcpdump.org adresine e-posta gönderin.
Hataları ve diğer sorunları bildirmek, yamalarla katkıda bulunmak, bir özellik talep etmek, genel geri bildirim sağlamak vb. için lütfen tcpdump kaynak ağacı kökündeki CONTRIBUTING dosyasına bakın.
NIT kendi giden trafiğinizi izlemenize izin vermez, BPF ise izin verir. İkincisini kullanmanızı öneririz.
2.0[.x] çekirdeklere sahip Linux sistemlerinde:
loopback cihazındaki paketler iki kez görülecektir;
paket filtreleme çekirdekte yapılamaz, bu nedenle kullanıcı modunda filtrelenmek üzere tüm paketlerin çekirdekten kopyalanması gerekir;
bir paketin yalnızca anlık görüntü uzunluğundaki kısmı değil, tamamı çekirdekten kopyalanacaktır (2.0[.x] paket yakalama mekanizması, kullanıcı alanına bir paketin yalnızca bir kısmını kopyalaması istendiğinde, paketin gerçek uzunluğunu rapor etmeyecektir; bu, çoğu IP paketinin tcpdump'tan hata almasına neden olur);
bazı PPP cihazlarında yakalama düzgün çalışmayacaktır.
Çekirdeğinizi 2.2 veya daha yeni bir sürüme yükseltmenizi öneririz.
IP parçalarını (fragments) yeniden birleştirmek veya en azından daha yüksek seviyeli protokol için doğru uzunluğu hesaplamak için bazı girişimlerde bulunulmalıdır.
Ad sunucusu ters sorguları (inverse queries) doğru şekilde dökümlenmez: yanıt bölümündeki gerçek sorgu yerine (boş) soru bölümü yazdırılır. Bazıları ters sorguların kendilerinin bir hata olduğuna inanır ve tcpdump yerine bunları üreten programı düzeltmeyi tercih eder.
Yaz saati uygulaması değişikliğinden geçen bir paket izleme (packet trace) eğri zaman damgaları verecektir (zaman değişikliği yoksayılır).
Token Ring başlıklarındaki alanlar dışındaki alanlardaki filtre ifadeleri, kaynak yönlendirmeli (source-routed) Token Ring paketlerini doğru şekilde işlemeyecektir.
802.11 başlıklarındaki alanlar dışındaki alanlardaki filtre ifadeleri, hem To DS hem de From DS ayarlanmış 802.11 veri paketlerini doğru şekilde işlemeyecektir.
ip6 proto başlık zincirini takip etmelidir, ancak şu anda bunu yapmamaktadır. Bu davranış için ip6 protochain sağlanmıştır.
tcp[0] gibi taşıma katmanı başlıklarına karşı aritmetik ifadeler, IPv6 paketlerine karşı çalışmaz. Yalnızca IPv4 paketlerine bakar.