نتکت
نتکت (به انگلیسی: 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:<[email protected]> RCPT TO:<[email protected]> 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