Tcpdump е команда, използвана на различни операционни системи на Linux (OS), която събира TCP / IP пакети, които минават през мрежов адаптер. Подобно на инструмента за пакетиране на пакети, tcpdump може не само да анализира мрежовия трафик, но и да го запише във файл.
За разлика от някои команди, които по подразбиране се предлагат от операционната система, може да откриете, че не можете да използвате tcpdump, защото не е инсталиран. За да инсталирате tcpdump, изпълнете apt-get install Tcpdump или инсталирате tcpdump, в зависимост от вашата операционна система.
Как работи Tcpdump
Tcpdump отпечатва заглавията на пакетите на мрежов интерфейс, който съответства на булева изразяване , Може да се изпълнява и с-w знак, който го кара да запази пакетните данни във файл за по - късен анализ и / или с-r флаг, което я кара да чете от запазен пакет файл, вместо да чете пакети от мрежов интерфейс. Във всички случаи само пакети, които съвпадат изразяване ще бъдат обработени от Tcpdump .
Tcpdump ще, ако не се движат с-° С флаг, продължете да улавяте пакети, докато не бъде прекъснат от сигнал SIGINT (генериран например чрез въвеждане на вашия прекъсващ знак, обикновено Ctrl + C) или SIGTERM сигнал (обикновено генериран субивам(1) команда); ако се изпълнява с-° С флаг, той ще улови пакетите, докато не бъде прекъснат от сигнал SIGINT или SIGTERM или определен брой пакети са обработени.
Превключвателите, споменати по-горе, са обяснени подробно по-нататък в тази статия.
Кога Tcpdump завършва улавянето на пакети, ще отчита броя на:
- Пакети ", получени чрез филтър."
- Значението на това зависи от операционната система, на която работите Tcpdump , и вероятно по начина, по който е конфигурирана операционната система. Ако на командния ред е зададен филтър, на някои операционни системи се броят пакетите, независимо от това дали са съвпадани с филтърния израз, а за други брои само пакети, които са съвпадали с филтърния израз и са обработени от Tcpdump.
- Пакети ", намалени с ядрото."
- Това е броят на пакетите, които са отпаднали, поради липса на буферно пространство, от механизма за улавяне на пакети в операционната система, на която Tcpdump се изпълнява, ако операционната система докладва тази информация на приложенията. Ако не, ще бъде отчетено като 0.
На платформи, които поддържат сигнала SIGINFO, като повечето BSD (Berkeley Software Distributions), той ще отчита тези бройки, когато получи сигнал SIGINFO (генериран например чрез въвеждане на символа "статус", обикновено Ctrl + T) и ще продължи да улавя пакети.
Съвместимост с Tcpdump
Четенето на пакети от мрежов интерфейс с командата tcpdump може да изисква специални привилегии ( четене запазеният пакет файл не изисква такива привилегии):
- SunOS 3.x или 4.x с NIT или BPF: Трябва да имате достъп за четене / Сътрудничество / гнида или сътрудничество / BPF * .
- Solaris с DLPI: Трябва да имате достъп за четене / запис на мрежово псевдо устройство, например / Сътрудничество / ле , Поне някои версии на Solaris обаче не са достатъчни, за да позволят това Tcpdump за улавяне в незначителен режим; на тези версии на Solaris, трябва да сте корен, или Tcpdump трябва да бъдат инсталирани на корен, за да се заснеме в незначителен режим. Имайте предвид, че при много (може би всички) интерфейси, ако не заснемате в непрофесионален режим, няма да виждате изходящи пакети, така че улавянето, което не е извършено в непрофесионален режим, може да не е много полезно.
- HP-UX с DLPI: Трябва да сте корен или Tcpdump трябва да бъдат инсталирани на root.
- IRIX със snoop: Трябва да сте корен или Tcpdump трябва да бъдат инсталирани на root.
- Linux: Трябва да сте корен или Tcpdump трябва да бъдат инсталирани на root.
- Ултрикс и цифрови UNIX / Tru64 UNIX: Всеки потребител може да улови мрежов трафик с Tcpdump , Въпреки това, нито един потребител (дори и суперпотребителят) не може да заснеме в непрофесионален режим на интерфейс, освен ако суперпотребителят не е разрешил работа на несвързан режим на този интерфейс, използвайки pfconfig (8) и никой потребител (дори не и суперпотребителят) може да заснеме трафик с единичен трафик, получен от или изпратен от машината на интерфейс, освен ако суперпотребителят не е разрешил операцията копиране на всички режими на този интерфейс, използвайки pfconfig , така полезен заснемането на пакети на интерфейс вероятно изисква да се активира на този интерфейс или операция безразборни или копиране на всички режими, или и двата режима на работа.
- BSD: Трябва да имате достъп за четене / Сътрудничество / BPF * .
Синтаксис на командата Tcpdump
Подобно на всички компютърни команди, командата tcpdump работи правилно само ако синтаксиса е правилен:
Tcpdump -adeflnNOpqRStuvxX -° С броя
-° С размер на файла -F досие
-i интерфейс -м модул -r досие
-с snaplen -T Тип -U потребител -w досие
-Е Дълго: тайна изразяване
Опции за командата Tcpdump
Това са всички опции, които можете да използвате с командата tcpdump:
- -а: Опит за преобразуване на адресите на мрежата и излъчването до имена.
- -° С: Изход след получаване броя пакети.
- -° С: Преди да напишете суров пакет на файла за запис, проверете дали понастоящем файлът е по - голям от размер на файла и ако е така, затворете текущия файл за запаметяване и отворете нов.Файловете за съхранение след първия файл за запис ще имат името, посочено с-w флаг, с число след него, започвайки от 2 и продължавайки нагоре. Единиците на размер на файла са милиони байтове (1 000 000 байта, а не 1,048,576 байта).
- -д: Изхвърлете компилирания код за съвпадение на пакети в човешка четима форма на стандартен изход и спиране.
- -DD: Кодът за съвпадение на пакета като a° С програмен фрагмент.
- -DDD: Код за съвпадение на пакета за десетични знаци като десетични номера (предхождани от броя).
- -Д: Отпечатайте заглавката на нивото на връзката на всяка линия за депозиране.
- -Е: Използвайте Дълго: тайна за декриптиране на IPsec ESP пакети. Алгоритмите могат да бъдатде-ТГС, 3DES-CBC, Blowfish-ТГС, RC3-ТГС, cast128-ТГС, илинито един, По подразбиране еде-ТГС, Възможността за декриптиране на пакетите е налице само ако Tcpdump бе съставена с активирана криптография. тайна текстът ASCII за тайния ключ ESP. В този момент не можем да вземем произволна двоична стойност. Опцията приема RFC2406 ESP, а не RFC1827 ESP. Опцията е само за целите на отстраняването на грешки, а използването на тази опция с истински "таен" ключ е обезкуражено. С представянето на тайния ключ на IPsec на командния ред вие го правите видим за другите чрез к.с. (1) и други случаи.
- -f: Печат "чужди" интернет адреси цифрово, а не символично (тази опция е предназначена да преодолее сериозни мозъчни увреждания в сървъра на Слънцето - обикновено той виси на завинаги превода на нелокални интернет номера).
- -F: Използвайте досие като вход за израза на филтъра. Допълнителен израз, даден в командния ред, се игнорира.
- -i: Слушайте интерфейс , Ако не е посочено, Tcpdump търси в системния интерфейс за най-ниско номериран, конфигуриран интерфейс (с изключение на обратната връзка). Връзките се нарушават, като изберете най-ранния мач. На Linux системи с 2.2 или по-нови ядра, a интерфейс аргументът "всеки" може да бъде използван за заснемане на пакети от всички интерфейси. Имайте предвид, че улавянето на "всяко" устройство няма да бъде извършено в непрофесионален режим.
- -l: Направете buffered stdout line. Полезно, ако искате да видите данните, докато ги заснемате. Например "tcpdump -l | tee dat" или "tcpdump -l> dat & tail -f dat".
- -м: Заредете дефиниции на модула на SMI MIB от файл модул , Тази опция може да се използва няколко пъти, за да се заредят няколко MIB модула Tcpdump .
- -н: Не преобразувайте адресите на хостове в имена. Това може да се използва, за да се избегнат търсенията в DNS.
- -NN: Не преобразувайте номерата на протоколите, портовете и т.н.
- -N: Не печатайте име на домейн за имена на хостове. Например, ако дадете това знаме, тогава Tcpdump ще отпечата "nic" вместо "nic.ddn.mil".
- -О: Не пускайте оптимизатора на кодовете за съвпадение на пакети. Това е полезно само ако подозирате, че има грешка в оптимизатора.
- -p: не поставете интерфейса в незначителен режим. Имайте предвид, че интерфейсът може да е в незначителен режим по някаква друга причина; следователно, "-p" не може да се използва като съкращение за "етер домакин {локално-hw-addr} или етер излъчване".
- -q: Бърз (тих) изход. Отпечатвайте по-малко информация от протокола, така че изходните линии да са по-къси
- -R: Да приемем, че пакетите ESP / AH се основават на стари спецификации: RFC1825 до RFC1829. Ако е посочено, Tcpdump няма да печата полето за предотвратяване на преиграване. Тъй като в ESP / AH спецификацията няма протоколно версийно поле, Tcpdump не може да изведе версията на протокола ESP / AH.
- -r: Прочетете пакетите от досие (който е създаден с опцията -w). Стандартният вход се използва, ако досие е "-".
- -С: Отпечатвайте абсолютни, а не относителни, номера на поредица от TCP.
- -с: Snarf snaplen байтове на данни от всеки пакет, а не по подразбиране от 68; с NIT на SunOS, минимумът всъщност е 96. Шестдесет и осем байта са подходящи за IP, ICMP, TCP и UDP, но могат да съкращават информацията от протокола от пакетите с име сървър и NFS (виж по-долу). Пакети, съкратени поради ограничена снимка, се показват на изхода с " прото '', където прото е името на нивото на протокола, на което е настъпило прекъсването. Имайте предвид, че като се вземат по-големи снимки, двете увеличават времето, необходимо за обработка на пакетите и ефективно намаляват количеството буфериране на пакети. Това може да доведе до загуба на пакетите. Трябва да ограничите snaplen до най-малкия брой, който ще улови протокола, който ви интересува. Настройка snaplen до 0 означава използване на необходимата дължина за улавяне на цели пакети.
- -T: Force пакети, избрани от " изразяване "да се интерпретира посоченото Тип , Понастоящем са известни типовеcnfp (Протокол Cisco NetFlow),RPC (Отдалечено повикване по процедура),RTP (Протокол за приложения в реално време),RTCP (Контролен протокол за приложенията в реално време),SNMP (Прост протокол за управление на мрежата),ДДС (Visual Audio Tool) иWB (разпространен бял съвет).
- -T: не отпечатайте клеймо за дата на всеки депозиращ ред.
- -tt: Отпечатване на неформатиран времеви маркер на всяка изпускателна линия.
- -U: Отказва привилегиите на root и променя потребителския идентификатор до потребител и идентификационния номер на групата към основната група от потребител .
- Забележка: Red Hat Linux автоматично пуска привилегиите на потребител "pcap", ако не е посочено друго.
- -ttt: Отпечатайте делта (в микросекунди) между текущата и предишната линия на всяка линия за депозиране.
- -tttt: Отпечатайте времева марка във формат по подразбиране, продължена по дата на всяка изходяща линия.
- -u: Отпечатайте некодирани дръжки за NFS.
- -V: (Малко повече) подробен изход. Например, времето за живеене, идентификацията, общата дължина и опциите в IP пакета се отпечатват. Също така дава възможност за допълнителни проверки на целостта на пакета, като например проверка на контролната сума на IP и ICMP хедъра.
- -vv: Още по-подробен изход. Например, допълнителни полета се отпечатват от пакети от отговори NFS, а пакетите SMB се декодират напълно.
- -vvv: Още по-подробен изход. Например, telnetSB … SE опциите се отпечатват изцяло. с -Х Телнет опциите се отпечатват и в шестнадесетичен формат.
- -w: Напишете суровите пакети за досие вместо да ги анализирате и отпечатвате. Те могат да бъдат отпечатани по-късно с опцията -r. Стандартният изход се използва, ако досие е "-".
- -х: Отпечатайте всеки пакет (минус заглавката му на ниво връзка) в шестнадесетичен. По - малкият от целия пакет или snaplen байтове ще бъдат отпечатани. Обърнете внимание, че това е целият пакет на линк-слой, така че за слоевете на връзките, които подложката (напр. Ethernet), запълващите байтове също ще бъдат отпечатани, когато пакетът с по-висок слой е по-къс от необходимото подложка.
- -Х: Когато печатате шестнадесетичен, отпечатайте и ASCII. Така, ако-х също е зададен, пакетът е отпечатан в шестнадесетичен / ascii. Това е много удобно за анализ на нови протоколи. Дори ако-х не е зададено, някои части от някои пакети могат да бъдат отпечатани в шестнадесетичен / ascii.
- изразяване : Избира кои пакети ще бъдат изхвърлени. Ако не изразяване е дадено, всички пакети в мрежата ще бъдат изхвърлени. В противен случай само пакети, за които изразяване е "вярно" ще бъде изхвърлен. Най- изразяване се състои от един или повече примитиви. Примитивите обикновено се състоят от документ за самоличност (име или номер), предхождани от един или повече квалификации. Има три различни вида квалификации:
- Тип : Квалификаторите казват какъв вид се отнася до името или номера на идент. Възможни са типоведомакин, нето, ипортНапример "host foo", "net 128.3", "port 20". Ако няма квалификационен тип,домакин се приема.
- реж : Квалификациите определят конкретна посока на прехвърляне към и / или от документ за самоличност , Възможните посоки саSRC, DST, src или dst иsrc и DST (напр. "src foo", "dst net 128.3", "src или dst port ftp-data"). Ако няма квалификационен клас,src или dst се приема. За "null" слоеве на линка (т.е. протоколи от точка до точка като приплъзване) входящ и изходяща квалификаторите могат да бъдат използвани за определяне на желаната посока.
- прото : Квалификаторите ограничават мача до определен протокол. Възможните протоси са: етер, FDDI, TR, IP, ИП6, ARP, RARP, DECnet, TCP, иUDP- например "ether src foo", "arp net 128.3", "tcp port 21". Ако няма Pro квалификатор, се приемат всички протоколи съответстващи на типа. Например "src foo" означава "(ip или arp или rarp) src foo" (с изключение на последния, който не е юридически синтаксис); "net bar" означава "ip или arp or rarp net net" означава "(tcp или udp) порт 53".
- fddi всъщност е псевдоним на "етер"; параметрите на FDDI съдържат адресите на източника и дестинацията като Ethernet и често съдържат типове пакети като Ethernet, така че можете да филтрирате тези FDDI полета само както и при аналоговите полета на Ethernet.FDDI заглавията съдържат и други полета, но не можете да ги изрично посочите в израз на филтър.
- По същия начин, "tr" е псевдоним на "етер"; изявленията на предишния параграф относно заглавките на FDDI се отнасят и за заглавията на Token Ring.
Освен гореизброените, има и някои специални "примитивни" ключови думи, които не следват модела:врата, излъчване, по-малко, по-голяма, и аритметика изрази. Всичко това е описано по-долу.
По-сложни филтърни изрази се създават с помощта на думитеи, или, ине да комбинирате примитиви - например "хост foo, а не port port ftp и not port ftp-data". За да запазите въвеждането, същите списъци с квалификатори могат да бъдат пропуснати (напр. "Tcp dst port ftp или ftp-data or domain" е точно същата като "tcp dst port ftp или tcp dst port ftp-data или tcp dst port domain"
Това са примитивите, позволени с командата tcpdump:
- dst домакин домакин
- Вярно е, ако IPv4 / v6 целевото поле на пакета е домакин , който може да бъде адрес или име.
- src хост домакин
- Вярно е, ако IPv4 / v6 изходното поле на пакета е домакин .
- домакин домакин
- Вярно е, ако е източник или дестинация на пакета IPv4 / v6 домакин , Всеки от горепосочените изрази на хост може да бъде пренасочен с ключовите думи,IP, ARP, RARP, илиИП6, както в ip хост домакин (което е еквивалентно на етер прото IP и домакин домакин).
- ако домакин е име с множество IP адреси, всеки адрес ще бъде проверен за съответствие.
- етер dst ehost
- Вярно е, ако адресът на дестинацията за Ethernet е ehost . Ehost може да бъде или име от / etc / ethers, или число (вж етери (3N) за цифров формат).
- етер src ehost
- Вярно е, ако е източник на Ethernet адрес ehost .
- етер домакин ehost
- Вярно е дали е Ethernet източник или адрес на местоназначение ehost .
- врата домакин
- Вярно е, ако пакетът е използван домакин като шлюз (т.е. Ethernet източник или адрес на местоназначение) домакин но нито източникът на IP, нито местоназначението на IP адреса бяха домакин ).
- домакин трябва да бъде име и трябва да бъде намерено както от механизмите за разрешаване на адреса на хост-име на IP адрес на устройството (файл с име на хост, DNS, NIS и т.н.), така и от механизма за разрешаване на адреса на хост-име към Ethernet (/ и т.н. / етери и др.).
- Еквивалентен израз е етер домакин ehost и сега домакин домакин , който може да се използва с имена или номера за хост / ehost .) Този синтаксис в момента не работи в конфигурация с активиран IPv6.
- dst мрежа нето
- Вярно е, ако IPv4 / v6 целевият адрес на пакета има мрежов номер нето . нето може да е име от / etc / мрежи или мрежов номер (вж мрежи (4) за детайли).
- src net нето
- Вярно е, ако IPv4 / v6 източникът на адреса на пакета има мрежов номер нето .
- нето нето
- Вярно, ако източникът или целевият адрес на пакета IPv4 / v6 има мрежов номер нето .
- нето нето маска маска
- Вярно е, ако IP адресът съвпада нето със специфичните маска , Може да се квалифицира сSRC илиDST, Обърнете внимание, че този синтаксис не е валиден за IPv6 нето .
- нето нето / дъл
- Вярно е, ако IPv4 / v6 адресът съвпада нето с мрежова маска дъл бита широка. Може да се квалифицира сSRC илиDST.
- dst порт порт
- Вярно е, ако пакетът е ip / tcp, ip / udp, ip6 / tcp или ip6 / udp и има стойност на порт порт , Най- порт може да бъде число или име, използвано в / etc / services (вж TCP (4Р) и UDP (4P)). Ако се използва име, се проверява както номерът на порта, така и протоколът. Ако се използва число или двусмислено име, се проверява само номерът на порта (например,dst порт 513 ще отпечатват трафик tcp / вход и трафик udp / кой, ипристанищен домейн ще отпечатат трафик tcp / домейн и дом / домейн).
- src порт порт
- Вярно, ако пакетът има стойност на порт на източник порт .
- порт порт
- Вярно е, ако източникът или целевият порт на пакета е порт , Всеки от горните портови изрази може да бъде пренасочен с ключовите думи,TCP илиUDP, както в tcp src порт порт , който съвпада само с пакетите tcp, чийто източник е пристанището порт .
- по-малко дължина
- Вярно е, ако пакетът има дължина, по-малка или равна на дължина , Това е еквивалентно на len <= дължина .
- по-голяма дължина
- Вярно, ако пакетът има дължина, по-голяма или равна на дължина , Това е еквивалентно на len> = дължина .
- ip proto протокол
- Вярно, ако пакетът е IP пакет (вж IP (4Р)) от тип протокол протокол . протокол може да бъде число или едно от имената ICMP , icmp6 , IGMP , IGRP , PIM , ах , ESP , VRRP , UDP , или TCP , Обърнете внимание на идентификаторите TCP , UDP , и ICMP са също ключови думи и трябва да бъдат избягнати чрез обратна наклонена черта (), която е в C-shell. Обърнете внимание, че този примитив не преследва веригата на заглавния протокол.
- ip6 proto протокол
- Вярно, ако пакетът е IPv6 пакет тип протокол протокол , Обърнете внимание, че този примитив не преследва веригата на заглавния протокол.
- ip6 протохейн протокол
- Вярно, ако пакетът е IPv6 пакет и съдържа заглавен протокол с тип протокол в протоколната си верига. Например, ipv6 protochain 6 съответства на всеки пакет от IPv6 с TCP протокол в заглавната верига на протокола. Пакетът може да съдържа например заглавка за удостоверяване, заглавен маршрутизатор или заглавка на опция "хоп по хоп", между заглавката на IPv6 и заглавката на TCP. Кодът на BPF, излъчван от този примитив, е сложен и не може да бъде оптимизиран чрез код за оптимизиране на BPF в Tcpdump , така че това може да е малко бавно.
- ip protochain протокол
- Еквивалентно наip6 протохейн протокол , но това е за IPv4.
- етер излъчване
- Вярно е, ако пакетът е Ethernet пакет за излъчване. Най- етер ключова дума е по избор.
- ip излъчване
- Вярно е, ако пакетът е IP излъчван пакет. Тя проверява както конвенциите за излъчване на всички нули, така и всички тях и търси местната маска на подмрежата.
- етерна мултикаст
- Вярно е, ако пакетът е пакет Ethernet за множествено предаване. Най- етер ключова дума е по избор. Това е съкращение за "етер 0 & 1! = 0'.
- ip multicast
- Вярно, ако пакетът е IP пакет за множествено предаване.
- ip6 multicast
- Вярно е, ако пакетът е пакет за множествено предаване за IPv6.
- етер прото протокол
- Вярно, ако пакетът е от тип етер протокол . протокол може да бъде число или едно от имената IP , ИП6 , ARP , RARP , разговор , AARP , DECnet , SCA , лат , mopdl , moprc , изо , STP , IPX , или NetBEUI , Забележете, че тези идентификатори са и ключови думи и трябва да избягате чрез наклонена черта ().
- В случая на FDDI (например "fddi протокол arp') и Token Ring (например "tr протокол arp'), за повечето от тези протоколи идентификацията на протокола идва от 802.2 логически линк за контрол на локалната връзка (LLC), който обикновено е наслоен над заглавката на FDDI или Token Ring.
- Когато филтрираме повечето идентификатори на протокола на FDDI или Token Ring, Tcpdump проверява само полето ID на протокол на LLC заглавие в така наречения SNAP формат с идентификатор на организационно устройство (OUI) от 0x000000 за капсулиран Ethernet; тя не проверява дали пакетът е в SNAP формат с OUI от 0x000000.
- Изключенията са изо , за което проверява полетата DSAP (Access Point Service Access Point) и SSAP (Source Service Access Point) на LLC заглавката, STP и NetBEUI , където проверява DSAP на заглавната част на LLC и разговор , където проверява за SNAP формат пакет с OUI от 0x080007 и Appletalk тип.
- В случая на Ethernet, Tcpdump проверява полето за тип Ethernet за повечето от тези протоколи; изключенията са изо , сок , и NetBEUI , за което проверява за рамка от 802,3 и след това проверява LLC заглавката, както прави за FDDI и Token Ring; разговор , където той проверява и двата вида Appletalk в Ethernet кадър и за SNAP-формат пакет, както прави за FDDI и Token Ring; AARP , където проверява за тип ART на Appletalk или в Ethernet рамка или 802.2 SNAP рамка с OUI от 0x000000; и IPX , където проверява за IPX тип в Ethernet рамка, IPX DSAP в LLC заглавката, 802.3 без калибриране на LLC заглавие на IPX и IPX тип в SNAP рамка.
- decnet src домакин
- Вярно е, ако е източникът на адрес DECNET домакин , който може да е адрес на формуляра "10.123" или име на хоста на DECNET. Поддръжката на името на DECNET хост е достъпна само за системите Ultrix, които са конфигурирани да изпълняват DECNET.
- decnet dst домакин
- Вярно е, ако адресът на DECNET е местоназначението домакин .
- decnet хост домакин
- Вярно е, дали източникът или целевият адрес на DECNET е домакин .
- IP, ИП6, ARP, RARP, разговор, AARP, DECnet, изо, STP, IPX, NetBEUI
- Съкращения за етер прото р където р е един от горните протоколи.
- лат, moprc, mopdl
- Съкращения за етер прото р където р е един от горните протоколи. Отбележи, че Tcpdump понастоящем не знае как да анализира тези протоколи.
- VLAN Vlan_id
- Вярно, ако пакетът е пакет VLAN на IEEE 802.1Q. ако Vlan_id е зададен, валиден само ако пакетът е указан vlan_id , Имайте предвид, че първотоVLAN ключова дума, срещана в изразяване променя декодиращите компенсации за остатъка от изразяване при предположението, че пакетът е VLAN пакет.
- TCP, UDP, ICMP
- Съкращения за ip proto р или ip6 proto р където р е един от горните протоколи.
- iso proto протокол
- Вярно, ако пакетът е OSI пакет тип протокол протокол . протокол може да бъде число или едно от имената clnp , ЕСИФ , или Изида .
- clnp, ЕСИФ, Изида
- Съкращения за iso proto р където р е един от горните протоколи. Отбележи, че Tcpdump прави непълна задача да анализира тези протоколи.
- expr relop expr
- Вярно е, ако има връзка, къде relop е една от>, <,> =, <=, =,! =, и ИЗРАЗът е аритметичен израз, съставен от цялостни константи (изразени в стандартен С синтаксис), нормалните двоични оператори +, -, *, /, &, |, оператор за дължина и специални аксесоари за пакети данни. За достъп до данните в пакета използвайте следния синтаксис: proto expr: размер .
Proto е един отетер, FDDI, TR, ррр, хлъзгане, връзка, IP, ARP, RARP, TCP, UDP, ICMP, или ИП6, и показва протоколния слой за операцията на индекса (етер, FDDI, TR, ррр, хлъзгане, ивръзка всички се отнасят до слоя на връзката). Отбележи, че tcp, udp , и други типове протоколи от горния слой се прилагат само за IPv4, а не за IPv6 (това ще бъде фиксирано в бъдеще). Байтовото отместване, по отношение на посочения протоколен слой, е дадено от ИЗРАЗът . размер е незадължително и показва броя на байтовете в областта, представляваща интерес; тя може да бъде една, две или четири и да е по подразбиране. Операторът на дължината, посочен от ключовата думадъл, дава дължината на пакета.
Например, 'етер 0 & 1! = 0"улавя всички трафик за множествено предаване. Изразът 'ip 0 & 0xf! = 5"улавя всички IP пакети с опции. Изразът 'ip 6: 2 & 0x1fff = 0"улавя само неграматизирани дейтаграми и нула на фрагментирани дейтаграми. Тази проверка се прилага имплицитно къмTCP иUDP индексни операции. Например, TCP 0 винаги означава първия байт на TCP удар с глава , и никога не означава първия байт на вмъкнатия фрагмент.
Някои отклонения и стойности на полета могат да бъдат изразени като имена, а не като цифрови стойности. Предлагат се следните компенсации на полетата на заглавната част на протокола: icmptype (Поле ICMP тип),icmpcode (ICMP кодово поле) иtcpflags (Поле на TCP флагове).
Предлагат се следните стойности за ICMP тип на поле:ICMP-echoreply, ICMP-unreach, ICMP-sourcequench, ICMP-пренасочване, ICMP ехо, ICMP-routeradvert, ICMP-routersolicit, ICMP-timxceed, ICMP-paramprob, ICMP-tstamp, ICMP-tstampreply, ICMP-ireq, ICMP-ireqreply, ICMP-maskreq, ICMP-maskreply.
Предлагат се следните стойности на полетата за TCP флагове:TCP-перка, TCP-син, TCP-RST, TCP натискане, TCP натискане, TCP-АСК, TCP-Urg.
Примитивите могат да се комбинират, като се използва някое от следните:
- Ротатизирана група от примитиви и оператори (скобите са специални за Shell и трябва да бъдат избегнати)
- Отрицание ("!"или"не')
- Съгласуване ("&&' или 'и')
- Редуване ("||' или 'или')
Отрицанието има първостепенно значение. Редуването и конкатенацията имат равнопоставено предимство и се свързват от ляво на дясно. Обърнете внимание,и символи, които не са съпоставени, са необходими за свързване.
Ако даден идентификатор е даден без ключова дума, се приема последната ключова дума. Например, не домакин и асо е кратко за не хост срещу и домакин асо, Това обаче не бива да се бърка не (хост срещу или асо).
Аргументите за изразяване могат да бъдат предадени на Tcpdump като един аргумент или като няколко аргумента, което от двете е по-удобно. Обикновено, ако изразът съдържа Shell metacharacters, е по-лесно да го предаде като единствен, цитиран аргумент. Няколко аргумента са свързани с интервали, преди да бъдат анализирани.
Примери за Tcpdump
tcpdump домакин залез слънце
Горната команда tcpdump се използва за отпечатване на всички пакети, пристигащи или заминаващи от залез слънце. tcpdump host helios и (горещо или асо )
Този пример tcpdump отпечатва трафика между тях Хелиос и двамата горещ или ас. tcpdump ip хоста асо и не helios
Можете да използвате тази команда tcpdump, за да отпечатате всички IP пакети между тях ас и всеки домакин освен Хелиос. tcpdump net ucb-етер
В горния пример tcpdump отпечатва целия трафик между локални хостове и хостове в Бъркли. tcpdump "шуп на шлюза и (порт ftp или ftp-данни)"
Този следващ пример на командата tcpdump се използва за отпечатване на целия FTP трафик през интернет портала snup , Обърнете внимание, че изразът е цитиран, за да се предотврати неправилното интерпретиране на скобите. tcpdump ip, а не нето localnet
В горния пример tcpdump, командата отпечатва трафик, който не е генериран от или предназначен за локални хостове. tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 и не src и dst net localnet '
За горния пример на tcpdump, командата се използва за отпечатване на началните и крайните пакети (пакетите SYN и FIN) на всеки TCP разговор, който включва нелокализиран хост. tcpdump 'шуп и ip 2: 2> 576'
Горната команда ще отпечата IP пакети по-дълги от 576 байта, изпратени през шлюза snup. tcpdump 'етер 0 & 1 = 0 и ip 16> = 224'
Командата tcpdump, показана по-горе, отпечатва IP-излъчвания или пакети за множествено предаване, които са били не изпратени чрез Ethernet излъчване или мултикаст. tcpdump 'icmp icmptype! = icmp-ехо и icmp icmptype! = icmp-echoreply'
В този последен пример на tcpdump командата отпечатва всички ICMP пакети, които не са заявки за ехо или отговори (т.е. не ping пакети). Изходът от Tcpdump е зависим от протокола. По-долу е дадено кратко описание и примери за повечето формати. Линкове за нивото на връзката, Ако е дадена опцията "-e", заглавката на нивото на връзката се отпечатва. В Ethernet мрежите се отпечатват адресите на източника и дестинацията, протоколът и дължината на пакета. На FDDI мрежите, опцията "-e" причинява Tcpdump за да отпечатате полето "контрол на рамката", адреса на източника и местоназначението и дължината на пакета. (Като тези, съдържащи IP дейтаграми) са пакети "async" с приоритетна стойност между 0 и 7: например "async4". Такива пакети се приема, че съдържат пакет 802.2 Logical Link Control (LLC); заглавката на LLC се отпечатва, ако е така не една дейтаграма по ISO или т.н. SNAP пакет. На мрежи Token Ring опцията "-e" причинява Tcpdump за да отпечатате полетата "контрол на достъпа" и "контрола на рамката", адресите на източника и местоназначението и дължината на пакета. Както и при FDDI мрежите, се приема, че пакетите съдържат LLC пакет. Независимо от това дали опцията "-e" е зададена или не, информацията за маршрутизиране на източника се отпечатва за пакети с източник на маршрутизация. (N.B .: Следващото описание предполага познаване на алгоритъма за компресия SLIP, описан в RFC-1144.) В SLIP връзките се отпечатват указателни индикатори ("I" за входящи, "O" за изходящи), тип пакети и информация за компресията. Типът пакети се отпечатва първо. Трите вида са IP , utcp , и КТЗП , Не се отпечатва допълнителна информация за връзка IP пакети. За TCP пакетите идентификаторът на връзката се отпечатва по типа. Ако пакетът е компресиран, неговият кодиран хедър се отпечатва. Специалните случаи са отпечатани като* S + п и* SA + п , където п е сумата, с която се е променил последователният номер (или номерът на последователността и ack). Ако не е специален случай, се отпечатват нула или повече промени. Промяната се означава с U (спешно показалец), W (прозорец), A (ack), S (последователен номер) и I (пакет ID), последвани от делта (+ n или -n) (= N). Накрая се отпечатва количеството данни в пакета и дължината на компресираната заглавка. Например, следващият ред показва изходящ компресиран TCP пакет с имплицитен идентификатор на връзката; ака се промени с 6, последователният номер с 49 и идентификационния номер на пакета с 6; има 3 байта данни и 6 байта на компресиран хедър: O ctcp * A + 6S + 49I + 6 3 (6)
Пакети Arp / rarp, Arp / rarp изхода показва типа искане и неговите аргументи. Форматът е предназначен да бъде ясен. Ето кратка извадка, взета от началото на "rlogin" от хоста rtsg домакинствам csam : arp, който има CSAM, казва rtsgarp отговор csam е в CSAM
Първият ред казва, че rtsg е изпратил аржентинен пакет с искане за адреса на Ethernet на интернет хоста csam. Csam отговаря с своя Ethernet адрес (в този пример адресите на Ethernet са с малки букви и интернет адреси). Това би изглеждало по-малко излишно, ако бяхме свършили tcpdump -n : arp, който има 128.3.254.6 кажа 128.3.254.68arp отговор 128.3.254.6 е на 02: 07: 01: 00: 01: c4
Ако бяхме свършили tcpdump -e , фактът, че първият пакет се излъчва и втората е от точка до точка, ще бъде видима: RTSG Broadcast 0806 64: arp, който има CSAM, казва rtsgCSAM RTSG 0806 64: арп отговор csam е в CSAM
За първия пакет това означава, че Ethernet адресът на източника е RTSG, дестинацията е адресът на излъчване на Ethernet, полето за тип съдържа хекс 0806 (тип ETHER_ARP) и общата дължина е 64 байта. TCP пакети (N.B.: Следващото описание предполага познаване на TCP протокола, описан в RFC-793. Ако не сте запознати с протокола, нито това описание, нито tcpdump ще ви бъдат много полезни) , Общият формат на протокола tcp е: src> dst: Flags data-seqno ack window спешни опции
Src и DST са източниците и целевите IP адреси и портове. Знамена са комбинация от S (SYN), F (FIN), P (PUSH) или R (RST) или единична "." (без флагове). Данните-seqno описва частта от пространството на секвенцията, обхваната от данните в този пакет (виж примера по-долу). Ack е последователният номер на следващите данни, очаква се другата посока на тази връзка. прозорец е броят на байтовете на буферното пространство за получаване на другата посока на тази връзка. Urg показва, че в пакета има "спешни" дан
Изходен формат на Tcpdump




