Tcpdump - فرمان لینوکس - فرمان یونیکس

نام

tcpdump - ترافیک تخلیه در یک شبکه

خلاصه

tcpdump [ -adflnNOpqRStuvxX ] [ -c تعداد ]

[ -C file_size ] [ -F file ]

[ -i interface ] [ -m module ] [ -r file ]

[ -s snaplen ] [ -T نوع ] [ -U کاربر ] [ -w file ]

[ -E الگویی: راز ] [ بیان ]

شرح

Tcpdump از هدرهای بسته در یک رابط شبکه چاپ می کند که با عبارت boolean مطابقت دارد . همچنین می توان با پرچم -w اجرا کرد که موجب ذخیره اطلاعات بسته به یک فایل برای تحلیل بعدی و / یا با flag -r می شود که باعث می شود خواندن آن از یک فایل بسته ذخیره شده به جای خواندن بسته ها از یک رابط شبکه در همه موارد، فقط بسته هایی که مطابقت دارند، توسط tcpdump پردازش می شوند.

Tcpdump اگر با پرچم -c اجرا نشود، همچنان گرفتن بسته ها را ادامه می دهد تا زمانی که توسط یک سیگنال SIGINT (تولید شده، برای مثال، با تایپ کردن کاراکتر وقفه خود، معمولا کنترل C) یا یک سیگنال SIGTERM (معمولا با کشتن تولید شده) (1) فرمان)؛ اگر با پرچم -c اجرا شود، بسته ها را ضبط می کند تا زمانی که توسط یک سیگنال SIGINT یا SIGTERM قطع شود یا تعداد مشخص شده بسته ها پردازش شود.

هنگامی که tcpdump بسته های ضبط را خاتمه می دهد، شمارش های زیر را گزارش می دهد:

بسته های "دریافت شده توسط فیلتر" (معنای این بستگی به سیستم عامل که شما در حال اجرا tcpdump و احتمالا در راه پیکربندی سیستم عامل - اگر یک فیلتر در خط فرمان مشخص شد، در برخی از سیستم عامل آن شمارش بسته ها بدون در نظر گرفتن اینکه آیا با عبارت فیلتر مطابقت داشتند و در سایر سیستم عامل ها فقط بسته هایی را که با عبارت فیلتر مطابقت داشتند را شمارش می کند و توسط tcpdump پردازش می شوند)؛

بسته های kernel '' (این تعداد بسته هایی است که به دلیل کمبود فضای بافر از طریق مکانیزم ضبط بسته در OS که tcpdump در حال اجرا است حذف شده است، در صورتی که سیستم عامل اطلاعاتی را به برنامه ها گزارش می کند؛ اگر نه، آن را به عنوان 0 گزارش).

در سیستم عامل هایی که سیگنال SIGINFO را پشتیبانی می کنند، مانند اکثر BSD ها، این شمارنده ها زمانی که یک سیگنال SIGINFO دریافت می کنند (تولید شده است، به عنوان مثال، با تایپ کردن کاراکتر `` status ''، معمولا کنترل T) و بسته های ضبط را ادامه خواهیم داد .

خواندن بسته ها از یک رابط شبکه ممکن است نیاز به امتیاز خاصی داشته باشد:

تحت SunOS 3.x یا 4.x با NIT یا BPF:

شما باید دسترسی به / dev / nit یا / dev / bpf را بخوانید.

تحت Solaris با DLPI:

شما باید دسترسی به خواندن / نوشتن را به دستگاه شبه شبکه ای مانند / dev / le داشته باشید . با این وجود، حداقل برخی از نسخه های سولاریس، این امر برای تسخیر کردن حالت tcpdump کافی نیست؛ در آن نسخه از Solaris، شما باید ریشه باشد، یا tecpdump باید setuid برای ریشه نصب شود، به منظور ضبط در حالت پیش فرض. توجه داشته باشید که در بسیاری از (شاید همه) رابطها، اگر شما در حالت پیشفرض ضبط نکنید، هیچ بستهی خروجی را نمیبینید، بنابراین ضبط در حالت پیش فرض انجام نمیشود بسیار مفید باشد.

تحت HP-UX با DLPI:

شما باید ریشه یا tcpdump باید setuid را برای ریشه نصب کنید.

تحت IRIX با snoop:

شما باید ریشه یا tcpdump باید setuid را برای ریشه نصب کنید.

تحت لینوکس:

شما باید ریشه یا tcpdump باید setuid را برای ریشه نصب کنید.

تحت واسط Ultrix و Digital UNIX / Tru64 UNIX:

هر کاربر می تواند ترافیک شبکه با tcpdump را ضبط کند. با این حال، هیچ کاربری (حتی فوق کاربر) نمیتواند در حالت پیوسته در یک رابط کاربری ضبط کند، مگر اینکه کاربر فوق کاربر بتواند از طریق آن pfconfig (8) در حالت اینترفیس فعال را فعال کند و هیچ کاربر (حتی کاربر سوپر ) می تواند ترافیک Unicast دریافت شده توسط دستگاه را بر روی یک واسط دریافت کند، مگر اینکه کاربر فوق العاده با استفاده از pfconfig قادر به فعال کردن عمل copy-all-mode در آن اینترفیس باشد ، بنابراین ضبط بسته های مناسب در یک رابط احتمالا نیاز به حالت پیش فرض یا کپی حالت تمام حالت، و یا هر دو حالت عمل، در آن رابط فعال می شود.

تحت BSD:

شما باید دسترسی به / dev / bpf * را بخوانید.

خواندن یک فایل بسته ذخیره شده نیازی به امتیاز خاصی ندارد.

گزینه ها

-a

تلاش برای تبدیل شبکه و پخش آدرس به نام.

-c

خروج پس از دریافت بسته شمارش .

-C

قبل از نوشتن یک بسته خام به یک فایل save، بررسی کنید که آیا فایل در حال حاضر بزرگتر از file_size است و اگر چنین است، savefile فعلی را ببندید و آن را باز کنید. Savefiles پس از اولین savefile با نام flag -w مشخص شده است، با عدد بعد از آن، شروع از 2 و ادامه به بالا. واحدهای file_size میلیون ها بایت (1،000،000 bytes، نه 1،048،576 bytes) است.

-d

کد تقلب بسته بندی کامپایل شده را در فرم قابل خواندن انسانی به خروجی استاندارد و توقف متوقف کنید.

-DD

تجزیه و تحلیل بسته بندی بسته بندی کد به عنوان یک قطعه برنامه C.

-ddd

کد تقسیم بسته بسته بندی به عنوان عدد دهدهی (پیش از آن با یک شمارش).

هدر سطح لینک را در هر خط تخلیه چاپ کنید.

-E

استفاده از algo: راز برای رمزگشایی بسته های IPsec ESP. الگوریتمها ممکن است عبارت des- cbc ، 3des-cbc ، blowfish- cbc ، rc3-cbc ، cast128-cbc یا none باشد. پیش فرض des-cbc است . توانایی رمزگشایی بسته ها تنها در صورت وجود tcpdump با رمزنگاری فعال شده است. مخفی کردن متن ASCII برای کلید خصوصی ESP. ما در این لحظه نمیتوانیم مقدار باینری خودسرانه را بیابیم. این گزینه بر اساس RFC2406 ESP، نه RFC1827 ESP است. این گزینه تنها برای اهداف اشکال زدایی است و استفاده از این گزینه با کلید "مخفی" دلسرد شده است. با ارائه کلید مخفی IPsec بر روی خط فرمان، آن را از طریق ps (1) و موارد دیگر قابل مشاهده برای دیگران است.

-f

آدرسهای اینترنتی اینترنتی خارجی را به صورت عددی به جای نمادین به نمایش بگذارید (این گزینه در نظر گرفته شده برای آسیب جدی مغز در سرور یو پی یو --- معمولا برای هرگز به اینترنت شماره های غیر محلی آویزان است).

-F

از فایل به عنوان ورودی برای عبارت فیلتر استفاده کنید. یک عبارت اضافی داده شده در خط فرمان نادیده گرفته می شود.

-من

گوش دادن در رابط اگر نامعلوم باشد، tcpdump لیست رابط سیستم را برای رابط کاربری کمترین و پیکربندی شده (به استثنای loopback) جستجو می کند. با انتخاب اولین بازی مطابقت می کند.

در سیستم های لینوکس با هسته های 2.2 و یا بالاتر، یک استدلال رابط کاربری `` هر '' می تواند برای ضبط بسته ها از تمام واسط ها استفاده شود. توجه داشته باشید که ضبط در دستگاه `` هر '' در حالت پیش فرض انجام نخواهد شد.

-l

خط Stdout را بافر کنید. اگر میخواهید اطلاعات را هنگام ضبط آن ببینید، مفید است. به عنوان مثال،
`` tcpdump -l | tee dat '' یا `` tcpdump -l> dat و tail -f dat '' می باشد.

-m

بارگذاری SMI MIB ماژول تعریف از ماژول فایل. این گزینه می تواند چندین بار برای بارگیری چندین ماژول MIB به tcpdump استفاده شود .

-n

نشانی های میزبان را به نام ها تبدیل نکنید. این می تواند برای جلوگیری از جستجوی DNS استفاده شود.

-nn

پروتکل ها و شماره های پورت و غیره را به نام ها تبدیل نکنید.

-N

نام دامنه نام دامنه را نشانی ندهید. به عنوان مثال، اگر شما این پرچم را داده اید، tcpdump به جای nic.ddn.mil '' nic '' را چاپ می کند.

-O

آیا بهینه سازی کد تطبیق بسته را اجرا نکنید. این تنها مفید است اگر شما مشکوک به یک اشکال در بهینه ساز است.

رابط کاربری را به حالت پیشفرض نگذارید . توجه داشته باشید که رابط کاربری ممکن است در برخی موارد دیگر در حالت غیر فعال باشد. از این رو، `-p 'نمیتواند به عنوان اختصار برای host {local-hw-addr} یا اتر پخش شود.

-q

سریع (آرام) خروجی اطلاعات پروتکل کمتری را چاپ کنید تا خطوط خروجی کوتاهتر شوند.

-R

فرض کنید بسته های ESP / AH بر اساس مشخصات قدیمی (RFC1825 تا RFC1829) باشد. اگر مشخص شود، tcpdump فیلد پیشگیری پخش را چاپ نخواهد کرد. از آنجایی که هیچ فیلد پروتکل نسخه ای در مشخصات ESP / AH وجود ندارد، tcpdump نمی تواند نسخه پروتکل ESP / AH را بیابد.

-r

خواندن بسته ها از فایل (که با گزینه -w ایجاد شده است). ورودی استاندارد مورد استفاده قرار می گیرد اگر فایل `` - '' باشد.

-S

چاپ مطلق، به جای نسبی، شماره توالی TCP.

-s

Snarf با بایت داده از هر بسته به جای پیش فرض 68 (با NIT SunOS، حداقل 96 در واقع) است. 68 بایت برای IP، ICMP، TCP و UDP کافی است، اما ممکن است اطلاعات پروتکل را از سرور نام و بسته های NFS قطع کند (نگاه کنید به زیر). بسته های بسته به دلیل یک عکس فوری محدود در خروجی با `` [| proto ] ''، که در آن proto نام پروتکل سطح که در آن وقفه اتفاق افتاده است. توجه داشته باشید که گرفتن عکسهای بزرگتر هر دو زمان لازم برای پردازش بسته ها را افزایش می دهد و به طور موثر میزان بافر بسته را کاهش می دهد. این باعث می شود که بسته ها از بین بروند. شما باید دامنه را به کوچکترین عدد محدود کنید که اطلاعات پروتکل را به شما علاقه مند می کند. تنظیم کردن snaplen به 0 به معنای استفاده از طول مورد نیاز برای گرفتن کل بسته ها است.

-T

بسته های نیرو را با " بیان " انتخاب می کنند تا نوع مشخص شده تفسیر شود. در حال حاضر انواع شناخته شده عبارتند از cnfp (پروتکل سیسکو NetFlow)، rpc (پروتکل راه دور)، rtp (پروتکل برنامه های زمان واقعی)، rtcp (پروتکل کنترل برنامه های زمان واقعی)، snmp (پروتکل مدیریت ساده شبکه)، wat (ابزار ویژوال صوتی )، و WB (توزیع White Board).

نشانه زمانی را بر روی خط هر تخلیه چاپ نکنید .

-tt

زمان نشانه گذاری نشده را بر روی خط هر تخلیه چاپ کنید.

-U

امتیازات ریشه را از دست می دهد و کاربر را برای شناسایی کاربر و گروه ID به گروه اصلی کاربر تغییر می دهد .

توجه داشته باشید! لینوکس Red Hat به طور خودکار امتیازات کاربری را به `` pcap '' حذف می کند، اگر هیچ چیز دیگری مشخص نشده باشد.

-ttt

چاپ دلتا (در میکرو ثانیه) بین خط فعلی و قبلی در هر خط تخلیه.

-tttt

تایمر زمانی در فرمت پیشفرض چاپ شده توسط تاریخ در هر خط تخلیه انجام می شود.

-u

نسخه های NFS غیرقابتی را چاپ کنید.

-v

(کمی بیشتر) خروجی عمدی. برای مثال، زمان زندگی، شناسایی، طول کل و گزینه ها در یک بسته ی IP چاپ می شوند. همچنين ممكن است چنين پيكربندي هاي اضافي بسته اي مانند تأييد كنترل سري هدر IP و ICMP را فعال كند.

-vv

حتی بیشتر خروجی verbose. برای مثال، فیلدهای اضافی از بسته های پاسخ NFS چاپ می شوند و بسته های SMB به طور کامل رمزگشایی می شوند.

-vvv

حتی بیشتر خروجی verbose. به عنوان مثال، گزینه های ... با گزینه های -X telnet نیز در hex به چاپ می شوند.

-w

بسته های خام را به جای تجزیه و نوشتن و چاپ آن ها بنویسید. آنها بعدا می توانند با گزینه -r چاپ شوند. خروجی استاندارد استفاده می شود اگر فایل `` - '' باشد.

-ایکس

چاپ هر بسته (منهای هدر سطح لینک) در هگزا. کوچکتر از کل بسته یا بایت ها چاپ می شود. توجه داشته باشید که این کل لایه پیوند لایه است، بنابراین برای لایه های لینک که پد (به عنوان مثال اترنت)، بایت های پاک سازی نیز چاپ خواهد شد زمانی که بسته لایه بالاتر کوتاه تر از پلاگین مورد نیاز است.

-ایکس

هنگام چاپ شصت، چاپ عروس نیز. بنابراین اگر -x نیز تنظیم شود، بسته در hex / ascii چاپ می شود. این بسیار مفید است برای تجزیه و تحلیل پروتکل های جدید. حتی اگر -x نیز تنظیم نشده باشد، برخی از قطعات برخی از بسته ها ممکن است در hex / ascii چاپ شوند.

اصطلاح

بسته هایی را انتخاب می کند که تخلیه می شوند. اگر هیچ علامت داده نشود، تمامی بسته های موجود در شبکه خالی می شوند. در غیر این صورت، تنها بسته هایی که بیان شده است "درست" خواهد شد رها شده است.

بیان شامل یک یا چند ابتکار است. اولویت ها معمولا شامل یک شناسه (نام یا شماره) است که پیش از یک یا چند رأی گیری قرار دارد. سه نوع متفاوت از تعریف وجود دارد:

تایپ کنید

رأی دهندگان می گویند که کدام نوع نام یا شماره شناسه مربوط به آن است. انواع ممکن است میزبان ، شبکه و پورت باشد. مثلا: `host foo '،' net 128.3 '،' port 20 '. اگر هیچ تعریف نوعی وجود نداشته باشد، میزبان فرض شده است.

رشته

Qualifiers یک مسیر انتقال خاص را به و یا از شناسه مشخص می کند . جهت های ممکن عبارتند از src ، dst ، src یا dst و src و dst . مثلا: `src foo '،` dst net 128.3'، `src یا dst port ftp-data '. در صورتی که هیچ کدبندی از فیلد وجود نداشته باشد، src یا dst فرض می شود. برای لایه پیوند null (یعنی نقطه به پروتکل های نقطه ای مانند لغزش)، می توان از ویژگی های ورودی و خروجی برای مشخص کردن یک جهت مورد نظر استفاده کرد.

پروتئین

رقیب مسابقه را به یک پروتکل خاص محدود می کند. protos ممکن است: اتر ، fddi ، tr ، ip ، ip6 ، arp ، rarp ، decnet ، tcp و udp . مثلا: `ether src foo '،' arp net 128.3 '،' tcp port 21 '. اگر هیچ تعریف پروتئینی وجود نداشته باشد، تمام پروتکل ها مطابق با نوع فرض می شود. به عنوان مثال `src foo 'به معنی` (ip یا arp یا rarp) src foo' (به استثنای دومی نحوه ی قانونی نیست)؛ 'net bar' یعنی `ip یا arp یا rarp 'net bar' و 'port 53' means `(tcp یا udp) پورت 53 '.

[`fddi 'در واقع یک نام مستعار برای` اتر' است؛ آنالیز کننده رفتار آنها را به همان معنی "سطح لینک داده ها مورد استفاده در رابط شبکه مشخص شده" تلقی می کند. "هدرهای FDDI حاوی آدرس های منبع و مقصد اترنت هستند و اغلب شامل انواع بسته های اترنت هستند، بنابراین شما می توانید بر روی این فیلد های FDDI همانند زمینه های اترنت مشابه. هدرهای FDDI همچنین حاوی فیلدهای دیگر هستند، اما شما نمیتوانید آنها را به صراحت در یک عبارت فیلتر نامگذاری کنید.

به طور مشابه، `tr 'یک نام مستعار برای` اتر' است؛ بیانیه های پاراگراف قبلی در مورد هدر های FDDI نیز در مورد کلاهک Token Ring اعمال می شود.]

علاوه بر موارد فوق، برخی از کلمات کلیدی ویژه "اولیه" وجود دارند که از الگو استفاده نمی کنند: دروازه ، پخش ، عبارات کمتر ، بزرگتر و ریاضی. همه اینها در زیر شرح داده شده است.

عبارات فیلتر پیچیده تر با استفاده از کلمات و یا ترکیب اولیه و یا ترکیب اولیه صورت می گیرد. مثلا: host foo و نه port ftp و نه ftp-data port. برای صرفه جویی در تایپ، لیست های واجد شرایط یکسان می تواند حذف شود. مثلا: `tcp dst port ftp یا ftp-data یا domain 'دقیقا همانند` tcp dst port ftp یا tcp dst port ftp-data یا tcp dst port domain' است.

اولویت های مجاز عبارتند از:

host میزبان dst

درست است که قسمت مقصد بسته IPv4 / v6 میزبان است که ممکن است یک آدرس یا یک نام باشد.

host میزبان src

درست است که فیلد منبع IPv4 / v6 از بسته میزبان است .

میزبان میزبان

درست است که آیا منبع IPv4 / v6 یا مقصد بسته است میزبان است . هر علامت میزبان بالا می تواند با کلمات کلیدی، ip ، arp ، rarp یا ip6 به صورت زیر نوشته شود:

host میزبان ip

که معادل آن است:

اتر پروتویپی و میزبان میزبان

اگر میزبان یک نام با چندین آدرس IP باشد، هر آدرس برای یک مسابقه بررسی خواهد شد.

اتر dst ehost

درست است که آدرس مقصد اترنت ehost باشد. Ehost ممکن است نامی از / etc / ethers یا یک عدد باشد (برای فرمت عددی، اترها (3N) را ببینید).

اتر src ehost

درست است که آدرس منبع اترنت ehost است .

اتر میزبان ehost

درست است که یا منبع اترنت یا مقصد مقصد، ehost باشد.

میزبان دروازه

درست است که بسته از میزبان به عنوان یک دروازه استفاده کند. به عنوان مثال، منبع اترنت یا مقصد مقصد میزبان بود، اما نه منبع IP و نه مقصد IP میزبان بود. میزبان باید یک نام باشد و باید توسط مکانیسم حل و فصل آدرس میزبان دستگاه به آدرس آی پی (نام میزبان، DNS، NIS، و غیره) و توسط قطعنامه آدرس میزبان دستگاه به آدرس اترنت مکانیزم (/ etc / ethers، و غیره). (عبارت معادل آن است

میزبان اتر میزبان ehost و host نیست

که می تواند با هر نام یا عدد برای میزبان / ehost استفاده شود .) این نحو در حال حاضر در تنظیمات فعال شده با IPv6 کار نمی کند.

net net net

درست است که آدرس IPv4 / v6 مقصد بسته دارای تعداد شبکه ای از شبکه است . شبکه ممکن است یک نام از / etc / networks یا یک شماره شبکه باشد ( برای جزئیات بیشتر شبکه ها را ببینید (4 ).

شبکه خالص src

درست است که آدرس منبع IPv4 / v6 بسته دارای تعداد شبکه ای از شبکه است .

خالص خالص

حقیقت این است که اگر آدرس IPv4 / v6 یا آدرس مقصد بسته باشد، تعداد شبکه شبکه است .

خالص ماسک net mask

درست است که آدرس IP با net mask مخصوص شبکه باشد. ممکن است با src یا dst واجد شرایط باشد توجه داشته باشید که این نحو برای شبکه IPv6 معتبر نیست.

net net / len

درست است که آدرس IPv4 / v6 با net mask len bit ها متناسب باشد. ممکن است با src یا dst واجد شرایط باشد

پورت پورت dst

درست است که بسته ip / tcp، ip / udp، ip6 / tcp یا ip6 / udp باشد و ارزش port port value را داشته باشد. پورت می تواند یک عدد یا نامی باشد که در / etc / services استفاده می شود (see tcp (4P) و udp (4P)). اگر نام مورد استفاده قرار گیرد، هر دو شماره پورت و پروتکل بررسی می شوند. اگر نام یک شماره یا مبهم استفاده شود، فقط شماره پورت بررسی می شود (مثلا dst port 513 ترافیک tcp / login را باز می کند و udp / who ترافیک و دامنه پورت هر دو tcp / domain و ترافیک udp / domain را چاپ می کند).

پورت port src

درست است که بسته دارای مقدار پورت منبع پورت است.

بندر بندر

درست است که اگر پورت منبع یا مقصد پورت باشد. هر یک از عبارات بالا را می توان با کلمات کلیدی، tcp یا udp اضافه کرد ، مانند:

پورت پورت src tcp

که فقط بسته های TCP را که پورت منبع آن پورت است، مطابقت می دهد.

طول کمتر

درست است که بسته دارای طول کمتر یا برابر با طول باشد. این معادل است:

len <= طول

طول بیشتر

درست است که بسته دارای طول بزرگتر یا برابر با طول باشد. این معادل است:

len> = طول

IP Pro Protocol

درست است که بسته یک بسته IP باشد ( ip (4P) را ببینید) پروتکل نوع پروتکل . پروتکل می تواند یک عدد یا یکی از نام های icmp ، icmp6 ، igmp ، igrp ، pim ، ah ، esp ، vrrp ، udp ، یا tcp باشد. توجه داشته باشید که شناسه tcp ، udp ، and icmp نیز کلمات کلیدی هستند و باید از طریق backslash (\) که \\ در C-shell پوشیده شده است، فرار کنند. توجه داشته باشید که این primitive زنجیره هدر پروتکل را تعقیب نمیکند.

پروتکل پروتکل ip6

درست است که بسته یک بسته IPv6 پروتکل نوع پروتکل است . توجه داشته باشید که این primitive زنجیره هدر پروتکل را تعقیب نمیکند.

پروتکل IP6 protochain

درست است که بسته بسته IPv6 است و شامل هدر پروتکل با نوع پروتکل در زنجیره هدر پروتکل آن است. مثلا،

ip6 protochain 6

هر بسته IPv6 با هدر پروتکل TCP در زنجیره هدر پروتکل مطابقت دارد. بسته ممکن است شامل، عنوان هدر احراز هویت، هدر مسیریابی یا هدر گزینه hop-by-hop، بین هدر IPv6 و هدر TCP باشد. کد BPF منتشر شده توسط این ابتدایی پیچیده است و نمی تواند با کد بهینه ساز BPF در tcpdump بهینه شود، بنابراین این می تواند تا حدودی کند باشد.

IP Protochain پروتکل

معادل پروتکل ip6 protochain ، اما این برای IPv4 است.

پخش اتر

درست است که بسته یک بسته پخش اترنت است. کلید واژه اتر اختیاری است.

ip پخش

درست است که بسته یک بسته پخش IP است. این برای کنوانسیون های پخش تمام صفر و همه موارد را بررسی می کند و ماسک زیر شبکه محلی را می بیند.

اتر چند رسانه ای

درست است که بسته یک بسته multicast اترنت است. کلید واژه اتر اختیاری است. این کوتاه برای اتر [0] و 1! = 0 است.

چندپخشی IP

درست است که بسته یک بسته چندپخشی IP باشد.

چندپخشی ip6

درست است که بسته یک بسته چندپخشی IPv6 است.

اتر پروتو پروتو

درست است که بسته از نوع اتر پروتکل است . پروتکل می تواند یک شماره یا یکی از نام های ip ، ip6 ، arp ، rarp ، atalk ، aarp ، dececk ، sca ، lat ، mopdl ، moprc ، iso ، stp ، ipx یا netbeui باشد. توجه داشته باشید این شناسه ها همچنین کلمات کلیدی هستند و باید از طریق backslash (\) فرار کنند.

[در مورد FDDI (به عنوان مثال، ' پروتکل FDDI arp ') و Token Ring (به عنوان مثال، ` TR پروتکل arp ')، برای اکثر پروتکل ها، شناسایی پروتکل از سرآیند کنترل منطقی کنترل (LLC) 802.2 معمولا در بالای سر FDDI یا Token Ring لایه بندی می شود.

هنگام فیلتر کردن بیشتر شناسه های پروتکل در FDDI یا Token Ring، tcpdump فقط فیلد پروتکل ID یک سربر LLC را در فرمت SNAP با یک شناسه واحد سازمانی (OUI) 0x000000 برای اترنت encapsulated بررسی می کند؛ آن را بررسی نمی کند که آیا بسته در قالب SNAP با OUI 0x000000 است.

استثنائات ایزو هستند، برای آن DSAP (مقصد دسترسی سرویس نقطه دسترسی) و SSAP (نقطه دسترسی سرویس منبع) در header، stp و netbeui را بررسی می کند، جایی که DSAP از header LLC را بررسی می کند و atalk ، جایی که آن برای یک بسته فرمت SNAP با OUI 0x080007 و اپلت اپلت چک می کند.

در مورد اترنت، tcpdump فیلد نوع اترنت را برای اکثر پروتکل ها بررسی می کند؛ استثنائات are iso ، sap و netbeui است که برای یک فریم 802.3 مورد بررسی قرار می گیرد و سپس هدر LLC را همانطور که برای FDDI و Token Ring انجام می شود، بررسی می کند ، که در آن برای اپلت اپلت در یک قاب اترنت و برای یک بسته فرمت SNAP همانطور که برای FDDI و Token Ring انجام می شود ، که در آن برای اپلت اپلت ARP در هر یک از فریم های اترنت یا یک فریم SNAP 802.2 با OUI 0x000000 و ipx بررسی می شود ، در حالی که برای نوع ایکس IPX در یک فریم اترنت، DSAC IPX در header LLC، 802.3 بدون encapsulation هدر LLC با IPX و نوع ایکس IPX در یک قاب SNAP.]

میزبان src decocket

درست است که آدرس منبع DECNET میزبان است ، که ممکن است یک آدرس از فرم `` 10.123 '' یا یک نام میزبان DECNET باشد. [پشتیبانی از نام میزبان DECNET فقط در سیستم های Ultrix موجود است که برای اجرای DECNET پیکربندی شده اند.]

decnet میزبان dst

درست است که آدرس مقصد DECNET میزبان است .

میزبان میزبان decnet

درست است که آدرس مقصد یا مقصد DECNET میزبان است .

ip ، ip6 ، arp ، rarp ، atalk ، aarp ، dececk ، iso ، stp ، ipx ، netbeui

اختصارات برای:

اتر پرو پرو

جایی که p یکی از پروتکل های فوق است.

لات ، moprc ، mopdl

اختصارات برای:

اتر پرو پرو

جایی که p یکی از پروتکل های فوق است. توجه داشته باشید که tcpdump در حال حاضر نمی داند چگونه این پروتکل ها را تجزیه کند.

vlan [vlan_id]

درست است که بسته یک بسته VLAN IEEE 802.1Q است. اگر [vlan_id] مشخص شده باشد، فقط درست است بسته دارای vlan_id مشخص شده است. توجه داشته باشید که اولین کلمه کلیدی VLAN در بیان، تغییرات رمزگشایی را برای باقیمانده بیان بر اساس این فرض که بسته یک بسته VLAN است، تغییر می دهد.

tcp ، udp ، icmp

اختصارات برای:

ip proto p یا ip6 proto p

جایی که p یکی از پروتکل های فوق است.

پروتکل ایزو پروتو

درست است که بسته یک بسته پروتکل پروتکل پروتکل (OSI) است . پروتکل می تواند یک شماره یا یکی از اسامی clnp ، esis یا isis باشد.

clnp ، esis ، isis

اختصارات برای:

iso proto p

جایی که p یکی از پروتکل های فوق است. توجه داشته باشید که tcpdump کار ناقص تجزیه این پروتکل ها را انجام می دهد.

expr relop expr

درست است که رابطه وجود دارد، جایی که relop یکی از>، <،> =، <=، = ،! =، و expr است یک عبارت محاسباتی است که شامل ثابت های عدد صحیح (بیان شده در نحو استاندارد C)، اپراتورهای باینری عادی [ ، -، *، /، &، |]، یک اپراتور طول، و دسترسی به اطلاعات بسته های خاص. برای دسترسی به داده های داخل بسته، از نحو زیر استفاده کنید:

proto [ expr : اندازه ]

Proto یکی از پروتکل های اتر، fddi، tr، ppp، slip، link، ip، arp، rarp، tcp، udp، icmp یا ip6 است و لایه پروتکل را برای عملیات فهرست نشان می دهد. ( اتر، fddi، tr، ppp، لغزش و لینک همه اشاره به لایه لینک است.) توجه داشته باشید که tcp، udp و سایر پروتکل های پروتکل بالا لایه فقط برای IPv4، نه IPv6 اعمال می شود (این در آینده تنظیم می شود). Offset بایت نسبت به لایه پروتکل نشان داده شده توسط Expr داده می شود. اندازه اختیاری است و نشان دهنده تعداد بایت ها در زمینه مورد علاقه است. می توان آن را یک، دو یا چهار، و پیش فرض به یک. اپراتور طول، نشان دهنده کلمه کلیدی len است ، طول بسته را می دهد.

به عنوان مثال، ` eether [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 -redirect ، icmp-echo ، icmp -routeradvert ، icmp -routersolice ، icmp-timxceed ، icmp-paramprob ، icmp-tstamp ، icmp -tstampreply ، icmp -ireq ، icmp -ireqreply ، icmp-maskreq ، icmp-maskreply .

مقادیر فیلدهای TCP زیر در دسترس هستند: tcp-fin ، tcp-syn ، tcp-rst ، tcp-push ، tcp-push ، tcp-ack ، tcp-urg .

اولیه می تواند ترکیب شود با استفاده از:

یک گروه پرشده از ابتدایی و اپراتورها (پرانتز به Shell خاص است و باید فرار کرد).

عقب نشینی ( !! یا نه )

تلفیق (` && ' یا` و ')

جایگزینی (` || 'یا` یا ').

نزاع بالاترین اولویت دارد. جایگزینی و هماهنگ سازی دارای اولویت مساوی هستند و از سمت چپ به راست همکاری می کنند. توجه داشته باشید که صراحت و نشانه ها، و نه هماهنگی، در حال حاضر برای اتصال باید مورد نیاز باشد.

اگر یک شناسه بدون کلمه کلیدی داده شود، کلید واژه جدیدی فرض شده است. مثلا،

نه میزبان و نه آیس

کوتاه است

نه میزبان و نه میزبان

که نباید با آنها اشتباه گرفت

نه (host vs or ace)

استدلالهای بیان می توانند به tcpdump به عنوان یک آرگومان واحد یا به عنوان چند استدلال منتقل شوند، هر کدام راحت تر است. به طور کلی، اگر عبارت حاوی metacharacters های Shell باشد، آن را آسان تر به عنوان یک استدلال نقل قول منتقل می کند. استدلال چندگانه قبل از تجزیه، با فضاهای مرتبط است.

مثال ها

برای چاپ تمام بسته های ورودی یا خروج از ساحل :

tcpdump host sunset

برای چاپ ترافیک بین helios و یا داغ یا ACE :

tcpdump host helios و \ (داغ یا ACE \)

برای چاپ تمام بسته های IP بین آیس و هر میزبان به جز هلیو :

tcpdump ip host ace و helios نیست

برای چاپ تمام ترافیک بین میزبان ها و میزبان های محلی در برکلی:

tcpdump net ucb-ether

برای چاپ همه ترافیک ftp از طریق gateway اینترنت snup : (توجه داشته باشید که بیان شده است برای جلوگیری از پوسته از (اشتباه) تفسیر پرانتز نقل قول شده است):

tcpdump gateway snup و (ftp port یا ftp-data)

برای چاپ ترافیک نه از منبع و نه مقصد برای میزبان های محلی (اگر شما دروازه به یکی دیگر از شبکه، این موارد هرگز نباید آن را بر روی شبکه محلی خود را).

tcpdump ip و شبکه محلی net

برای چاپ بسته های شروع و پایان (بستههای SYN و FIN) هر مکالمه TCP که شامل یک میزبان غیر محلی است.

tcpdump 'tcp [tcpflags] و (tcp-syn | tcp-fin)! = 0 و نه src و dst net netnet '

برای چاپ بسته های IP بیش از 576 بایت ارسال شده از طریق دروازه:

tcpdump gateway snup و ip [2: 2]> 576 '

برای چاپ بسته های پخش آی پی یا چند رسانه ای که از طریق پخش اترنت یا چندپخشی ارسال نشدند :

tcpdump 'ether [0] و 1 = 0 و ip [16]> = 224'

برای چاپ تمام بستههای ICMP که درخواست / پاسخ اکو ندارند (یعنی بستههای پینگ):

tcpdump 'icmp [icmptype]! = icmp-echo و icmp [icmptype]! = icmp-echoreply'

فرمت خروجی

خروجی tcpdump وابسته به پروتکل است. شرح زیر و نمونه های بسیاری از فرمت های زیر را ارائه می دهد.

سرصفحه های لینک

اگر گزینه "-e" داده شود، هدر سطح لینک چاپ می شود. در اترنت، آدرس مقصد و مقصد، پروتکل و طول بسته چاپ می شوند.

در شبکه های FDDI، گزینه "-e" باعث می شود که tcpdump برای چاپ کادر "کنترل قاب"، آدرس منبع و مقصد و طول بسته باشد. (فیلد کنترل قاب) تفسیر بقیه بسته را تعریف می کند. بسته های عادی (مانند آنهایی که شامل دیتاگرام های IP هستند) بسته های `async 'هستند، با مقدار اولویت بین 0 و 7، به عنوان مثال، async4 . فرض می شود که بسته ها حاوی بسته 802.2 Logical Link Control (LLC) باشند؛ هدر LLC چاپ می شود اگر این یک Datagram ایزو یا بسته SNAP به اصطلاح نیست.

در شبکه های Token Ring، گزینه "-e" باعث می شود که tcpdump برای کنترل "کنترل دسترسی" و "کنترل قاب"، آدرس های منبع و مقصد و طول بسته را چاپ کند. همانطور که در شبکه های FDDI، بسته ها فرض می شود حاوی یک بسته LLC هستند. صرف نظر از اینکه آیا گزینه "-e" مشخص شده یا نه، اطلاعات مسیریابی منبع برای بسته های منبع هدایت شده چاپ می شود.

(NB: شرح زیر، آشنایی با الگوریتم فشرده سازی SLIP که در RFC-1144 شرح داده می شود، می آید.)

در لینک های SLIP، نشانگر جهت (`` I '' برای ورودی، `` O '' برای خروجی)، نوع بسته و اطلاعات فشرده چاپ شده است. نوع بسته برای اولین بار چاپ می شود. سه نوع ip ، utcp و ctcp هستند . اطلاعات پیوند اضافی برای بسته های IP چاپ نشده است. برای بسته های TCP، شناسه اتصال بر اساس نوع تایپ شده است. اگر بسته فشرده شود، هدر کد شده آن چاپ می شود. موارد خاص به عنوان * S + n و * SA + n چاپ شده اند ، که n مقداري است که تعداد توالي (يا شماره توالي و ack) تغيير کرده است. اگر این یک مورد خاص نیست، تغییرات صفر و یا بیشتر چاپ می شود. یک تغییر با U (نشانگر فوری)، W (پنجره)، A (ack)، S (شماره توالی) و I (ID بسته) نشان داده می شود، به دنبال دلتا (+ n یا -n) یا یک مقدار جدید (= n) در نهایت، مقدار داده ها در بسته و طول هدر فشرده چاپ می شود.

به عنوان مثال، خط زیر یک بسته TCP فشرده خارج شده را نشان می دهد، با شناسه اتصال ضمنی؛ ack به 6 تغییر کرده است، شماره توالی 49، و شناسه بسته 6؛ 3 بایت داده و 6 بایت هدر فشرده وجود دارد:

O ctcp * A + 6 S + 49 I + 6 3 (6)

ARP / RARP بسته ها

خروجی Arp / rarp نوع درخواست و استدلال های آن را نشان می دهد. فرمت در نظر گرفته شده است که خود توضیحی است. در اینجا یک نمونه کوتاه از آغاز rlogin از rtsg میزبان به csam میزبان گرفته شده است :

arp چه کسی است که به rtsg arp پاسخ csam است در CSAM است

خط اول می گوید که rtsg یک بسته ARP ارسال کرد که درخواست آدرس اترنت csam میزبان اینترنتی را داشته باشد. Csam با آدرس اترنت خود پاسخ می دهد (در این مثال، آدرس اترنت در کلیپ ها و آدرس های اینترنتی در حروف کوچک است).

اگر تابلوی tcpdump -n را انجام داده اید، این کار کمتر از حد معمول خواهد بود.

arp who-128.3.254.6 به 128.3.254.68 arp پاسخ 128.3.254.6 است در 02: 07: 01: 00: 01: C4

اگر ما tcpdump -e را انجام دادیم، این واقعیت که اولین بسته پخش می شود و دوم نقطه به نقطه قابل مشاهده است:

RTSG Broadcast 0806 64: arp چه کسی csam را به rtsg CSAM RTSG 0806 64: arp پاسخ csam است در CSAM

برای اولین بسته این می گوید که آدرس منبع اترنت RTSG است، مقصد پخش آدرس اترنت است، نوع فیلد شامل hex 0806 (نوع ETHER_ARP) و طول کل 64 بایت است.

بسته های TCP

(NB: شرح زیر فرض می کند آشنایی با پروتکل TCP که در RFC-793 شرح داده شده است. اگر شما با پروتکل آشنا نیستید، نه این توضیحات و نه tcpdump برای شما بسیار مفید خواهد بود.)

فرمت عمومی یک خط پروتکل TCP:

src> dst: flags data-seqno ack گزینه های فوری

Src و dst مقصد و مقصد آدرس های IP و پورت هستند. پرچم ها ترکیبی از S (SYN)، F (FIN)، P (PUSH) یا R (RST) یا یک "." هستند. (بدون پرچم). Data-seqno بخشی از فضای دنباله را تحت پوشش داده ها در این بسته توصیف می کند (به مثال زیر مراجعه کنید). Ack تعداد ترتیب داده های بعدی مورد انتظار جهت دیگر در این اتصال است. پنجره تعداد بایت های فضای دریافت کننده بافر است که جهت دیگر در این اتصال وجود دارد. Urg نشان می دهد که داده های فوری در بسته وجود دارد. گزینه ها گزینه های tcp در محدوده زاویه بسته (به عنوان مثال، ) محصور شده اند.

Src، Dst و پرچم همیشه حضور دارند. زمینه های دیگر به محتویات هدر پروتکل TCP پروتکل بستگی دارند و تنها در صورت لزوم خروجی می گیرند.

در اینجا بخش باز کردن rlogin از rtsg میزبان به host csam است .

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. ورود: . ack 1 win 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 win 4096 csam.login> rtsg.1023:. ack 2 win 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 win 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 win 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 win 4077 urg 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 win 4077 urg 1

خط اول می گوید که پورت 1023 tcp در rtsg یک بسته برای ورود به سیستم در csam ارسال کرد. S نشان می دهد که پرچم SYN تنظیم شده است. شماره توالی بسته 768512 بود و حاوی اطلاعاتی نبود. (علامت 'first: last (nbytes)' که به معنی شماره های توالی برای اولین بار تا آخرین بایت داده های کاربر است اما نه شامل آخرین بایت های نایتسایت است.) هیچ آیتم پشتیبانی از piggy backed وجود نداشت، پنجره دریافت در دسترس 4096 bytes بود و یک گزینه حداکثر-segment-size وجود دارد که درخواست یک mss از 1024 بایت را دارد.

Csam با یک بسته مشابه پاسخ می دهد، مگر آنکه شامل ack پشتیبانی piggy برای SYN rtsg باشد. Rtsg سپس SYN csam را فعال می کند. `. ' بدین معناست که هیچ پرچم تنظیم نشده است. این بسته حاوی اطلاعاتی نیست، بنابراین هیچ شماره توالی داده وجود ندارد. توجه کنید که شماره توالی ack یک عدد صحیح کوچک است (1). اولین بار tcpdump یک مکالمه tcp را می بیند، شماره توالی را از بسته چاپ می کند. در بسته های بعدی مکالمه، تفاوت بین شماره توالی بسته فعلی و این شماره توالی اولیه چاپ می شود. این به این معنی است که شماره های توالی پس از اولین می تواند به عنوان موقعیت های بایت نسبی در جریان داده مکالمه (با اولین بایت داده هر جهت یک 1) تفسیر شود. `-S 'این ویژگی را برطرف می کند، و شماره های توالی اصلی را خروجی می دهد.

در خط 6، rtsg csam 19 بایت داده (بایت های 2 تا 20 را در سمت rtsg -> csam مکالمه) ارسال می کند. پرچم PUSH در بسته بسته شده است. در خط 7، csam می گوید که داده ها ارسال شده توسط rtsg تا به جز بات 21 نیستند. اکثر این اطلاعات ظاهرا در بافر سوکت نشسته اند، زیرا پنجره دریافت csam 19 بایت کوچکتر شده است. Csam یک بایت داده را به rtsg در این بسته ارسال می کند. در خطوط 8 و 9، csam دو بایت از داده های فوری، تحت فشار به rtsg ارسال می کند.

اگر عکس فوری به اندازه کافی کوچک باشد که tcpdump هدر کامل TCP را ضبط نکند، آن را به همان اندازه که می تواند عنوان هدر را تفسیر کند و سپس گزارش می کند `` [| tcp ] '' برای نشان دادن باقی مانده نمی تواند تفسیر شود. اگر هدر حاوی گزینه جعلی باشد (یکی با طولی که خیلی کوچک است یا فراتر از انتهای هدر)، tcpdump آن را `` [ انتخاب بد ] '' گزارش می کند و هیچ گزینه ای دیگر را تفسیر نمی کند (زیرا غیرممکن است جایی که آنها شروع می کنند) اگر طول هدر نشان دهنده گزینه ها باشد اما طول دیتاگرام IP به اندازه کافی برای گزینه هایی که در واقع وجود دارد، کافی نیست، tcpdump آن را به عنوان `` [ طول hdr بد } '' گزارش می کند.

ضبط بسته های TCP با ترکیب خاص پرچم (SYN-ACK، URG-ACK، و غیره)

8 بیت در بخش بیت کنترل هدر TCP وجود دارد:

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

بیایید فرض کنیم که ما می خواهیم بسته هایی را که در ایجاد یک اتصال TCP مورد استفاده قرار می گیرند تماشا کنیم. به یاد بیاورید که TCP از یک پروتکل دستیابی 3 طرفه زمانی استفاده می کند که یک اتصال جدید را راه اندازی می کند؛ دنباله ارتباط با توجه به بیت های کنترل TCP است

1) تماس گیرنده SYN را ارسال می کند

2) گیرنده با SYN، ACK پاسخ می دهد

3) تماس گیرنده ACK را ارسال می کند

در حال حاضر ما علاقه مند به گرفتن بسته هایی هستیم که فقط مجموعه ای از SYN را داریم (مرحله 1). توجه داشته باشید که ما بسته از مرحله 2 (SYN-ACK) را فقط یک SYN اولیه ساده نمی خواهیم. چیزی که ما نیاز داریم یک عبارت فیلتر درست برای tcpdump است .

به یاد بیاورید ساختار یک هدر TCP بدون گزینه:

0 15 31 ---------------------------------------------- ------------------ | پورت منبع. | بندر مقصد | -------------------------------------------------- --------------- | شماره توالی | -------------------------------------------------- --------------- | شماره تایید | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | اندازه پنجره | -------------------------------------------------- --------------- | کلمۀ TCP | نشانگر فوری | -------------------------------------------------- ---------------

هدر TCP معمولا 20 اکتبر داده را نگه می دارد، مگر اینکه گزینه ها وجود داشته باشند. خط اول نمودار شامل اکتبر 0-3، خط دوم نشان می دهد اکتبر 4 - 7 و غیره

شروع به شمارش با 0، بیت های مربوط TCP مربوطه در اکتبر 13 موجود می باشد:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | اندازه پنجره | ---------------- | --------------- | --------------- | - --------------- | | 13 octet | | |

بیایید نگاهی دقیق تر به اکتیو داشته باشیم. 13:

| | | --------------- | | C | E | U | A | P | R | S | F | | --------------- | | 7 5 3 0 |

این ها بیت های کنترل TCP هستند که ما علاقه مند هستیم. تعداد بیت های این اکتت را از 0 تا 7 به سمت راست به چپ شمارش کردیم، بنابراین بیت PSH بیتی 3 است، در حالی که بیت URG شماره 5 است.

به یاد بیاورید که ما می خواهیم بسته ها را فقط با SYN تنظیم کنیم. بیایید ببینیم چه اتفاقی برای 13 اکتبر رخ می دهد اگر دیتاگرام TCP با بیت SYN در هدر آن وارد شود:

| C | E | U | A | P | R | S | F | | --------------- | | 0 0 0 0 0 0 1 0 | | --------------- | | 7 6 5 4 3 2 1 0 |

در بخش کنترل بیت ها می بینیم که فقط شماره بیت 1 (SYN) تنظیم شده است.

فرض کنید که اعداد 13 اعداد یک عدد صحیح بدون علامت 8 بیتی در دستور بایت شبکه هستند، مقدار باینری این اکتوست

00000010

و نماد اعشاری آن است

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

ما تقریبا به پایان رسید، زیرا اکنون می دانیم که اگر فقط SYN تنظیم شود، مقدار اکتیو 13 در هدر TCP، هنگامی که به عنوان یک عدد صحیح بدون علامت 8 بیتی در دستور بایت شبکه تفسیر شود، باید دقیقا 2 باشد.

این رابطه را می توان بیان کرد

tcp [13] == 2

ما می توانیم از این عبارت به عنوان فیلتر برای tcpdump استفاده کنیم تا بسته هایی را که تنها SYN دارند تعیین کنیم:

tcpdump -i xl0 tcp [13] == 2

بیان می گوید: "اجازه دهید اکتیو 13 یک دیتاگرام TCP دارای مقدار دهدهی 2" باشد، دقیقا همان چیزی است که ما می خواهیم.

اکنون فرض کنید که ما باید بستههای SYN را ضبط کنیم، اما لازم نیست که ACK یا هر بیت کنترل دیگر TCP در همان زمان تنظیم شود. بیایید ببینیم که چه اتفاقی برای اکتاو 13 رخ می دهد وقتی یک دیتاگرام TCP با مجموعه SYN-ACK وارد می شود:

| C | E | U | A | P | R | S | F | | --------------- | | 0 0 0 1 0 0 1 0 | | --------------- | | 7 6 5 4 3 2 1 0 |

در حال حاضر بیت 1 و 4 در اکتبر 13 تنظیم شده است. مقدار باینری اکتبر 13 است


00010010

که به دهدهی ترجمه می شود

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

در حال حاضر ما نمی توانیم فقط در عبارت فیلتر tcpdump از 'tcp [13] == 18' استفاده کنیم، زیرا تنها بسته هایی را که دارای SYN-ACK هستند انتخاب می کنند، اما نه کسانی که تنها با SYN تنظیم می شوند. به خاطر داشته باشید که ما اهمیتی نمی دهیم که ACK یا هر بیت کنترل دیگر تا زمانی که SYN تنظیم شده است تنظیم شود.

برای رسیدن به هدف ما نیاز به مقدار منطقی و مقدار باینری اکتاو 13 با مقدار دیگری برای حفظ بیت SYN. ما می دانیم که ما می خواهیم SYN را در هر مورد تنظیم کنیم، بنابراین منطقی و ارزش در اکتوست 13 با مقدار باینری SYN:

00010010 SYN-ACK 00000010 SYN و 00000010 (ما می خواهیم SYN) و 00000010 (ما می خواهیم SYN) -------- -------- = 00000010 = 00000010

ما می بینیم که این عملیات AND نتیجه مشابهی را ارائه می دهد بدون این که آیا ACK یا یک بیت کنترل دیگر TCP تنظیم شده است. نمایش دهدهی از مقدار AND و همچنین نتیجه این عملیات 2 (00000010 باینری) است، بنابراین ما می دانیم که برای بسته های دارای SYN مجموعه رابطه زیر باید درست باشد:

((مقدار اکتاو 13) و (2)) == (2)

این ما را به عبارت فیلتر tcpdump اشاره می کند

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

توجه داشته باشید که شما باید از یک نقل قول یا یک بکسلش در عبارت برای مخفی کردن AND ('&') کاراکتر خاص از پوسته استفاده کنید.

بسته های UDP

فرمت UDP توسط این بسته rwho نشان داده شده است:

actinide.who> broadcast.who: udp 84

این می گوید که پورت که در actinide میزبان یک دیتاگرام udp ارسال می کند تا بتواند پهنای باند را در رایانه میزبان، آدرس اینترنتی پخش کند. بسته شامل 84 بایت داده کاربر بود.

برخی از خدمات UDP (از شماره پورت منبع یا مقصد) و اطلاعات پروتکل سطح بالا چاپ شده است. به طور خاص، درخواست خدمات دامنه (RFC-1034/1035) و تماس های خورشیدی RPC (RFC-1050) به NFS.

درخواستهای سرور نام سرور UDP

(توجه کنید: شرح زیر، آشنایی با پروتکل خدمات دامنه که در RFC-1035 توصیف شده است، درک می شود. اگر شما با پروتکل آشنا نباشید، شرح زیر به زبان یونانی نوشته شده است.)

درخواستهای سرور نامیده می شوند به عنوان

src> dst: id op پرچم qtype qclass نام (len) h2opolo.1538> helios.domain: 3+ A؟ ucbvax.berkeley.edu. (37)

h2opolo میزبان از سرور دامنه در helios برای یک رکورد آدرس (qtype = A) با نام ucbvax.berkeley.edu خواسته است. شناسه پرس و جو '3' بود. علامت + نشان می دهد که پرچم مورد نظر مجدد تنظیم شده است. طول پرس و جو 37 بایت بود، از جمله سرآیند پروتکل UDP و IP. عملیات پرس و جو یک عادی بود، Query ، بنابراین زمینه عملی حذف شد. اگر عملیات دیگری بود، بین "3" و "+" چاپ می شد. به طور مشابه، qclass عادی بود، C_IN ، و حذف شده است. هر کدام از دیگر کلاس های قبلا چاپ شده است بلافاصله بعد از A.

چند ناهنجاری بررسی می شوند و ممکن است زمینه های اضافی در محدوده مربع قرار گیرند: اگر پرس و جو حاوی یک پاسخ باشد، سوابق اقتدار یا بخش سوابق اضافی، ancount ، nscount یا arcount به عنوان [ n a] چاپ می شوند، [ n n ] 'یا `[ n au]' که در آن n تعداد مناسب است. اگر هر کدام از بیت های پاسخ (AA، RA یا rcode) یا هر کدام از بیت ها باید صفر باشند در بایت های دو و سه تعیین می شوند، [b2 و 3 = x ] 'چاپ می شود، جایی که x مقدار شصت هدر بایت دو و سه.

پاسخهای نام سرور UDP

پاسخ های نام سرور به صورت فرمت شده اند

src> dst: شناسه op rcode پرچم ها a / n / au نوع اطلاعات کلاس (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)

در مثال اول، helios به id 3 پرس و جو از h2opolo با 3 سوابق پاسخ، 3 پرونده نام سرور و 7 سوابق اضافی پاسخ می دهد. اولین رکورد پاسخ نوع A (آدرس) است و اطلاعات آن آدرس اینترنتی 128.32.137.3 است. حجم کل پاسخ 273 بایت بود، به استثنای هدرهای UDP و IP. عملیات (Query) و کد پاسخ (NoError) حذف شد، همانطور که کلاس (C_IN) رکورد A بود.

در مثال دوم، helios به پرس و جو 2 پاسخ می دهد با کد پاسخ دامنه غیر موجود (NXDomain) بدون پاسخ، یک سرور نام و بدون پرونده های اقتدار. `* 'نشان می دهد که پاسخ بیت معتبر تنظیم شده است. از آنجا که هیچ پاسخی نداشت، نوع، کلاس یا داده چاپ نشد.

سایر علامت های پرچم که ممکن است ظاهر شوند عبارتند از `- '(بازگشتی در دسترس، RA، تنظیم نشده ) و` |' (پیام کوتاه، TC، مجموعه). اگر بخش `سوال 'دقیقا شامل یک ورودی باشد،' [ n q] 'چاپ می شود.

توجه داشته باشید که درخواست های سرور نام و پاسخ ها به اندازه ای بزرگ است و پیش فرض snaplen از 68 بایت ممکن است به اندازه کافی از بسته برای چاپ ضبط کند. اگر به طور جدی ترافیک نام سرور را بررسی کنید، از پرچم -s برای افزایش snaplen استفاده کنید. ` -s 128 برای من کار خوبی کرد

رمزگشایی SMB / CIFS

tcpdump اکنون شامل رمزگشایی SMB / CIFS / NBT نسبتا گسترده برای داده ها در UDP / 137، UDP / 138 و TCP / 139 است. برخی از رمزگشایی داده های IPX و NetBEUI SMB نیز انجام می شود.

به طور پیش فرض، رمزگشایی نسبتا کمتری انجام می شود، اگر decoding بسیار دقیق تر انجام شده است اگر -v استفاده شود. هشدار می دهم که با بسته single-SMB تنها ممکن است یک صفحه یا بیشتر بگشاید، بنابراین تنها -v اگر شما واقعا تمام جزئیات گرمی را می خواهید، استفاده کنید.

اگر رمزهای SMB را با استفاده از رشتههای Unicode رمزگشایی کنید، ممکن است بخواهید متغیر محیطی USE_UNICODE را به 1 تنظیم کنید. یک پچ به طور خودکار تشخیص یونیکد srings خوش آمدید.

برای اطلاعات در مورد فرمت های بسته SMB و آنچه که همه زمینه های این معنی را می بینید www.cifs.org یا دایرکتوری pub / samba / specs / دایرکتوری در سایت آینه سایت samba.org مورد نظر شماست. تکه های SMB توسط اندرو تریدگل (tridge@samba.org) نوشته شده است.

درخواستهای NFS و پاسخ ها

درخواست های Sun NFS (سیستم فایل شبکه) و پاسخ ها به صورت زیر چاپ می شوند:

src.xid> dst.nfs: len op args src.nfs> dst.xid: پاسخ stat len ​​op نتایج sushi.6709> wrl.nfs: 112 readlink fh 21،24 / 10.73165 wrl.nfs> sushi.6709: پاسخ خوب 40 readlink "../var" sushi.201b> wrl.nfs: 144 lookup fh 9،74 / 4096.6878 "xcolors" wrl.nfs> sushi.201b: reply ok 128 lookup fh 9،74 / 4134.3150

در خط اول، سوشی میزبان یک تراکنش با شناسه 6709 به WRL ارسال می کند (توجه داشته باشید که شماره پس از src host یک شناسه تراکنش است، نه پورت منبع). درخواست 112 بایت بود، به استثنای هدرهای UDP و IP. عملیات یک link readlink (خوانده شده نمادین) در فایل handle ( fh ) 21،24 / 10.731657119 بود. (اگر کسی خوش شانس باشد، همانطور که در این مورد، دسته فایل را می توان به عنوان یک جفت عددی بزرگ و جزئی جزئی توضیح داد و به دنبال آن شماره یونیت و شماره نسل است.) Wrl با محتویات لینک "ok" پاسخ می دهد.

در خط سوم، سوشی می پرسد برای جستجو نام ` xcolors 'در فایل دایرکتوری 9،74 / 4096،6878. توجه داشته باشید که داده های چاپ شده بستگی به نوع عملیات دارد. این فرمت در صورت خواندن در رابطه با مشخصات پروتکل NFS، خود توضیحی است.

اگر پرچم -v (verbose) داده شود، اطلاعات اضافی چاپ می شود. مثلا:

sushi.1372a> wrl.nfs: 148 خواندن fh 21،11 / 12.195 8192 bytes @ 24576 wrl.nfs> sushi.1372a: پاسخ خوب 1472 خواندن REG 100664 شناسه 417/0 sz 29388

(-v همچنین فیلد header TTL، ID، length و fragmentation را چاپ می کند که از این مثال حذف شده است.) در خط اول، سوشی از خواندن 8192 بایت از فایل 21،11 / 12.195، در offset byte 24576. Wrl پاسخ 'ok'؛ بسته بندی نشان داده شده در خط دوم اولین قطعه از پاسخ است و از این رو تنها 1472 بایت طول می کشد (بایت های دیگر در قطعات بعدی دنبال خواهند شد، اما این قطعات دارای هدر NFS یا حتی UDP نیستند و بنابراین ممکن است چاپ نشوند، بسته به نوع فیلتر مورد استفاده قرار می گیرد). از آنجا که پرچم -v داده شده است، برخی از ویژگی های فایل (که علاوه بر داده های فایل برگشت داده می شوند) چاپ می شوند: نوع فایل (`REG ') برای فایل منظم)، حالت فایل (در هشتم)، uid و gid و اندازه فایل.

اگر پرچم -v بیش از یک بار داده شود، حتی جزئیات بیشتر چاپ می شود.

توجه داشته باشید که درخواستهای NFS بسیار بزرگ هستند و بسیاری از جزئیات به چاپ نخواهند رسید مگر اینکه افزایش یافته باشد. برای تماشای ترافیک NFS از " -s 192 " استفاده کنید.

بسته های پاسخ NFS به طور صریح عملیات RPC را شناسایی نمی کنند. در عوض، tcpdump پیگیری درخواست های اخیر را دنبال می کند و آنها را به پاسخ ها با استفاده از شناسه تراکنش مطابقت می دهد. اگر پاسخ دقیقا از درخواست مربوطه پیروی نمی کند، ممکن است قابل تجزیه نباشد.

AFS درخواست ها و پاسخ ها

Transarc AFS (سیستم پرونده اندرو) درخواست ها و پاسخ ها به صورت زیر چاپ می شوند:

src.sport> dst.dport: rx بسته نوع src.sport> dst.dport: rx نوع سرویس call call نام args src.sport> dst.dport: rx بسته سرویس نوع پاسخ call-name args elvis. 7001> pike.afsfs: rx data fs call تغییر نام قدیمی fid 536876964/1/1 ".newsrc.new" new fid 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx data fs reply rename

در خط اول، elvis میزبان یک بسته RX را به دام می فرستد. این یک بسته داده RX به سرویس fs (fileerver) بود و شروع یک تماس RPC است. تماس RPC تغییر نام داد، با شناسه فایل قدیمی قدیمی از 536876964/1/1 و یک نام قدیمی از '.newsrc.new'، و یک شناسه فایل پرونده جدید 536876964/1/1 و یک نام جدید از `. newsrc '. پیک میزبان با پاسخ RPC به نام فراخوانی نامیده می شود (که موفقیت آمیز بود، زیرا بسته ی داده ای بود و نه بسته ی abort).

به طور کلی، تمام AFS RPC ها حداقل توسط نام تماس RPC رمزگشایی می شوند. اکثر AFS RPC ها حداقل برخی از استدلال ها را رمزگشایی می کنند (معمولا فقط بحث های جالب برای برخی از تعاریف جالب).

فرمت در نظر گرفته شده است که خود توصیف، اما این احتمالا مفید نخواهد بود برای افرادی که با کار AFS و RX آشنا نیست.

اگر پرچم -v (verbose) دوبار داده شود، بسته های تایید شده و اطلاعات هدر اضافی چاپ می شود، مانند شناسه تماس RX، شماره تماس، شماره توالی، شماره سریال و پرچم بسته RX.

اگر پرچم -v دوبار داده شود، اطلاعات اضافی چاپ می شود، مانند شناسه تماس RX، شماره سریال و پرچم بسته RX. اطلاعات مذاکره MTU نیز از بسته های RX ack چاپ شده است.

اگر پرچم -v سه بار داده شود، شاخص امنیت و شناسه سرویس چاپ می شود.

کدهای خطا برای بسته های قطع شده چاپ می شوند، به غیر از بسته های Beacon Ubic (زیرا بسته های abort برای نشان دادن یک رای مثبت برای پروتکل Ubic مورد استفاده قرار می گیرند).

توجه داشته باشید که درخواست های AFS بسیار بزرگ هستند و بسیاری از استدلال ها چاپ نخواهند شد مگر اینکه افزایش یافته باشد. برای دیدن ترافیک AFS از " -s 256 " استفاده کنید.

بسته های پاسخ AFS به طور صریح عملیات RPC را شناسایی نمی کنند. در عوض، tcpdump پیگیری درخواست های اخیر را دنبال می کند و آنها را به پاسخ ها با استفاده از شماره تماس و شناسه خدمات مطابقت می دهد. اگر پاسخ دقیقا از درخواست مربوطه پیروی نمی کند، ممکن است قابل تجزیه نباشد.

Appletalk KIP (DDP در UDP)

بستههای DTP اپلتال که در دیتاگرامهای UDP کپسوله شده اند، بسته بندی شده و بسته به DDP بسته می شوند (به عنوان مثال همه اطلاعات هدر UDP رد می شوند). فایل /etc/atalk.names برای انتقال شبکه اپلتال و شماره گره به نام استفاده می شود. خطوط در این فایل فرم دارند

شماره نام 1.254 اتر 16.1 icsd-net 1.254.110 ACE

دو خط اول به نام های شبکه های اپلتال می گویند. خط سوم نام یک میزبان خاص را می دهد (میزبان از اعداد توسط اکتیو 3 در عدد مشخص می شود - شماره خالی باید دو اکتاو داشته باشد و شماره میزبان باید سه اکتاشته باشد.) شماره و نام باید جدا شوند توسط فضای خالی (blank ها یا زبانه ها). فایل /etc/atalk.names ممکن است شامل خطوط خالی یا خطوط نظر (خطوط با شروع با #) ​​باشد.

آدرس Appletalk در شکل زیر چاپ می شود:

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 وجود نداشته باشد یا شامل یک ورودی برای برخی از شماره میزبان / خالص اپلتال باشد، آدرس ها به شکل عددی چاپ می شوند.) در مثال اول، NBP (DDP port 2) در net 144.1 گره 209 به هر چیزی که در گوشه پورت 220 گره icsd خالص 112. می فرستد، خط دوم همان است به جز نام کامل گره منبع شناخته شده است (`دفتر '). خط سوم ارسال از پورت 235 در شبکه net-jssmag 149 به منظور پخش در port icsd-net NBP (توجه داشته باشید که آدرس پخش (255) با نام خالص بدون شماره میزبان نشان داده شده است - به همین دلیل یک ایده خوب است نام و نام گره را در /etc/atalk.names متمایز می کند.

بسته های NBP (نام پروتکل الحاقی) و ATP (پروتکل پروتکل مبادله Appletalk) مطالب خود را تفسیر می کنند. پروتکل های دیگر فقط اسم پروتکل (یا شماره را اگر نام برای پروتکل ثبت نشده است) و اندازه بسته بسته شود.

بسته های NBP مانند مثال های زیر فرمت می شوند:

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

خط اول یک درخواست جستجوی نام برای نویسندگان لیزری است که توسط میزبان 112 icsd net ارسال شده و در net jssmag پخش می شوند. شناسه nbp برای جستجوی عبارت 190 است. خط دوم یک پاسخ برای این درخواست نشان می دهد (توجه داشته باشید که آن یک شناسه مشابه) را از host jssmag.209 نشان می دهد که دارای یک منبع laserwriter به نام "RM1140" در پورت 250 است. سوم خط دیگری پاسخ دیگری برای درخواست مشابه است که hostpower techpit دارای "techpit" laserwriter در بندر 186 ثبت شده است.

قالب بندی بسته ATP توسط مثال زیر نشان داده شده است:

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: پاسخ: 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-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 شروع به شناسایی معامله 12266 با هلیم میزبان با درخواست تا 8 بسته (`<0-7> '). شماره شانزدهم در انتهای خط، مقدار فیلد "userdata" در درخواست است.

Helios پاسخ با 8 بسته 512 بایت است. علامت `: 'بعد از شناسه تراکنش شماره تراکم بسته را در تراکنش نشان می دهد و تعداد در parens مقدار داده در بسته است، به غیر از header باز. * * در بسته 7 نشان می دهد که بیت EOM تنظیم شده است.

Jssmag.209 پس از آن درخواست می کند که بسته ها 3 و 5 دوباره ارسال شوند. Helios آنها را دوباره ارسال می کند و سپس jssmag.209 معامله را منتشر می کند. در نهایت، jssmag.209 درخواست بعدی را آغاز می کند. * * در درخواست نشان می دهد که XO (`دقیقا یک بار ') تنظیم نشده است .

تقسیم IP

Datagrams های تقسیم شده اینترنت به صورت چاپی چاپ می شوند

(frag id : size @ offset +) (frag id : size @ offset )

(فرم اول نشان می دهد که قطعات بیشتری وجود دارد. دوم نشان می دهد این آخرین قطعه است.)

شناسه قطعه است. اندازه اندازه قطعه (در بایت) به استثنای هدر IP است. Offset این جبهه قطعه (در بایت) در دیتاگرام اصلی است.

اطلاعات قطعه برای هر قطعه خروجی است. قطعه اول شامل هدر پروتکل سطح بالایی است و اطلاعات frag بعد از اطلاعات پروتکل چاپ می شود. قطعه پس از اولین شامل هیچ هدر پروتکل سطح بالاتر نیست و اطلاعات frag بعد از آدرس های منبع و مقصد چاپ می شود. به عنوان مثال، در اینجا بخشی از یک ftp از arizona.edu به lbl-rtsg.arpa در ارتباط با CSNET است که به نظر نمی رسد 576 datagrams بایت را انجام دهد:

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-data:. آک 1536 برنده 2560

در اینجا دو چیز وجود دارد: اول، آدرس در خط 2 شامل شماره های پورت نمی شود. این به این دلیل است که اطلاعات پروتکل TCP همه در قسمت اول است و ما نمیدانیم که کدام پورت یا شماره توالی زمانی است که ما قطعات بعدی چاپ می کنیم. دوم، اطلاعات توالی TCP در خط اول چاپ می شود، به طوری که 308 بایت از داده های کاربر وجود دارد، در حقیقت، 512 بایت وجود دارد (308 در اولین قطعه و 204 در دوم). اگر شما به دنبال سوراخ در فضای دنباله ای هستید یا سعی می کنید با بسته ها مطابقت داشته باشید، این می تواند شما را گمراه کند.

یک بسته با IP ، قطعه قطعه پرچم با یک عقب (DF) مشخص می شود .

زمان سنج

به طور پیش فرض، تمام خطوط خروجی توسط یک نشانه زمانی پیش می آید. زمان نشانه زمان ساعت فعلی در فرم است

hh: mm: ss.frac

و دقیقا به عنوان ساعت کرنل است. نشانگر زمان نشان دهنده زمانی است که هسته اولین بار بسته را دید. هیچ تلاشی برای تع یی زمان انقطا بین زمانی که رابط اترنت بسته از سیم را برداشته و زمانی که هسته وقفه وقفه ی جدید را سرویس دهی کرد.

همچنین ببینید

ترافیک (1C)، نیت (4P)، bpf (4)، pcap (3)

مهم: از دستور man ( ٪ man ) برای دیدن نحوه استفاده از دستور در رایانه خاص خود استفاده کنید.