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