نت‌کت

از ویکی‌پدیا، دانشنامهٔ آزاد

نت‌کت (به انگلیسی: netcat) (که به صورت nc هم نوشته می‌شود) یک برنامه رایانه‌ای برای خواندن و نوشتن بر روی اتصالات شبکه است. نت‌کت در این زمینه قابلیت‌های زیادی داشته و تقریباً در تمام سیستم‌عامل‌های شبه‌یونیکس به صورت پیشفرض وجود دارد.

گزینه‌ها[ویرایش]

-4 باعث می‌شود تا فقط از آدرسهای IPv4 استفاده شود.

-6 باعث می‌شود تا فقط از آدرسهای IPv6 استفاده شود.

-D حالت اشکال زدایی و خطایابی را فعال می‌کند.

-l باعث می‌شود تا نت‌کت بر روی یک پورت خاص (که در خط فرمان مشخص می‌شود) منتظر رسیدن درخواست‌ها باشد.

-u به صورت پیشفرض نت‌کت از اتصالات TCP استفاده می‌کند. با استفاده از این گزینه می‌توان نت‌کت را مجبور به استفاده از اتصالات UDP کرد.

-n باعث می‌شود تا پرس‌وجوی DNS انجام نگیرد.

-v حالت verbose را برای گرفتن خروجی بیشتر فعال می‌کند.

مثال‌هایی از نحوه استفاده[ویرایش]

به آسانی می‌توان یک ارتباط کلاینت/سروری برقرار کرد. در یک کنسول دستور زیر را وارد کنید:

$ nc -l 1234

به این ترتیب نت‌کت بر روی پورت 1234 منتظر رسیدن درخواست‌ها مانده و به آن جواب می‌دهد. در کنسولی دیگر دستور زیر را اجرا کنید.

$ nc 127.0.0.1 1234

حالا ارتباط بین دو کنسول برقرار شده و هر چیزی که در یک کنسول تایپ کنید، در کنسول دیگر هم نمایش می‌یابد.

انتقال فایل[ویرایش]

می‌توان به آسانی فایل‌ها را از یک کامپیوتر به کامپیوتری دیگر منتقل کرد:

$ nc -l 1234> filename.out

و در کامپیوتر دیگر:

$ nc host.example.com 1234 <filename.in

ارتباط با سرویس‌دهنده‌ها[ویرایش]

به کمک نت‌کت می‌توان به صورت مستقیم و بدون استفاده از یک واسط با سرویس‌دهنده‌ها (مانند یک وب‌سرور یا یک سرویس‌دهنده پست الکترونیک) ارتباط برقرار کرد. در این مثال قصد داریم ایمیلی را به کمک نت‌کت ارسال کنیم. البته لازمه انجام این کار آشنایی قبلی با پروتکل SMTP است. (در کل برای برقراری ارتباط با هر سروری، باید با پروتکل مورد استفاده توسط آن سرور آشنایی داشت)

$ nc localhost 25 <<EOF
HELO host.example.com
MAIL FROM:<user@host.example.com>
RCPT TO:<user2@host.example.com>
DATA
Body of email.
.
QUIT
EOF

مثال از ارتباط با یک وب‌سرور:

 $ printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

پویش پورتهای باز[ویرایش]

پیدا کردن پورتهای باز و کسب اطلاعات درباره سرویسهای در حال اجرا می‌تواند بسیار مفید باشد. به کمک نت‌کت می‌توانید کلیه پورتهای یک کامپیوتر را پویش کرده و پورتهای باز را شناسایی کنید. برای جلوگیری از ارسال اطلاعات به سرویسها می‌توان از گزینه -z استفاده کرد:

$ nc -z host.example.com 1-65535
Connection to host.example.com 22 port [tcp/ssh] succeeded!
Connection to host.example.com 25 port [tcp/smtp] succeeded!

همچنبن گاهی اوقات دانستن نام نرم‌افزار سرور و همچنین نسخه آن می‌تواند مفید واقع شود. معمولاً سرورها بلافاصله بعد از اتصال کاربر، یک پیغام خوش‌آمد گویی برای او ارسال کرده و این اطلاعات را در آن پیغام قرار می‌دهند. برای به دست آوردن نام و نسخه نرم‌افزارِ سرور، ابتدا باید ارتباطی با آن سرور برقرار کرد و بعد از دریافت پیغام خوش‌آمدگویی، ارتباط را قطع کرد. به کمک گزینه -w و مشخص کردن یک مدت زمات کوتاه می‌توان اتصالی را با سرور مورد نظر برقرار کرده و پیغام خوش‌آمد گویی را مشاهده کرد. همچنین بسته به پروتکل مورد استفاده، می‌توان از دستور QUIT برای پایان دادن به اتصال استفاده کرد (در صورت انجام این کار نیازی به -w نیست)

$ echo "QUIT" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2
Protocol mismatch.
220 host.example.com IMS SMTP Receiver Version 0.84 Ready

منابع[ویرایش]

http://www.freebsd.org/cgi/man.cgi?query=nc

http://en.wikipedia.org/wiki/Netcat