Tcpdump - Linux Komutu - Unix Komutu

ADI

tcpdump - bir ağdaki trafiği boşalt

ÖZET

tcpdump [ -adeflnNOpqRStuvxX ] [ -c sayısı ]

[ -C file_size ] [ -F dosya ]

[ -i arayüzü ] [ -m modülü ] [ -r dosya ]

[ -s snaplen ] [ -T tipi ] [ -U kullanıcı ] [ -w dosya ]

[ -E algo: sır ] [ ifade ]

AÇIKLAMA

Tcpdump , boole ifadesine uyan bir ağ arabirimindeki paketlerin başlıklarını yazdırır. Ayrıca -w bayrağı ile de çalışabilir, bu da paket verilerini daha sonra analiz için bir dosyaya ve / veya -r bayrağıyla paketlemekten ziyade kayıtlı bir paket dosyasından okumasına neden olur. bir ağ arayüzünden. Her durumda, yalnızca ifadeyle eşleşen paketler tcpdump tarafından işlenir.

Tcpdump , -c bayrağıyla çalışmazsa, bir SIGINT sinyaliyle (örneğin, kesme karakterinizi, tipik olarak C kontrolünü yazarak) veya bir SIGTERM sinyali ile kesilene kadar (genellikle öldürme ile oluşturulan) paketleri yakalamaya devam eder. (1) komut); -c bayrağı ile çalıştırılırsa, bir SIGINT veya SIGTERM sinyali ile kesilene veya belirtilen sayıda paket işlenene kadar paketleri yakalar.

Tcpdump , yakalama paketlerini bitirdiğinde, aşağıdakileri rapor edecektir:

"Filtreden alınan" paketler (bunun anlamı tcpdump'ı çalıştırdığınız işletim sistemine ve muhtemelen işletim sisteminin yapılandırılma biçimine bağlıdır) komut satırında bir filtre belirtildiyse bazı işletim sistemlerinde sayılır. paketler, filtre ifadesiyle eşleşip eşleşmediğine bakılmaksızın ve diğer işletim sistemlerinde, yalnızca filtre ifadesi ile eşleşen ve tcpdump tarafından işlenen paketleri sayar);

"kernel tarafından düşürülmüş" paketleri (bu, tampon alan yetersizliğinden dolayı, düşürülmüş paketlerin sayısı, işletim sistemindeki bilgi uygulamalarına rapor verirse, tcpdump'ın çalıştığı OS'deki paket yakalama mekanizması tarafından düşürülmüştür; değilse, 0 olarak rapor edilecektir.

Çoğu BSD gibi SIGINFO sinyalini destekleyen platformlarda, bir SIGINFO sinyali aldığında bu sayıları rapor edecektir (örneğin, `` status '' karakterinizi tipik olarak -T karakterinizi yazarak oluşturulmuştur ve paketleri yakalamaya devam edecektir. .

Ağ arayüzünden paket okumak, özel ayrıcalıklara sahip olmanızı gerektirebilir:

NIT veya BPF ile SunOS 3.x veya 4.x altında:

/ Dev / nit veya / dev / bpf * ' ye okuma erişimi olmalıdır.

DLPI ile Solaris altında:

Ağ sözde aygıtına okuma / yazma erişiminiz olmalıdır, örneğin / dev / le . Bununla birlikte, Solaris'in en azından bazı sürümlerinde, bu, tcpdump'ın rasgele modda çekim yapmasına izin vermek için yeterli değildir; Solaris'in bu sürümlerinde, root olmanız gerekir veya rasgele modda yakalamak için tcpdump'ın root olarak ayarlanmış olması gerekir. Çok sayıda (belki de tüm) arayüzlerde, karışık modda çekim yapmazsanız, giden paketleri göremeyeceğinizi unutmayın, bu nedenle, karışık modda yapılmayan bir yakalama çok kullanışlı olmayabilir.

DLPI ile HP-UX altında:

Kök olmalı veya tcpdump root olarak ayarlanmış olmalıdır.

IRIX altında snoop ile:

Kök olmalı veya tcpdump root olarak ayarlanmış olmalıdır.

Linux altında:

Kök olmalı veya tcpdump root olarak ayarlanmış olmalıdır.

Ultrix ve Dijital UNIX / Tru64 UNIX altında:

Herhangi bir kullanıcı tcpdump ile ağ trafiğini yakalayabilir. Ancak, kullanıcı (süper kullanıcı bile değil), süper kullanıcı, pfconfig (8) kullanarak kullanıcı arayüzünde rasgele mod çalıştırmayı etkinleştirmedikçe ve kullanıcı (süper kullanıcı bile değil) bir arabirimde karışık modda çekim yapamaz. ) süper kullanıcı Pfconfig kullanarak bu arayüzde kopya-tüm-mod işlemini etkinleştirmediği sürece, bir arabirim tarafından makine tarafından alınan ya da gönderilen tek noktaya yayın trafiğini yakalayabilir, böylece bir arabirimde yararlı paket yakalama muhtemelen ya karışık mod ya da kopyalama gerektirir -all modu işlemi veya her iki işletim modu, bu arayüzde etkinleştirilebilir.

BSD kapsamında:

/ Dev / bpf * ' ye okuma erişimine sahip olmanız gerekir.

Kaydedilmiş bir paket dosyasını okumak, özel ayrıcalıklara ihtiyaç duymaz.

SEÇENEKLER

-a

Ağ ve yayın adreslerini isimlere dönüştürmeyi deneyin.

-c

Sayım paketlerini aldıktan sonra çıkın.

-C

Bir ham paketi bir savefile'a yazmadan önce, dosyanın şu anda file_size'den büyük olup olmadığını kontrol edin ve eğer mevcutsa, mevcut savefile'ı kapatın ve yeni bir tane açın. İlk kayıt dosyasından sonra Savefiles, -w bayrağı ile belirtilen isme sahip olacak, bundan sonra bir sayı olacak, 2'den başlayıp, yukarı doğru devam edecektir. Dosya_adı birimleri milyonlarca bayttır (1.000.000 bayt, 1.048.576 bayt değil).

-d

Derlenmiş paket eşleştirme kodunu standart olarak okunabilir bir formda dökün ve durdurun.

-DD

Paket uyumlu kodu C program parçası olarak dökün.

-DDD

Paket eşleme kodunu ondalık sayılar olarak dök (önce bir sayıyla).

-e

Her bir döküm hattındaki bağlantı düzeyi üstbilgisini yazdırın.

-E

IPsec ESP paketlerinin şifresini çözmek için algo: secret kullanın. Algoritmalar des-cbc , 3des-cbc , blowfish-cbc , rc3-cbc , cast128-cbc veya hiç olabilir . Varsayılan des-cbc'dir . Paketlerin şifresini çözme yeteneği, yalnızca tcpdump'un şifreleme etkinken derlenmiş olması durumunda mevcuttur. ESP gizli anahtarı için ascii metni gizli. Bu anda keyfi ikili değer alamayız. Bu seçenek RFC1827 ESP değil RFC2406 ESP'yi varsayar. Bu seçenek sadece hata ayıklama amaçlıdır ve bu seçeneğin gerçekten 'gizli' anahtarla kullanılması önerilmez. IPsec gizli anahtarını komut satırına sunarak, diğer kullanıcılara ps (1) ve diğer durumlar aracılığıyla görünür hale getirebilirsiniz.

-f

'Yabancı' internet adreslerini sayısal olarak sembolik değil de yazdırın (bu seçenek Sun'ın yp sunucusundaki ciddi beyin hasarına neden olmak için tasarlanmıştır - genellikle yerel olmayan internet numaralarını çevirmek zorunda kalıyor).

-F

Dosyayı filtre ifadesi için girdi olarak kullanın. Komut satırında verilen ek bir ifade göz ardı edilir.

-ben

Arayüzde dinle. Belirtilmemişse, tcpdump en düşük numaralı, yapılandırılmış arabirim (geri döngü hariç) için sistem arabirimi listesini arar. En eski eşleşmeyi seçerek bağlar kırılır.

2.2 veya üstü çekirdeklere sahip Linux sistemlerinde, `` any '' arabirim argümanı, tüm arabirimlerden paketleri yakalamak için kullanılabilir. `` Herhangi bir '' cihazdaki yakalamaların rasgele modda yapılmayacağını unutmayın.

-l

Stdout çizgisi arabelleğe alın. Verileri yakalarken görmek istiyorsanız kullanışlıdır. Örneğin,
tcpdump -l | tee dat '' veya tcpdump -l> dat & tail -f dat ''.

-m

SMI MIB modül tanımlarını dosya modülünden yükleyin. Bu seçenek birkaç MIB modülünü tcpdump'a yüklemek için birkaç kez kullanılabilir.

-n

Ana bilgisayar adreslerini isimlere dönüştürmeyin. Bu, DNS aramalarından kaçınmak için kullanılabilir.

-NN

Protokol ve port numaralarını vb. Isimlere dönüştürmeyin.

-N

Ana bilgisayar adlarının alan adı kalifikasyonunu yazdırmayın. Örneğin, bu bayrağı verirseniz tcpdump `` nic.ddn.mil '' yerine `` nic '' yazdıracaktır.

-O

Paket uyumlu kod eniyileyicisini çalıştırmayın. Bu, yalnızca optimize edicideki bir hatadan şüpheleniyorsanız yararlıdır.

-p

Arayüzü karışık modda bırakmayın. Arayüzün başka bir nedenden ötürü karışık modda olabileceğini unutmayın; bu nedenle, `-p ', ether host {local-hw-addr} veya ether broadcast' için bir kısaltma olarak kullanılamaz.

-q

Hızlı (sessiz?) Çıkış. Daha az protokol bilgisi yazdırın, böylece çıkış hatları daha kısadır.

-R

ESP / AH paketlerinin eski belirtime (RFC1825'den RFC1829'a) dayanacağını varsayın. Belirtilirse, tcpdump tekrar önleme alanını yazdırmayacaktır. ESP / AH belirtiminde protokol sürümü alanı olmadığından, tcpdump ESP / AH protokolünün sürümünü çıkartamaz.

-r

Paketleri dosyadan okuyun (-w seçeneği ile oluşturulmuştur). Dosya "` - "ise standart girdi kullanılır.

-S

Göreli, TCP sıra numaraları yerine mutlak yazdır.

-s

Her paketden snarf snaplen baytları varsayılan olarak 68'in yerine ( SunOS'un NIT'si ile minimumda 96'dır). IP, ICMP, TCP ve UDP için 68 bayt yeterlidir, ancak ad sunucusu ve NFS paketlerinden protokol bilgilerini kesebilir (aşağıya bakınız). Sınırlı bir anlık görüntü nedeniyle kesilmiş paketler, çıktıda `` [| proto ] '', protokolün kesilmesinin yapıldığı protokol seviyesinin adıdır. Daha büyük fotoğraflar çekmenin, hem paketleri işlemek için gereken süreyi artırdığını hem de paket tamponlama miktarını etkin bir şekilde düşürdüğünü unutmayın. Bu, paketlerin kaybolmasına neden olabilir. İlgilendiğiniz protokol bilgilerini yakalayacak en küçük sayıya dikkat etmelisiniz . 0'a ayarlanan ayar, tüm paketleri yakalamak için gereken uzunluğu kullanmak anlamına gelir.

-T

Belirtilen türün yorumlanması için " ifade " ile seçilen paketleri zorlayın. Şu anda bilinen türleri cnfp (Cisco NetFlow protokolü), rpc (Uzaktan Prosedür Çağrısı), rtp (Gerçek Zamanlı Uygulamalar protokolü), rtcp (Gerçek Zamanlı Uygulamalar kontrol protokolü), snmp (Basit Ağ Yönetim Protokolü), vat (Görsel Ses Aracı) ) ve wb (dağıtılmış Beyaz Tahta).

-t

Her döküm hattında bir zaman damgası basmayın .

-TT

Her döküm hattında biçimlendirilmemiş bir zaman damgası yazdırın.

-U

Kök ayrıcalıklarını düşürür ve kullanıcı kimliğini kullanıcı ve grup kimliğine birincil kullanıcı grubuna değiştirir.

Not! Red Hat Linux, başka bir şey belirtilmemişse, kullanıcı `` pcap '' için ayrıcalıkları otomatik olarak bırakır.

-ttt

Her bir döküm hattındaki mevcut ve önceki satır arasında bir delta (mikro saniye cinsinden) basın.

-tttt

Her döküm hattında tarihe göre devam eden varsayılan formatta bir zaman damgası yazdırın.

-u

Kodlanmamış NFS tanıtıcılarını yazdır.

-v

(Biraz daha fazla) ayrıntılı çıktı. Örneğin, bir IP paketindeki yaşam süresi, tanımlama, toplam uzunluk ve seçenekler yazdırılır. Ayrıca IP ve ICMP üstbilgi sağlama toplamını doğrulamak gibi ek paket bütünlüğü denetimleri de sağlar.

vv

Daha ayrıntılı çıktılar. Örneğin, NFS yanıt paketlerinden ek alanlar yazdırılır ve SMB paketleri tamamen kodu çözülür.

-vvv

Daha ayrıntılı çıktılar. Örneğin, telnet SB ... SE seçenekleri tam olarak basılmıştır. -X telnet seçenekleri ile onaltılık olarak basılır.

-w

Ham paketleri, ayrıştırmak ve yazdırmak yerine dosyaya yazın. Daha sonra -r seçeneği ile basılabilirler. Dosya "` - "ise standart çıktı kullanılır.

-x

Her bir paketi (bağlantı düzeyi üstbilgisi hariç) onaltılık olarak yazdırın. Tüm paketin ya da snaplen bayttan daha küçük olanı basılacaktır. Bu, tüm bağlantı katmanı paketidir, bu nedenle, alt katman paketinin gerekli dolgudan daha kısa olması durumunda, dolgu katmanları (örneğin Ethernet) için dolgu baytları da basılacaktır.

-X

Onaltılı yazdırırken, ascii de yazdırın. Böylece -x de ayarlanırsa, paket hex / ascii olarak yazdırılır. Bu yeni protokolleri analiz etmek için çok kullanışlıdır. -x de ayarlanmamış olsa bile, bazı paketlerin bazı bölümleri hex / ascii olarak basılabilir.

ifade

hangi paketlerin boşaltılacağını seçer. Herhangi bir ifade verilmezse, ağdaki tüm paketler boşaltılacaktır. Aksi takdirde, yalnızca ifadenin "true" olduğu paketler boşaltılacaktır.

İfade bir veya daha fazla ilkelden oluşur . İlkel maddeler genellikle bir veya daha fazla niteleyicinin önündeki bir kimlikten (isim veya numara) oluşur. Üç farklı niteleyici türü vardır:

tip

niteleyiciler, adın veya numaranın ne tür bir şey ifade ettiğini söyler. Olası türler ana bilgisayar , ve bağlantı noktasıdır . Örneğin, "ana bilgisayar foo", "net 128.3", "bağlantı noktası 20". Tip niteleyici yoksa, ana bilgisayar varsayılır.

dir

niteleyiciler, ve / veya kimlik için belirli bir aktarım yönü belirtir. Olası yönler şunlardır: src , dst , src veya dst ve src ve dst . Örneğin, 'src foo', `dst net 128.3 ',` src veya dst port ftp-data'. Dir niteleyici yoksa , src veya dst varsayılır. 'Null' link katmanları için (yani, slip gibi nokta protokolleri), gelen ve giden niteleyiciler istenen bir yönü belirtmek için kullanılabilir.

proto

Eleme uzmanları maçı belirli bir protokole göre kısıtlar. Olası protoslar şunlardır: eter , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp ve udp . Örneğin, ether src foo ', arp net 128.3', tcp port 21 '. Proto niteleyici yoksa, türle tutarlı olan tüm protokoller kabul edilir. Örneğin, "src foo", (ip veya arp veya rarp) src foo anlamına gelir (ikincisi yasal sözdizimi hariç), `net bar 'anlamına gelir (ip veya arp veya rarp) net bar' ve" port 53 "anlamına gelir `(tcp veya udp) bağlantı noktası 53 '.

[`fddi 'aslında' eter 'için bir takma addır; ayrıştırıcı, aynı şekilde, "belirtilen ağ arabiriminde kullanılan veri bağlantısı düzeyi" anlamında davranır. '' FDDI üstbilgileri, Ethernet benzeri kaynak ve hedef adresleri içerir ve genellikle Ethernet benzeri paket türleri içerir, bu nedenle bu FDDI alanlarına filtre uygulayabilirsiniz. Benzer Ethernet alanlarındaki gibi. FDDI üstbilgileri ayrıca başka alanlar da içerir, ancak bunları açıkça bir filtre ifadesinde isimlendiremezsiniz.

Benzer şekilde, "tr", "eter" için bir takma addır; Önceki paragrafın FDDI başlıklarına ilişkin ifadeleri de Token Ring başlıklarına uygulanır.]

Yukarıdakilere ek olarak, deseni izlemeyen bazı özel "ilkel" anahtar kelimeler vardır: ağ geçidi , yayın , daha az , daha büyük ve aritmetik ifadeler. Bunların hepsi aşağıda açıklanmıştır.

Daha karmaşık filtre ifadeleri, kelimeler kullanılarak ve ilkelleri birleştirerek değil , oluşturularak oluşturulur. Örneğin, "host foo ve ftp portu değil ve ftp-data portu değil". Yazmayı kaydetmek için, aynı niteleyici listeleri ihmal edilebilir. Örneğin, tcp dst bağlantı noktası ftp veya ftp-data veya domain ',' tcp dst port ftp veya tcp dst port ftp-data veya tcp dst port domain 'ile tamamen aynıdır.

İzin verilen ilkeller şunlardır:

dst ana makine ana bilgisayarı

Paketin IPv4 / v6 hedef alanı, bir adres veya ad olabilir, ana olduğu doğrudur.

src ana bilgisayar ana bilgisayarı

Paketin IPv4 / v6 kaynak alanı ana ise true.

ana makine ana bilgisayarı

Paketin IPv4 / v6 kaynağı veya hedefi ana ise doğrudur. Yukarıdaki ana bilgisayar ifadelerinden herhangi biri aşağıdaki gibi anahtar kelimeler, ip , arp , rarp veya ip6 ile eklenebilir :

ip ana bilgisayarı

buna eşdeğerdir:

ether proto \ ip ve ana makine ana bilgisayarı

Ana bilgisayar birden çok IP adresine sahip bir isim ise, her adres bir eşleşme için kontrol edilir.

eter dst ehost

Ethernet hedef adresi e-posta ise doğrudur . Ehost , / etc / ethers veya bir sayıdan bir isim olabilir (sayısal biçim için bkz. Eterler (3N)).

ether src ehost

Ethernet kaynağı adresi e-posta ise doğrudur .

ether ev sahibi ehost

Eternet kaynağı veya hedef adresi e-posta ise doğrudur .

ağ geçidi ana bilgisayarı

Paket, ana bilgisayarı bir ağ geçidi olarak kullandıysa doğrudur. Yani, ethernet kaynağı veya hedef adresi konakçıydı, fakat ne IP kaynağı ne de IP hedefi konakçı değildi . Ana bilgisayar bir ad olmalıdır ve hem makinenin ana makine adı-IP adresi çözümleme mekanizmaları (ana bilgisayar adı dosyası, DNS, NIS, vb.) Hem de makinenin ana bilgisayar adı-Ethernet-adres çözümlemesiyle bulunmalıdır. mekanizma (/ etc / eterler, vb). (Eşdeğer bir ifade

ether ana bilgisayar barındırma sunucusu ve ana makine barındırıcısı değil

host / ehost için isimler veya sayılar ile kullanılabilir.) Bu sözdizimi şu anda IPv6 etkin yapılandırmasında çalışmaz.

dst net net

Paketin IPv4 / v6 hedef adresinin ağın ağ numarası varsa doğrudur. Net , / etc / networks veya bir ağ numarasından bir isim olabilir ( ayrıntılar için ağlara (4) bakınız).

src net net

Paketin IPv4 / v6 kaynak adresinin ağın bir ağ numarası varsa doğrudur.

net net

Paketin IPv4 / v6 kaynağının veya hedef adresinin ağın ağ numarası varsa doğrudur.

net net maskesi netmask

IP adresi, net ağ maskesiyle net eşleşiyorsa doğrudur. Src veya dst ile nitelendirilebilir. Bu sözdiziminin IPv6 net için geçerli olmadığını unutmayın.

net net / len

IPv4 / v6 adresi, ağ maskesi len biti ile net eşleşiyorsa doğrudur. Src veya dst ile nitelendirilebilir.

dst portu portu

Paket ip / tcp, ip / udp, ip6 / tcp veya ip6 / udp ise ve bağlantı noktasının bir hedef bağlantı noktası değerine sahipse doğrudur. Bağlantı noktası / etc / services içinde kullanılan bir numara veya ad olabilir (bkz. Tcp (4P) ve udp (4P)). Bir isim kullanılıyorsa, hem port numarası hem de protokol kontrol edilir. Bir numara veya belirsiz ad kullanılırsa, yalnızca port numarası kontrol edilir (ör. Dst port 513 , tcp / login trafiğini ve udp / who trafiğini yazdıracaktır ve port alanı , tcp / domain ve udp / domain trafiğini yazdıracaktır).

src bağlantı noktası noktası

Paketin bir bağlantı noktası bağlantı noktası değeri varsa doğrudur.

liman limanı

Paketin kaynağı veya hedef bağlantı noktası bağlantı noktasıysa doğrudur. Yukarıdaki port ifadelerinden herhangi biri aşağıdaki gibi anahtar kelimeler, tcp veya udp ile eklenebilir:

tcp src bağlantı noktası noktası

Sadece kaynak portu port olan tcp paketleriyle eşleşir.

daha az uzunluk

Paket, uzunluktan küçük veya eşit bir uzunluğa sahipse doğrudur. Bu, buna eşdeğerdir:

len <= uzunluk .

daha büyük uzunluk

Paket, uzunluktan büyük veya eşit büyükse doğrudur. Bu, buna eşdeğerdir:

len> = uzunluk .

ip protokolü protokolü

Paket, protokol tipi protokolün bir IP paketi ( ip (4P)) ise doğrudur. Protokol , icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp veya tcp adlarından bir veya bir tanesi olabilir . Tcp , udp ve icmp tanımlayıcılarının da anahtar sözcük olduğunu ve C-kabuğunda \\ olan ters eğik çizgi (\) ile kaçması gerektiğini unutmayın. Bu ilkelin protokol başlık zincirini takip etmediğini unutmayın.

ip6 protokolü

Paket, protokol tipi protokolün bir IPv6 paketiyse doğrudur. Bu ilkelin protokol başlık zincirini takip etmediğini unutmayın.

ip6 protochain protokolü

Paket IPv6 paket ise ve protokol üstbilgi zincirinde tür protokolü ile protokol üstbilgisini içerirse doğrudur. Örneğin,

ip6 protochain 6

protokol üstbilgi zincirindeki TCP protokolü üstbilgisi ile herhangi bir IPv6 paketiyle eşleşir. Paket, örneğin, IPv6 üstbilgisi ve TCP üstbilgisi arasında kimlik doğrulama üstbilgisi, yönlendirme üstbilgisi veya atlamadan atlama seçeneği üstbilgisini içerebilir. Bu ilkel tarafından yayılan BPF kodu karmaşıktır ve tcpdump'ta BPF optimizer kodu ile optimize edilemez, bu yüzden bu biraz yavaş olabilir.

ip protochain protokolü

IP6 protochain protokolüne eşdeğerdir , ancak bu IPv4 içindir.

eter yayını

Paket bir ethernet yayın paketi ise doğrudur. Ether anahtar kelimesi isteğe bağlıdır.

ip yayını

Paket bir IP yayın paketi ise doğrudur. Hem sıfırlar hem de all-olanlar yayın sözleşmelerini kontrol eder ve yerel alt ağ maskesini arar.

eter multicast

Paket bir ethernet çok noktaya yayın paketi ise doğrudur. Ether anahtar kelimesi isteğe bağlıdır. Bu ether [0] & 1! = 0 'için kısa yoldur.

ip çok noktaya yayın

Paket bir IP çok noktaya yayın paketi ise doğrudur.

ip6 çok noktaya yayın

Paket bir IPv6 çok noktaya yayın paketi ise doğrudur.

ether proto protokolü

Paket, eter tipi protokoldeyse doğrudur. Protokol , ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx veya netbeui adlarından biri veya biri olabilir . Bu tanımlayıcıların ayrıca anahtar kelimeler olduğunu ve ters eğik çizgi (\) ile atlanması gerektiğini unutmayın.

[Bu protokollerin çoğu için , FDDI (örneğin, ' fddi protokol arp ') ve Token Ring (örneğin, ' tr protokol arp ') durumunda, protokol tanımlama 802.2 Mantıksal Bağlantı Kontrolü (LLC) üstbilgisi gelen genellikle FDDI veya Token Ring başlığının üstüne yerleştirilir.

FdDI veya Token Ring üzerinde çoğu protokol tanımlayıcısı için filtreleme yaparken, tcpdump , kapsüllenmiş Ethernet için, 0x000000'ün bir Kuruluş Birimi Tanımlayıcısı (OUI) ile SNAP biçiminde bir LLC üstbilgisinin yalnızca protokol kimliği alanını denetler; paketin 0x000000 bir OUI ile SNAP biçiminde olup olmadığını denetlemez.

Bunun istisnası iso olup, DSAP (Hedef Hizmet Erişim Noktası) ve LLC üstbilgisinin SSAP (Kaynak Hizmet Erişimi Noktası) alanlarını denetler. Bu site, LLC üstbilgisinin DSAP'sini ve atalk'ı denetler. bir OAPI 0x080007 ve Appletalk etype ile SNAP biçimli bir paket için denetler.

Ethernet durumunda, tcpdump bu protokollerin çoğunda Ethernet tipi alanını kontrol eder; istisnalar iso , sap ve netbeui'dir , bunun için bir 802.3 çerçevesini kontrol eder ve daha sonra LLC üstbilgisini FDDI ve Token Ring için olduğu gibi kontrol eder, atalk , her ikisi de bir Ethernet çerçevesindeki Appletalk etype için kontrol eder ve SNAP formatındaki paket, FDDI ve Token Ring için olduğu gibi, aarp , bir Ethernet çerçevesi veya bir OUI 0x000000 ile bir 802.2 SNAP çerçeve içinde Appletalk ARP etype için denetler ve ipx , burada IPX etype için denetler nerede bir Ethernet çerçevesi, LLC üstbilgisindeki IPX DSAP, IPX'in LLC başlık kapsüllemesi olmayan 802.3 ve bir SNAP çerçevesindeki IPX etype.

decnet src sunucusu

DECNET kaynak adresi host ise , `` 10.123 '' formunun bir adresi veya bir DECNET ana bilgisayar adı olabilir. [DECNET ana bilgisayar adı desteği yalnızca DECNET'i çalıştırmak için yapılandırılan Ultrix sistemlerinde kullanılabilir.]

decnet dst host

DECNET hedef adresi ana ise doğrudur.

Decnet ana bilgisayar ana bilgisayarı

DECNET kaynağı veya hedef adresi barındırılıyorsa doğrudur.

ip , ip6 , arp , rarp , atalk , aarp , decnet , iso , stp , ipx , netbeui

Için kısaltmalar:

ether proto p

p , yukarıdaki protokollerden biridir.

lat , moprc , mopdl

Için kısaltmalar:

ether proto p

p , yukarıdaki protokollerden biridir. Tcpdump'un şu anda bu protokolleri nasıl ayrıştıracağını bilmediğini unutmayın.

vlan [vlan_id]

Paket bir IEEE 802.1Q VLAN paketi ise doğrudur. [Vlan_id] belirtilmişse, yalnızca paket belirtilen vlan_id değerine sahiptir . İfadede karşılaşılan ilk vlan anahtar kelimesinin, paketin bir VLAN paketi olduğu varsayımıyla ifade geri kalanı için kod çözme sapmalarını değiştirdiğini unutmayın.

tcp , udp , icmp

Için kısaltmalar:

ip proto p veya ip6 proto p

p , yukarıdaki protokollerden biridir.

iso protokolü protokolü

Paket, protokol tipi bir protokolün OSI paketiyse doğrudur. Protokol , clnp , esis veya isis adlarından biri veya biri olabilir.

clnp , esis , isis

Için kısaltmalar:

iso proto p

p , yukarıdaki protokollerden biridir. Tcpdump'un bu protokolleri ayrıştırmada eksik bir iş yaptığını unutmayın.

expr relop expr

İlişkinin geçerli olması durumunda, relopun >, <,> =, <=, =,! = Ve expr ise, tamsayı sabitlerinden oluşan (standart C sözdiziminde ifade edilen) aritmetik bir ifadedir, normal ikili işleçler [+ , -, *, /, &, |], bir uzunluk operatörü ve özel paket veri erişimcileri. Paket içindeki verilere erişmek için aşağıdaki sözdizimini kullanın:

proto [ expr : boyut ]

Proto , eter, fddi, tr, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp veya ip6'dan biridir ve dizin işlemi için protokol katmanını gösterir. ( ether, fddi, tr, ppp, kayma ve bağlantı, hepsi bağlantı katmanına başvurur.) tcp, udp ve diğer üst katman protokol türlerinin sadece IPv6 için değil, IPv6 için geçerli olduğunu unutmayın (bu, gelecekte düzeltilecektir). Belirtilen protokol katmanına göre bayt ofseti, expr . Boyut isteğe bağlıdır ve ilgi alanındaki bayt sayısını gösterir; Bir, iki veya dört olabilir ve varsayılanı bir olabilir. Len anahtar kelimesi ile gösterilen uzunluk operatörü, paketin uzunluğunu verir.

Örneğin, ` eter [0] & 1! = 0 'tüm çok noktaya yayın trafiğini yakalar. ` Ip [0] & 0xf! = 5 'ifadesi tüm IP paketlerini seçeneklerle yakalar. ' Ip [6: 2] & 0x1fff = 0 ' ifadesi, yalnızca parçalanmamış datagramları ve parçalanmış datagramların sıfırını yakalar. Bu kontrol, tcp ve udp dizin işlemlerine örtülü olarak uygulanır. Örneğin, tcp [0] her zaman TCP başlığının ilk baytı anlamına gelir ve hiçbir zaman araya giren bir parçanın ilk baytı anlamına gelir.

Bazı ofsetler ve alan değerleri sayısal değerler yerine isimler olarak ifade edilebilir. Aşağıdaki protokol üstbilgi alanı ofsetleri kullanılabilir: icmptype (ICMP tip alanı), icmpcode (ICMP kod alanı) ve tcpflags (TCP bayrakları alanı).

Aşağıdaki ICMP türü alan değerleri kullanılabilir: icmp-echoreply , icmp-unreach , icmp-sourcequench , icmp-yönlendirme , icmp-echo , icmp-routeradvert , icmp-routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp -tstampreply , icmp-ireq , icmp-ireqreply , icmp-maskreq , icmp-maskreply .

Aşağıdaki TCP bayrakları alan değerleri mevcuttur: tcp-fin , tcp-syn , tcp-rst , tcp-itme , tcp-itme , tcp-ack , tcp-urg .

Primitifler aşağıdakiler kullanılarak birleştirilebilir:

Bir parantez içinde ilkel ve işleçler grubu (parantezler Kabuk için özeldir ve çıkarılmalıdır).

Olumsuzluk (` ! 'Veya` değil ').

Birleştirme (` && 'veya` ve ').

Alternatif (` || 'veya` veya ').

Olumsuzluk en yüksek önceliğe sahiptir. Alternasyon ve birleştirme, eşit önceliğe sahiptir ve soldan sağa ilişkilendirilmiştir. Açık ve tokenlerin, yan yana değil, artık birleştirme için gerekli olduğunu unutmayın.

Bir tanımlayıcı anahtar kelime olmadan verilirse, en yeni anahtar kelime kabul edilir. Örneğin,

vs vs vs değil

İçin Kısa

vs ve host as değil

hangi ile karıştırılmamalıdır

değil (host vs veya ace)

İfade argümanları tcpdump'a tek bir argüman veya çoklu argümanlar olarak (hangisi daha uygunsa) geçirilebilir. Genel olarak, ifade, Kabuk meta karakterlerini içeriyorsa, onu tek tırnaklı bir argüman olarak iletmek daha kolaydır. Birden çok argüman ayrıştırılmadan önce boşluklarla birleştirilir.

ÖRNEKLER

Gün batımından gelen veya çıkış yapan tüm paketleri yazdırmak için:

tcpdump ana bilgisayarı

Helios ve hot veya ace arasındaki trafiği yazdırmak için:

tcpdump ana bilgisayarı helios ve \ (hot or ace \)

Tüm IP paketlerini ace ve helios dışındaki herhangi bir ana bilgisayar arasında yazdırmak için:

tcpdump ip host as ve helios değil

Berkeley'deki yerel ana bilgisayarlar ve ana bilgisayarlar arasındaki tüm trafiği yazdırmak için:

tcpdump net ucb-ether

Tüm ftp trafiğini internet ağ geçidi snup üzerinden yazdırmak için: (parantezin kabukların yorumlanmasını (mis-) parantezin engellenmesi için ifadenin belirtildiğini unutmayın):

tcpdump 'ağ geçidi snup ve (ftp veya ftp-veri portu)'

Trafiği kaynağından almak için ne yerel kaynaklardan ne de yerel sunucular için (eğer başka bir ağa geçerseniz, bu şeyler asla yerel ağınızın üzerine gelmemelidir) yazdırmak için.

tcpdump ip ve net localnet değil

Yerel olmayan bir ana bilgisayarı içeren her bir TCP sohbetinin başlangıç ​​ve bitiş paketlerini (SYN ve FIN paketleri) yazdırmak için.

tcpdump 'tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 değil ve src ve dst net localnet '

Ağ geçidi snup yoluyla gönderilen 576 bayttan daha uzun IP paketlerini yazdırmak için:

tcpdump 'ağ geçidi snup ve ip [2: 2]> 576'

Ethernet yayını veya çok noktaya yayın yoluyla gönderilmemiş IP yayını veya çok noktaya yayın paketlerini yazdırmak için:

tcpdump 'eter [0] & 1 = 0 ve ip [16]> = 224'

Yankı istekleri / yanıtları olmayan tüm ICMP paketlerini yazdırmak için (örneğin, ping paketleri değil):

tcpdump 'icmp [icmptype]! = icmp-eko ve icmp [icmptype]! = icmp-echoreply'

ÇIKIŞ BİÇİMİ

Tcpdump çıkışı protokole bağlıdır. Aşağıda kısa bir açıklama ve çoğu biçimin örnekleri verilmiştir.

Bağlantı Seviyesi Başlıkları

Eğer '-e' seçeneği verilirse, link seviyesi başlığı yazdırılır. Etiletlerde, kaynak ve hedef adresler, protokol ve paket uzunluğu yazdırılır.

FDDI ağlarında, '-e' seçeneği tcpdump 'çerçeve denetimi' alanını, kaynak ve hedef adreslerini ve paket uzunluğunu yazdırmasına neden olur. ('Frame control' alanı paketin geri kalanının yorumlanmasını yönetir. Normal paketler (IP datagramları içerenler gibi) 0 ile 7 arasında bir öncelik değeri olan "async" paketleridir, örneğin " async4 ". paketlerin bir 802.2 Mantıksal Bağlantı Denetimi (LLC) paketi içerdiği varsayılır; bir CD veriyolu veya sözde bir SNAP paketi değilse, LLC başlığı yazdırılır.

Token Ring ağlarında, '-e' seçeneği tcpdump 'access control' ve `frame control 'alanlarını, kaynak ve hedef adreslerini ve paket uzunluğunu yazdırmasına neden olur. FDDI ağlarında olduğu gibi, paketlerin bir LLC paketi içerdiği varsayılmaktadır. '-e' seçeneğinin belirtilip belirtilmediğine bakılmaksızın, kaynak yönlendirmeli paketler için kaynak yönlendirme bilgisi yazdırılır.

(Not: Aşağıdaki açıklama RFC-1144'te açıklanan SLIP sıkıştırma algoritması ile aşinalık olduğunu varsayar.)

SLIP bağlantılarında, bir yön göstergesi (gelen için `` I '', giden için `` O '', paket tipi ve sıkıştırma bilgileri yazdırılır. Paket tipi önce basılır. Üç tip ip , utcp ve ctcp'dir . IP paketleri için başka bağlantı bilgisi basılmaz. TCP paketleri için, bağlantı tanımlayıcısı türün ardından 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ğ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 (acil işaretçi), W (pencere), A (ack), S (sıra numarası) ve I (paket ID), ardından bir delta (+ n veya -n) veya yeni bir değerle gösterilir. (= n). Son olarak, paketdeki ve sıkıştırılmış başlık uzunluğundaki veri miktarı yazdırılır.

Örneğin, aşağıdaki satır, örtülü bir bağlantı tanımlayıcısı olan bir giden sıkıştırılmış TCP paketini göstermektedir; ack 6, sıra numarası 49 ve paket kimliği 6 ile değişti; 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 çıkışı, istek türünü ve argümanlarını gösterir. Biçimin kendini açıklayıcı olması amaçlanmıştır. Burada bir rlogin başlangıcından host rtsg'den host csam'a alınan kısa bir örnek:

arp kim-csam söylemek rtsg arp cevap csam olduğunu-at CSAM

İlk satır, rtsg'nin internet host csam'in ethernet adresini soran bir arp paketi gönderdiğini söylüyor. Csam, ethernet adresiyle cevap verir (bu örnekte, ethernet adresleri büyük harf ve büyük harfli internet adresleridir).

Eğer tcpdump -n yapsaydık bu daha az gereksiz olurdu:

128.3.254.6 'dan 128.3.254.68 arp cevabı 128.3.254.6 olan at-02: 07: 01: 00: 01: c4

Eğer tcpdump -e yapmış olsaydık, ilk paketin yayınlandığı ve ikincinin noktadan noktaya olduğu gerçeği görünür olurdu:

RTSG Yayını 0806 64: arp kim-csam söyle rtsg CSAM RTSG 0806 64: arp cevap csam is-at CSAM

İlk paket için bu, ethernet kaynak adresinin RTSG olduğunu, hedefin ethernet yayın adresi olduğunu, hex 0806 (tip ETHER_ARP) içeren tip alanında ve toplam uzunluğun 64 bayt olduğunu söylüyor.

TCP Paketleri

(NB: Aşağıdaki açıklama RFC-793'te açıklanan TCP protokolüne aşinalık olduğunu varsayar. Protokole aşina değilseniz, ne bu açıklama ne de tcpdump sizin için çok fazla kullanılmayacaktır.)

Bir tcp protokol hattının genel biçimi:

src> dst: bayraklar veri-seqno ack pencere acil seçenekler

Src ve dst kaynak ve hedef IP adresleri ve bağlantı noktalarıdır. Bayraklar , S (SYN), F (FIN), P (PUSH) veya R (RST) veya tek bir `. (bayrak yok). Data-seqno , bu paketteki veriler tarafından kapsanan dizi uzayının bölümünü açıklar (aşağıdaki örneğe bakınız). Ack , bu bağlantıdaki diğer yönün beklenen veri sıra numarasıdır. Pencere , bu bağlantıda diğer yöne sahip alma arabelleği boşluğunun bayt sayısıdır. Urg , pakette "acil" verilerin olduğunu gösterir. Seçenekler , köşeli parantez içine alınmış tcp seçenekleridir (ör. ).

Src, dst ve bayraklar her zaman mevcuttur. Diğer alanlar paketin tcp protokolü başlığının içeriğine bağlıdır ve sadece uygunsa çıkar.

Burada bir rloginin host rtsg'den host csam'a açılmasıdır .

rtsg.1023> csam.login: S 768512: 768512 (0) win 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 win 4096 rtsg.1023> csam. oturum aç: . ack 1 win 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 kazanır 4096 csam.login> rtsg.1023:. ack 2 win 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 kazanır 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 kazanır 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 kazanır 4077 urg 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 kazanır 4077 urg 1

İlk satır, rtsg üzerindeki tcp port 1023'ün csam'da port girişine bir paket gönderdiğini söylüyor. S , SYN bayrağının ayarlandığını gösterir. Paket sıra numarası 768512 idi ve hiçbir veri içermiyordu. (Notasyon, "first: last (nbytes)" dır), bu, `nihaî sıra sayıları, nbytes baytı olan, kullanıcı verisi de dahil olmak üzere, sonuncu sayıları ifade eder.) Piggy destekli ack yoktur, kullanılabilir alma penceresi 4096 bayttır ve 1024 baytlık bir mss isteyen bir maksimum bölüm boyutu seçeneği vardı.

Csam, rtsg'nin SYN'si için bir domuz destekli acki içermemesi dışında benzer bir paketle cevap verir. Rtsg daha sonra csam'ın SYN'si. `. hiçbir bayrak ayarlanmadığı anlamına gelir. Paket veri içermediğinden veri dizisi numarası yoktur. Ack sıra numarasının küçük bir tam sayı olduğunu unutmayın (1). Tcpdump ilk kez bir tcp `sohbeti 'görür, sıra numarasını paketden basar. Konuşmanın sonraki paketlerinde, geçerli paketin sıra numarası ile bu başlangıç ​​sıra numarası arasındaki fark yazdırılır. Bu, ilkinden sonraki sıra numaralarının, konuşmanın veri akışında göreli bayt konumları olarak yorumlanabileceği anlamına gelir (ilk veri baytı her bir yön "1" dir). `-S 'bu özelliği geçersiz kılacak ve orijinal sıra numaralarının çıkmasına neden olacaktır.

6. satırda, rtsg, csam 19 byte'lık veri gönderir (konuşmanın rtsg -> csam tarafında 2'den 20'ye kadar bayt). PUSH bayrağı pakette ayarlanır. 7. satırda, csam, rtsg tarafından gönderilen, ancak bayt 21 içermeyen veri aldığını söyler. Bu verinin çoğu, csamın alma penceresi 19 bayt daha küçük hale geldiğinden beri soket tamponunda oturuyor. Csam ayrıca bu pakette bir bayt veriyi rtsg'ye gönderir. 8. ve 9. satırlarda, csam iki baytlık acil, itilmiş veriyi rtsg'ye gönderir.

Anlık görüntü tcpdump'ın tam TCP başlığını yakalayamadığı kadar küçükse, üstbilgiyi olabildiğince fazla yorumluyor ve daha sonra "` | tcp ] '' kalanını yorumlamak için yorumlanamadı. Başlık, sahte bir seçenek içeriyorsa (biri çok küçük veya başlığın sonuna kadar olan bir uzunluğa sahipse), tcpdump bunu `` [ bad opt ] 'olarak bildirir ve başka seçenekleri yorumlamaz (çünkü söylemesi imkansızdır). nereden başlıyorlar. Başlık uzunluğunun seçenekleri olduğunu gösterirse, ancak IP datagram uzunluğu gerçekte orada bulunacak seçenekler için yeterince uzun değilse, tcpdump bunu `` [ bad hdr length ] '' olarak bildirir.

Belirli bayrak kombinasyonları ile TCP paketlerinin yakalanması (SYN-ACK, URG-ACK, vb.)

TCP başlığının kontrol bitleri bölümünde 8 bit vardır:

CWR | ECE | URG | ACK | PSH | RST | SYN | FIN

TCP bağlantısı kurmak için kullanılan paketleri izlemek istediğimizi varsayalım. TCP'nin yeni bir bağlantı başlattığında 3 yönlü bir el sıkışma protokolü kullandığını hatırlayın; TCP kontrol bitlerine ilişkin bağlantı sırası

1) Arayan SYN gönderir

2) Alıcı SYN, ACK ile yanıt verir

3) Arayan ACK gönderir

Şimdi sadece SYN bit setine sahip olan paketlerin yakalanması ile ilgileniyoruz (1. Adım). Adım 2'den (SYN-ACK), sadece başlangıçtaki bir SYN'den paket istemediğimizi unutmayın. İhtiyacımız olan şey, tcpdump için doğru bir filtre ifadesidir.

Bir TCP üstbilgisinin yapısını seçenekler olmadan geri çağırın:

0 15 31 ----------------------------------------------- ------------------ | kaynak portu | hedef bağlantı noktası | -------------------------------------------------- --------------- | sıra numarası | -------------------------------------------------- --------------- | alındı ​​numarası | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | pencere boyutu | -------------------------------------------------- --------------- | TCP sağlama toplamı | acil işaretçi | -------------------------------------------------- ---------------

Bir TCP başlığı genellikle seçenekler mevcut değilse, 20 veri kümesini içerir. Grafiğin ilk satırı 0 - 3 oktetlerini içerir, ikinci satır ise 4 - 7 vb oktetleri gösterir.

0 ile saymaya başlayan, ilgili TCP kontrol bitleri sekizlide bulunur:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | pencere boyutu | ---------------- | --------------- | --------------- | - --------------- | | 13. sekizli | | |

Octet no'ya daha yakından bakalım. 13:

| | | --------------- | | Cı | P | u | A | P | R | S | K | | --------------- | 7 5 3 0 |

Bunlar ilgilenilen TCP kontrol bitleridir. 0'dan 7'ye kadar sağdan sola, bu sekizlide bitleri numaralandırdık, bu yüzden PSR biti bit sayısı 3, URG biti ise 5'tir.

Sadece SYN seti ile paket yakalamak istediğimizi hatırlayın. Bir TCP datagramının kendi başlığında ayarlanmış SYN bitine ulaşması durumunda sekizli 13'e ne olacağını görelim:

| Cı | P | u | A | P | R | S | K | | --------------- | 0 0 0 0 0 0 1 0 | | --------------- | 7 6 5 4 3 2 1 0 |

Kontrol bitlerine baktığımızda sadece 1 numaralı bitin (SYN) ayarlandığını görüyoruz.

Okunur sayı 13'ün ağ bayt sırasına göre 8 bit işaretsiz bir tamsayı olduğunu varsayarsak, bu sekizlikin ikili değeri

00000010

ve ondalık temsili

7 6 5 4 3 2 1 0 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 = 2

Neredeyse bitti, çünkü şimdi sadece SYN ayarlanmışsa, TCP baytındaki 13. sekizli değerinin, ağ bayt sıralamasında 8 bit işaretsiz bir tamsayı olarak yorumlandığında, tam olarak 2 olması gerektiğini biliyoruz.

Bu ilişki şöyle ifade edilebilir:

tcp [13] == 2

Bu ifadeyi sadece SYN setine sahip paketleri izlemek için tcpdump için filtre olarak kullanabiliriz:

tcpdump -i xl0 tcp [13] == 2

İfade, "bir TCP datagramının 13 nüshasının ondalık değer 2'ye sahip olmasına izin verin", yani tam olarak istediğimiz şeydir.

Şimdi, SYN paketlerini yakalamamız gerektiğini varsayalım, fakat ACK veya başka bir TCP kontrol bitinin aynı anda ayarlanmış olması umrumda değil. SYN-ACK ayarlı bir TCP datagramı geldiğinde sekizli 13'e ne olduğunu görelim:

| Cı | P | u | A | P | R | S | K | | --------------- | 0 0 0 1 0 0 1 0 | | --------------- | 7 6 5 4 3 2 1 0 |

Şimdi 1 ve 4 bitleri 13. sekizlide ayarlanmıştır. Oktet 13'ün ikili değeri


00010010

ondalık olarak çevirir

7 6 5 4 3 2 1 0 0 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 = 18

Şimdi tcpdump filtre ifadesinde 'tcp [13] == 18' seçeneğini kullanamayız, çünkü yalnızca SYN-ACK setine sahip olan paketleri seçer, ancak sadece SYN setine sahip olanları seçemezdik. ACK veya SYN ayarlandığı sürece başka bir kontrol bitinin ayarlanıp ayarlanmadığını umduğumuzdan emin olun.

Amacımıza ulaşmak için, SYN bitini korumak için oktet 13'ün ikili değeri ile mantıksal olarak başka bir değere ihtiyacımız var. SYN'nin her durumda ayarlanmasını istediğimizi biliyoruz, bu nedenle mantıksal olarak VE 13 nolu sayıdaki SYN'nin ikili değeriyle değeri hesaplayacağız:

00010010 SYN-ACK 00000010 SYN VE 00000010 (SYN'yi istiyoruz) VE 00000010 (SYN'yi istiyoruz) -------- -------- = 00000010 = 00000010

Bu AND işleminin ACK veya başka bir TCP kontrol bitinin ayarlanıp ayarlanmadığına bakılmaksızın aynı sonucu verdiğini görüyoruz. AND değerinin ondalık gösterimi ve bu işlemin sonucu 2'dir (binary 00000010), bu yüzden SYN'li paketler için aşağıdaki ilişkinin doğru olması gerektiğini biliyoruz:

((oktet 13'ün değeri) VE (2)) == (2)

Bu bize tcpdump filtre ifadesine işaret ediyor

tcpdump -i xl0 'tcp [13] & 2 == 2'

Kabuktan AND ('&') özel karakterini gizlemek için ifadede tek tırnak veya ters eğik çizgi kullanmanız gerektiğini unutmayın.

UDP Paketleri

UDP formatı bu rwho paketiyle gösterilir:

actinide.who> broadcast.who: udp 84

Bu, ev sahibi actinide üzerinde, ana bilgisayar yayınında Internet yayın adresi olan bir udp datagramını gönderen portun olduğunu söyler. Paket, 84 bayt kullanıcı verisi içeriyordu.

Bazı UDP hizmetleri (kaynak veya hedef port numarasından) ve yazdırılan daha yüksek seviye protokol bilgisinden tanınır. Özellikle, Etki Alanı Adı hizmeti istekleri (RFC-1034/1035) ve Sun RPC (RFC-1050) NFS'ye çağırır.

UDP İsim Sunucusu İstekleri

(NB: Aşağıdaki açıklama, RFC-1035'te açıklanan Etki Alanı Hizmeti protokolüne aşinalık olduğunu varsayar. Eğer protokol hakkında bilgi sahibi değilseniz, aşağıdaki açıklama yunanca yazılacak gibi görünecektir.)

Ad sunucusu istekleri şu şekilde biçimlendirilir:

src> dst: id op? bayraklar qtype qclass name (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

Ana bilgisayar h2opolo , alan sunucusuna helb'ler üzerinde, ucbvax.berkeley.edu adıyla ilişkili bir adres kaydı (qtype = A) sordu. Sorgu kimliği "3" idi. `+ ', Istenen bayrağın ayarlandığı özyineyi gösterir. UDP ve IP protokol başlıklarını içermeyen sorgu uzunluğu 37 bayttır. Sorgu işlemi normal olanıydı, Sorgu , yani op alanı atlandı. Eğer op başka bir şey olsaydı, “3” ile “+” arasında basılmış olurdu. Benzer şekilde, qclass normal olan C_IN ve ihmal edildi. Herhangi bir diğer qclass, A'dan hemen sonra basılacaktır.

Birkaç anormallik kontrol edilir ve köşeli parantez içinde ek alanlarla sonuçlanabilir: Eğer bir sorgu bir cevap içeriyorsa, otorite kayıtları veya ek kayıtlar bölümü varsa, ancount , nscount veya arcount [ n a] 'olarak yazdırılır, [ n n ] 'veya `[ n au]' n , n uygun sayıdır . Yanıt bitlerinden herhangi biri (AA, RA veya rcode) veya "sıfır olmalıdır" ifadelerinden herhangi biri bittiğinde, bayt iki ve üç bayt olarak ayarlanır, [[b2 & 3 = x ] 'yazdırılır; burada x , hex değerinin başlık baytı iki ve üç.

UDP İsim Sunucusu Yanıtları

Ad sunucusu yanıtları şu şekilde biçimlendirilir:

src> dst: id op rcode bayrakları a / n / au türü sınıf verileri (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 , 3 cevap kaydı, 3 ad sunucu kaydı ve 7 ek kayıt ile h2opolo'dan sorgulama kimliğine 3 yanıt verir. İlk cevap kaydı A tipi (adres) ve verileri internet adresi 128.32.137.3'tür. Yanıtın toplam boyutu UDP ve IP üstbilgileri hariç 273 bayttır. Op (Query) ve yanıt kodu (NoError) A kaydının sınıfı (C_IN) olduğu gibi ihmal edildi.

İkinci örnekte, helios , sorgu 2'ye, yanıtsız, bir ad sunucusu ve yetki kaydı olmaksızın, varolan bir etki alanı (NXDomain) yanıt koduyla yanıt verir. `* ', Yetkili yanıt bitinin ayarlandığını gösterir. Cevap bulunmadığından tip, sınıf veya veri basılmadı.

Görünebilecek diğer bayrak karakterleri `- '(yineleme kullanılabilir, RA, ayarlanmamıştır) ve` | (kesilmiş mesaj, TC, ayarlanmış). 'Soru' bölümü tam olarak bir giriş içermiyorsa, `[ n q] 'yazdırılır.

Ad sunucusu isteklerinin ve yanıtlarının büyük olma eğiliminde olduğunu ve varsayılan 68 baytlık yakalamanın, yazdırılacak paketi yeterince yakalayamayacağını unutmayın. Ad sunucusu trafiğini ciddi bir şekilde araştırmanız gerekiyorsa, snap'ı artırmak için -s işaretini kullanın. ` -s 128 'benim için iyi çalıştı.

SMB / CIFS kod çözme

tcpdump artık UDP / 137, UDP / 138 ve TCP / 139 verileri için oldukça kapsamlı SMB / CIFS / NBT kod çözme içeriyor. IPX ve NetBEUI SMB verilerinin bazı ilkel kod çözme işlemleri de yapılmıştır.

Varsayılan olarak, oldukça az bir kod çözme yapılır, -v kullanılırsa çok daha ayrıntılı bir kod çözme yapılır. Tek bir SMB paketinin bir sayfa veya daha fazla sürebildiği konusunda uyarın, bu nedenle tüm gory detaylarını gerçekten istiyorsanız sadece -v kullanın.

Unicode dizeleri içeren SMB oturumlarının kodunu çözüyorsanız, USE_UNICODE ortam değişkenini 1 olarak ayarlamak isteyebilirsiniz. Unicode dizgilerini otomatik olarak algılayan bir yama memnuniyetle karşılanacaktır.

SMB paket formatları ve tüm te alanlarının anlamları için www.cifs.org ya da favori samba.org ayna sitenizdeki pub / samba / specs / dizini hakkında bilgi almak için. SMB yamaları Andrew Tridgell (tridge@samba.org) tarafından yazılmıştır.

NFS İstekleri ve Yanıtları

Sun NFS (Ağ Dosya Sistemi) istekleri ve cevapları aşağıdaki gibi yazdırılır:

src.xid> dst.tr: dst.xid: cevap durumu nabzını göster sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165 wrl.nfs> sushi.6709: yanıt tamam 40 readlink "../var" sushi.201b> wrl.nfs: 144 arama fh 9,74 / 4096.6878 "xcolors" wrl.nfs> sushi.201b: cevap tamam 128 arama fh 9,74 / 4134.3150

Birinci satırda, ana bilgisayar suşi , 6709 kimlikli bir işlem gönderir (src ana bilgisayarını izleyen numara, kaynak bağlantı noktası değil , bir işlem kimliğidir). İstek UDP ve IP üstbilgileri hariç 112 bayt oldu. İşlem, dosya tanıtıcısı ( fh ) 21,24 / 10.731657119'da bir readlink (read symbolic link) idi. (Bu durumda, biri gibi şanslıysa, dosya tanıtıcısı, büyük, küçük bir aygıt numarası çifti olarak yorumlanabilir, ardından inode numarası ve üretim numarası izlenebilir .) Wrl , bağlantı içeriğiyle "tamam" yanıtını verir.

Üçüncü satırda, suşi 9,74 / 4096.6878 dizin dosyasında ` xcolors 'ismini aramak için wrl sorar. Yazdırılan verinin işlem türüne bağlı olduğunu unutmayın. Biçim, bir NFS protokolü belirtimiyle birlikte okunduğunda, kendi kendini açıklayıcı olması amaçlanmıştır.

-v (verbose) bayrağı verilirse, ek bilgi yazdırılır. Örneğin:

sushi.1372a> wrl.nfs: 148 read fh 21,11 / 12.195 8192 bytes @ 24576 wrl.nfs> sushi.1372a: cevap ok 1472 okuma REG 100664 ids 417/0 sz 29388

(-v, ayrıca, bu örnekten çıkarılmış IP başlık TTL, ID, uzunluk ve parçalanma alanlarını da yazdırır.) İlk satırda, sushi , bayt ofsetinde 21,11 / 12.195 dosyadan 8192 bayt okumasını ister. 24576. Wrl cevapları 'ok'; ikinci satırda gösterilen paket, yanıtın ilk fragmanıdır ve dolayısıyla yalnızca 1472 bayt uzunluğundadır (diğer baytlar sonraki parçalarda izleyecektir, ancak bu parçaların NFS veya hatta UDP yok ve bu yüzden yazdırılmayabilir. kullanılan filtre ifadesine bağlı olarak). -v bayrağı verildiğinden, dosya özniteliklerinin bazıları (dosya verilerine ek olarak iade edilir) yazdırılır: dosya türü (normal dosya için `` REG '', dosya modu (sekizli olarak), kullanıcı ve gid ve dosya boyutu.

-v bayrağı bir defadan fazla verilirse, daha fazla ayrıntı basılır.

NFS isteklerinin çok büyük olduğunu ve çıtçıt artırılmadıkça ayrıntıların çoğunun basılmayacağını unutmayın . NFS trafiğini izlemek için ` -s 192 'kullanmayı deneyin.

NFS yanıt paketleri, RPC işlemini açıkça belirtmez. Bunun yerine, tcpdump `` son '' taleplerini takip eder ve bunları işlem kimliğini kullanarak cevaplarla eşleştirir. Bir cevap ilgili talebi yakından takip etmezse, parsable olmayabilir.

AFS İstekleri ve Cevapları

Transarc AFS (Andrew Dosya Sistemi) istekleri ve cevapları aşağıdaki gibi yazdırılır:

src.sport> dst.dport: rx paket türü src.sport> dst.dport: rx paket tipi hizmet çağrısı çağrı adı src.sport> dst.dport: rx paket tipi hizmet yanıtı çağrı adı adı elvis. 7001> pike.afsfs: rx data fs çağrısı eski fid 536876964/1/1 ".newsrc.new" yeni fid 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx veri fs yanıtı yeniden adlandır

İlk satırda, host elvis, pike için bir RX paketi gönderir. Bu, fs (dosya sunucusu) hizmetine bir RX veri paketidir ve bir RPC çağrısının başlangıcıdır. RPC çağrısı, 536876964/1/1 eski dizin dosyası kimliği ve `.newsrc.new 'eski bir dosya adıyla ve 536876964/1/1 yeni bir dizin dosyası kimliği ve yeni bir dosya adıyla yeniden adlandırıldı. newsrc'. Ev sahibi pike, yeniden adlandırılan aramaya bir RPC yanıtı ile yanıt verir (başarılı oldu, çünkü bir veri paketi ve bir iptal paket değildi).

Genel olarak, tüm AFS RPC'leri en azından RPC çağrı adı ile çözülür. Çoğu AFS RPC'si en azından çözülen argümanlardan bazılarına sahiptir (genellikle sadece ilginç olan 'ilginç' argümanlar, ilginç bazı tanımları için).

Biçimin kendi kendini tanımlaması amaçlanmıştır, ancak AFS ve RX'in çalışmalarına aşina olmayan kişiler için muhtemelen yararlı olmayacaktır.

-v (ayrıntılı) bayrağı iki kez verilirse, RX çağrı kimliği, çağrı numarası, sıra numarası, seri numarası ve RX paket bayrakları gibi onaylama paketleri ve 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 görüşme bilgileri ayrıca RX ack paketlerinden de basılmaktadır.

-v bayrağı üç kez verilirse, güvenlik dizini ve hizmet kimliği yazdırılır.

Ubik işaret paketleri haricinde, hata kodları iptal paketleri için yazdırılır (çünkü iptal paketleri Ubik protokolü için evet oyu olarak kullanılır).

AFS isteklerinin çok büyük olduğunu ve çıtçıt artırılmadıkça argümanların çoğunun basılmayacağını unutmayın . AFS trafiğini izlemek için ` -s 256 'kullanmayı deneyin.

AFS yanıt paketleri, RPC işlemini açıkça tanımlamaz. Bunun yerine, tcpdump `` son '' taleplerini takip eder ve onları, çağrı numarası ve servis kimliğini kullanarak cevaplarla eşleştirir. Bir cevap ilgili talebi yakından takip etmezse, parsable olmayabilir.

KIP Appletalk (UDP'de DDP)

UDP datagramlarında kapsanan Appletalk DDP paketleri de-kapsüllenmiş ve DDP paketleri olarak dökülmüştür (yani, tüm UDP başlık bilgileri atılmıştır). /etc/atalk.names dosyası, appletalk ağı ve düğüm sayılarını isimlere çevirmek için kullanılır. Bu dosyadaki satırlarda biçim var

sayı adı 1.254 eter 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, sayıdaki 3. sekizli tarafından bir ağdan ayırt edilir - bir net sayının iki sekizli olması ve bir ana sayının üç sekizli olması gerekir .) Sayı ve ad ayrılmalıdır boşluk ile (boşluk veya sekme). /etc/atalk.names dosyası boş satırlar veya yorum satırları içerebilir ("#" ile başlayan satırlar).

Appletalk adresleri aşağıdaki şekilde 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

( /etc/atalk.names mevcut değilse veya bazı appletalk host / net numaraları için bir giriş içermiyorsa, adresler sayısal biçimde yazdırılır.) İlk örnekte, net 144.1'de NBP (DDP port 2) Düğüm 209, net icsd düğümü 112'nin port 220'sinde dinleyen her şeye gönderir. İkinci düğüm, kaynak düğümün tam adı dışında ('ofis') aynıdır. Üçüncü satır, net jssmag düğümünde (149) icsd-net NBP bağlantı noktası üzerinden yayınlanmak üzere 235 numaralı bağlantı noktasından gönderimdir (yayın adresinin (255) ana bilgisayar numarası olmayan net bir adla belirtildiğini unutmayın - bu nedenle iyi bir fikirdir. düğüm isimlerini ve net adlarını /etc/atalk.names dosyasında ayrı tutmak için).

NBP (ad bağlama protokolü) ve ATP (Appletalk işlem protokolü) paketlerinin içerikleri yorumlanır. Diğer protokoller sadece protokol adını (veya protokol için herhangi bir isim kayıtlı değilse) ve paket boyutunu boşaltır.

NBP paketleri aşağıdaki örneklerde biçimlendirilmiştir:

icsd-net.112.220> jssmag.2: nbp-lkup 190: "=: LaserWriter @ *" jssmag.209.2> icsd-net.112.220: nbp yanıt 190: "RM1140: LaserWriter @ *" 250 techpit.2> icsd -net.112.220: nbp-yanıt 190: "techpit: LaserWriter @ *" 186

İlk satır, net icsd host 112 tarafından gönderilen ve net jssmag üzerinde yayın yapan lazer yazarları için bir isim arama isteğidir. Arama için nbp kimliği 190'dur. İkinci satır, bu isteğin bir yanıtını gösterir (aynı kimliğe sahip olduğunu unutmayın) jssmag.209 sunucusundan, 250 numaralı bağlantı noktasında kayıtlı olan "RM1140" adlı bir lazer yazıcı kaynağına sahip olduğunu söyler. line aynı talebe cevap veren host techpit'in 186 numaralı bağlantı noktasında kayıtlı "yazmacı" lazer yazıcısı olduğunu belirtti.

ATP paket formatı aşağıdaki örnekte gösterilmiştir:

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- 12126: 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-resp * 12266: 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, 8 adete kadar paket (12 adete kadar) (<<0-7> ') isteyerek ev sahibi helios ile işlem kimliği 12266'yı başlatır. Satırın sonundaki onaltılık sayı, istekte bulunan "userdata" alanının değeridir.

Helios 8 512 baytlık paketlerle cevap veriyor. İşlem kimliğini takiben `: digit ', işlemdeki paket sıra numarası verir ve parens içindeki sayı, atp üstbilgisi hariç, paket içindeki veri miktarıdır. Paket 7'deki `* ', EOM bitinin ayarlandığını gösterir.

Jssmag.209, daha sonra 3 ve 5 paketlerinin yeniden iletilmesini ister. Helios onları yeniden gönderir ve jssmag.209 işlemi serbest bırakır. Son olarak, jssmag.209 bir sonraki isteği başlatır. İstek üzerine `* ', XO'nun (tam olarak bir kez) ayarlanmadığını gösterir.

IP Fragmantasyonu

Parçalanmış İnternet datagramları şöyle yazdırılır:

(parça kimliği : boyut @ ofset +) (parça kimliği : boyut @ ofset )

(İlk form daha fazla parça olduğunu gösterir. İkincisi, bunun son parça olduğunu gösterir.)

Kimlik , parça kimliğidir. Boyut , IP üstbilgisi hariç parça boyutudur (bayt cinsinden). Ofset , orjinal datagramdaki bu parçanın ofsetidir (bayt cinsinden).

Her parça için parça bilgisi çıktı. İlk parça, daha üst düzey protokol üstbilgisini içerir ve parça bilgisi protokol bilgisinden sonra yazdırılır. İlk bölümden sonraki fragmanlar, daha üst düzey bir protokol başlığı içermez ve kaynak ve hedef adreslerinden sonra parça bilgisi yazdırılır. Örneğin, burada 576 baytlık datagramları işlemek gibi görünmeyen bir CSNET bağlantısı üzerinden arizona.edu'dan lbl-rtsg.arpa'ya bir ftp'nin bir kısmı verilmiştir:

arizona.ftp-data> rtsg.1170:. 1024: 1332 (308) ack 1 win 4096 (frag 595a: 328 @ 0 +) arizona> rtsg: (frag 595a: 204 @ 328) rtsg.1170> arizona.ftp-veri:. ack 1536 2560 kazanmak

Burada dikkat edilmesi gereken birkaç şey var: Birincisi, 2. hattaki adresler port numaralarını içermiyor. Bunun nedeni, TCP protokol bilgisinin ilk parçada yer almasıdır ve daha sonraki parçaları yazdırırken port veya sıra numaralarının ne olduğu hakkında hiçbir fikrimiz yoktur. İkincisi, ilk satırdaki tcp dizisi bilgisi, gerçekte, 512 bayt (ilk fragmanda 308 ve ikincinde 204) olduğunda 308 bayt kullanıcı verisi gibi basılır. Sıra boşluğunda delikler arıyorsanız ya da paketlerle eşleştirmeye çalışıyorsanız, bu sizi kandırır.

IP parçalanmayan bayraklı bir paket, bir takip (DF) ile işaretlenmiştir.

Zaman damgaları

Varsayılan olarak, tüm çıktı satırlarından önce bir zaman damgası gelir. Zaman damgası, formdaki mevcut saat saatidir

ss: dd: ss.frac

ve kernel'in saati kadar doğrudur. Zaman damgası, çekirdeğin paketi ilk gördüğü süreyi yansıtır. Ethernet arabiriminin paketi telden çıkardığı ve çekirdeğin 'yeni paket' hizmetine müdahale ettiği zaman arasındaki gecikmeyi hesaba katmak için hiçbir girişimde bulunulmamıştır.

AYRICA BAKINIZ

trafik (1C), nit (4P), bpf (4), pcap (3)

Önemli: Komutunuzun belirli bir bilgisayarda nasıl kullanıldığını görmek için man komutunu ( % adam ) kullanın.