دستور Netcat یا (nc)

دستور Netcat یا (nc)

علی مرادی

دستور Netcat (یا nc) یک ابزار خط فرمان است که داده ها را از طریق اتصالات شبکه با استفاده از پروتکل های TCP یا UDP می خواند و می نویسد. این یکی از قدرتمندترین ابزارها در شبکه و سیستم است و به عنوان یک همه کاره محسوب می شود. Netcat چند پلتفرمی است و برای لینوکس ، macOS ، ویندوز و BSD در دسترس است. می توانید از Netcat برای اشکال زدایی و نظارت بر اتصالات شبکه ، اسکن پورت های باز ، انتقال داده ها ، به عنوان پروکسی و موارد دیگر استفاده کنید. بسته Netcat از قبل روی macOS و توزیع های محبوب لینوکس مانند اوبونتو ، دبیان یا CentOS نصب شده است.

در ادامه با ما در شتابان هاست همراه باشید.

نحو دستور Netcat:

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

nc [options] host port

در اوبونتو می توانید از netcat یا nc استفاده کنید. هر دوی آنها پیوندهای نسخه OpenBSD Netcat هستند.

به طور پیش فرض ، Netcat تلاش می کند تا اتصال TCP به میزبان و پورت مشخص شده را شروع کند. اگر می خواهید اتصال UDP برقرار کنید ، از گزینه -u استفاده کنید:

nc -u host port

اسکن پورت ها:

اسکن پورت ها یکی از رایج ترین موارد استفاده برای Netcat است. می توانید یک پورت یا یک محدوده پورت را اسکن کنید.

به عنوان مثال ، برای اسکن پورت های باز در محدوده ۲۰-۸۰ از دستور زیر استفاده می کنید:

nc -z -v 10.10.8.8 20-80

گزینه -z به nc می گوید که فقط برای پورت های باز اسکن کند ، بدون اینکه هیچ داده ای برای آنها ارسال کند و گزینه -v برای ارائه اطلاعات بیشتر.

خروجی چیزی شبیه به این خواهد بود:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused
...
nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

اگر می خواهید فقط خطوط را با پورت های باز چاپ کنید ، می توانید نتایج را با دستور grep فیلتر کنید.

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

خروجی:

Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

همچنین می توانید از Netcat برای یافتن نرم افزار سرور و نسخه آن استفاده کنید. به عنوان مثال ، اگر در پورت SSH پیش فرض ۲۲ دستور “EXIT” را به سرور ارسال کنید:

echo "EXIT" | nc 10.10.8.8 22

خروجی چیزی شبیه به این خواهد بود:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
Protocol mismatch.

برای اسکن پورت های UDP به سادگی گزینه -u را به دستور زیر اضافه کنید:

nc -z -v -u 10.10.8.8 20-80

به طور معمول ، Nmap ابزاری بهتر از Netcat برای اسکن پورت ها است.

ارسال فایل ها از طریق Netcat:

از Netcat می توان برای ایجاد داده از یک میزبان به میزبان دیگر با ایجاد یک مدل اصلی سرویس گیرنده / سرور استفاده کرد.
این کار با تنظیم Netcat برای استفاده از یک پورت خاص (با استفاده از گزینه -l) روی میزبان دریافت کننده و سپس ایجاد یک اتصال TCP منظم از میزبان دیگر و ارسال پرونده روی آن انجام می شود.

در مورد دریافت دستور زیر را اجرا می کنید که پورت ۵۵۵۵ را برای اتصال ورودی باز می کند و خروجی را به پرونده هدایت می کند:

nc -l 5555 > file_name

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

nc receiving.host.com 5555 < file_name

برای انتقال دایرکتوری می توانید از tar برای بایگانی کردن فهرست در میزبان منبع و استخراج بایگانی در میزبان مقصد استفاده کنید.

در میزبان دریافت کننده ، ابزار Netcat را برای گوش دادن به اتصال ورودی در پورت ۵۵۵۵ تنظیم کنید. داده های دریافت شده به فرمان tar منتقل می شوند ، که بایگانی را استخراج می کند:

nc -l 5555 | tar xzvf -

در میزبان ارسال ، پوشه را بسته بندی کرده و داده ها را با اتصال به فرآیند گوش دادن nc در میزبان دریافت کننده ارسال کنید:

tar czvf - /path/to/dir | nc receiving.host.com 5555

می توانید روند انتقال را از دو طرف مشاهده کنید. پس از اتمام ، CTRL + C را تایپ کنید تا اتصال قطع شود.

ایجاد یک سرور ساده چت:

روش ایجاد چت آنلاین بین دو یا چند میزبان مانند روش انتقال پرونده ها است.

در اولین میزبان ، فرآیند Netcat را برای استفاده از پورت ۵۵۵۵ شروع کنید:

nc -l 5555

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

nc first.host.com 5555

اکنون ، اگر پیامی را تایپ کنید و ENTER را فشار دهید ، در هر دو میزبان نشان داده می شود.

برای بستن اتصال ، CTRL + C را تایپ کنید.

انجام درخواست HTTP:

اگرچه ابزارهای بسیار بهتری برای درخواست های HTTP مانند curl وجود دارد ، شما همچنین می توانید از Netcat برای ارسال درخواست های مختلف به سرورهای از راه دور استفاده کنید.

به عنوان مثال ، برای بازیابی صفحه man Netcat از وب سایت OpenBSD ، می نویسید:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

پاسخ کامل ، شامل سرصفحه های HTTP و کد HTML ، در ترمینال نشان داده می شود.

جمع بندی:

در این آموزش ، شما یاد گرفته اید که چگونه از دستور Netcat برای ایجاد و آزمایش اتصالات TCP و UDP استفاده کنید.

برای اطلاعات بیشتر ، به صفحه man Netcat مراجعه کرده و در مورد سایر گزینه های قدرتمند دستور Netcat اطلاعات بیشتری کسب کنید.

امیدوارم این مقاله براتون مفید بوده باشه.

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

برچسب ها: دستورات لینوکس