tcpdump

یک packet sniffer می باشد که در خط فرمان اجرا می شود و برای بررسی تمام یا قسمتی از packet های در حال انتقال بروی interface های شبکه به کار می رود. محدوده این packet ها توسط ترکیبی از عملگرهای منطقی و پارامترهایی مثل آدرس ip یا mac مربوط به منبع و مقصد و نوع پروتکل تعیین می شود.
packet sniffer یاpacket analyzer یک سخت افزار یا نرم افزار می باشد که می تواند ترافیک موجود بروی یک شبکه را آنالیز و رمزگشایی کند و نتیجه را نمایش داده و یا ذخیره کند.

tcpdump

در این حالت اجرای دستور تا زمانی که توسط کاربر با فشار ctrl + c و یا با از بین بردن پروسه آن متوقف نشود، ادامه دارد.

Options

i : برای مشخص کردن کارت شبکه به کار می رود. مثال :

tcpdump -i eth0

نتیجه اجرا دستور بالا چیزی مشابه زیر خواهد بود، در ابتدا هر سطر زمان سیستم نمایش داده می شود و در ادامه آدرس و شماره پورت منبع و مقصد و پروتکل آن مشخص شده است:

00:04:20.256945 PPPoE  [ses 0x740] IP 89.165.113.252.35074 > bw-in-f19.google.com.http: . ack 62 win 486 <nop,nop,timestamp 8094156 1219103061>
00:04:20.306793 PPPoE  [ses 0x740] IP bw-in-f83.google.com.http > 89.165.113.252.51132: . ack 2983 win 1002 <nop,nop,timestamp 689792109 8093872>
00:04:20.310720 PPPoE  [ses 0x740] IP bw-in-f83.google.com.http > 89.165.113.252.51132: . ack 3023 win 1002 <nop,nop,timestamp 689792113 8093872>

c: با استفاده از این گزینه می توانیم مشخص کنیم که اطلاعات چند packet اول نمایش داده شود. در این حالت اجرای دستور پس از نمایش اطلاعات تعداد packet های مشخص شده متوقف می گردد:

[tcpdump -c [Number Of Packets

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

[tcpdump -w [File Address

r : برای خواندن و نمایش دادن نتایج موجود در فایلی که قبلا توسط دستور tcpdump در آن نوشته شده به کار می رود:

[tcpdump -r [File Address

host : برای نمایش packet های در حال انتقال که آدرس ip یا hostname منبع یا مقصد آنها برابر مقدار مشخصی می باشد، به کار می رود:

[tcpdump host [ip address / hostname

src : به همراه host برای نمایش packet های در حال انتقال که آدرس ip یا hostname منبع آنها برابر مقدار مشخصی می باشد، به کار می رود:

[tcpdump  src host [ip address / hostname

dst : به همراه host برای نمایش packet های در حال انتقال که آدرس ip یا hostname مقصد آنها برابر مقدار مشخصی می باشد، به کار می رود:

[tcpdump  dst host [ip address / hostname

port : برای نمایش packet های در حال انتقال که port منبع یا مقصد آنها برابر مقدار مشخصی می باشد، به کار می رود:

[tcpdump  port [portNo

and, or, not : می توانیم بین ‍پارامترهای استفاده شده از عملگرهای منطقی or، and و not استفاده کنیم. مثال :

tcpdump -w test -i eth0 port 6881 and not dst host 10.136.25.22 

با اجرای دستور بالا اطلاعات مربوط به packet هایی که توسط کارت شبکه eth0 در حال انتقال هستند و شماره پورت منبع یا مقصد آن 6881 است و آدرس ip مقصد آن 10.136.25.22 نیست را در فایل test ذخیره می شود.
برای مشاهده اطلاعات بیشتری در رابطه با tcpdump می توانید به man page این دستور مراجعه کنید.