| NCAT(1) | Ncat Reference Guide | NCAT(1) |
نام (NAME)
ncat - الحاق و بازهدایت سوکتها
خلاصه دستور (SYNOPSIS)
ncat [گزینهها...] [hostname] [port]
توضیحات (DESCRIPTION)
ابزار Ncat یک ابزار قدرتمند و پر از امکانات شبکه است که دادهها را از طریق خط فرمان در بستر شبکه میخواند و مینویسد. Ncat برای پروژه Nmap نوشته شده و حاصل تکامل خانواده پراکنده نسخههای گوناگون Netcat است. این ابزار به گونهای طراحی شده تا یک ابزار پسزمینه (back-end) قابل اعتماد باشد که فوراً اتصال شبکه را برای سایر برنامهها و کاربران فراهم سازد. Ncat نه تنها با IPv4 و IPv6 سازگار است، بلکه کاربردهای نامحدودی را در اختیار کاربر قرار میدهد.
از میان قابلیتهای پرتعداد Ncat میتوان به اتصال زنجیرهای چند Ncat به یکدیگر، بازهدایت پورتهای TCP، UDP و SCTP به مقاصد دیگر، پشتیبانی از SSL، و اتصال از طریق پروکسیهای SOCKS4، SOCKS5 یا HTTP (همراه با احراز هویت اختیاری پروکسی) اشاره کرد. برخی از این اصول عمومی برای اکثر برنامهها کاربرد دارند و به شما امکان میدهند تا بیدرنگ پشتیبانی شبکه را به نرمافزارهایی که در حالت عادی از آن پشتیبانی نمیکنند اضافه کنید.
خلاصه گزینهها (OPTIONS SUMMARY)
Ncat 7.99SVN ( https://nmap.org/ncat )
Usage: ncat [options] [hostname] [port]
Options taking a time assume seconds. Append 'ms' for milliseconds,
's' for seconds, 'm' for minutes, or 'h' for hours (e.g. 500ms).
-4 Use IPv4 only
-6 Use IPv6 only
-U, --unixsock Use Unix domain sockets only
--vsock Use vsock sockets only
-C, --crlf Use CRLF for EOL sequence
-c, --sh-exec <command> Executes the given command via /bin/sh
-e, --exec <command> Executes the given command
--lua-exec <filename> Executes the given Lua script
-g hop1[,hop2,...] Loose source routing hop points (8 max)
-G <n> Loose source routing hop pointer (4, 8, 12, ...)
-m, --max-conns <n> Maximum <n> simultaneous connections
-h, --help Display this help screen
-d, --delay <time> Wait between read/writes
-o, --output <filename> Dump session data to a file
-x, --hex-dump <filename> Dump session data as hex to a file
-i, --idle-timeout <time> Idle read/write timeout
-p, --source-port port Specify source port to use
-s, --source addr Specify source address to use (doesn't affect -l)
-l, --listen Bind and listen for incoming connections
-k, --keep-open Accept multiple connections in listen mode
-n, --nodns Do not resolve hostnames via DNS
-t, --telnet Answer Telnet negotiations
-u, --udp Use UDP instead of default TCP
--sctp Use SCTP instead of default TCP
-v, --verbose Set verbosity level (can be used several times)
-w, --wait <time> Connect timeout
-z Zero-I/O mode, report connection status only
--append-output Append rather than clobber specified output files
--send-only Only send data, ignoring received; quit on EOF
--recv-only Only receive data, never send anything
--no-shutdown Continue half-duplex when receiving EOF on stdin
-q <time> After EOF on stdin, wait <time> then quit.
--allow Allow only given hosts to connect to Ncat
--allowfile A file of hosts allowed to connect to Ncat
--deny Deny given hosts from connecting to Ncat
--denyfile A file of hosts denied from connecting to Ncat
--broker Enable Ncat's connection brokering mode
--chat Start a simple Ncat chat server
--proxy <addr[:port]> Specify address of host to proxy through
--proxy-type <type> Specify proxy type ("http", "socks4", "socks5")
--proxy-auth <auth> Authenticate with HTTP or SOCKS proxy server
--proxy-dns <type> Specify where to resolve proxy destination
--ssl Connect or listen with SSL
--ssl-cert Specify SSL certificate file (PEM) for listening
--ssl-key Specify SSL private key (PEM) for listening
--ssl-verify Verify trust and domain name of certificates
--ssl-trustfile PEM file containing trusted SSL certificates
--ssl-ciphers Cipherlist containing SSL ciphers to use
--ssl-servername Request distinct server name (SNI)
--ssl-alpn ALPN protocol list to use
--version Display Ncat's version information and exit
See the ncat(1) manpage for full options, descriptions and usage examples
برای مشاهده توضیحات کامل گزینهها و مثالهای کاربردی به ادامه این صفحه راهنما مراجعه فرمایید.
حالت اتصال و حالت شنود (CONNECT MODE AND LISTEN MODE)
ابزار Ncat در یکی از دو حالت اصلی کار میکند: حالت اتصال (connect mode) و حالت شنود یا گوش دادن (listen mode). سایر حالتها، مانند سرور پروکسی HTTP، به عنوان حالتهای خاصی از این دو عمل میکنند. در حالت اتصال، Ncat به عنوان یک کلاینت کار میکند. در حالت شنود، به عنوان یک سرور عمل مینماید.
در حالت اتصال، آرگومانهای hostname و port مشخص میکنند که اتصال به چه مقصدی برقرار شود. درج hostname الزامی است و میتواند نام میزبان یا نشانی IP باشد. اگر port ارائه شود، باید یک شماره پورت دهدهی باشد. در صورت حذف، مقدار پیشفرض آن 31337 است.
در حالت شنود، hostname و port نشانیای را که سرور به آن مقید (bind) میشود کنترل میکنند. هر دو آرگومان در حالت شنود اختیاری هستند. اگر hostname حذف شود، بهطور پیشفرض به تمام آدرسهای موجود روی IPv4 و IPv6 گوش میدهد. اگر port حذف شود، مقدار پیشفرض آن 31337 خواهد بود.
گزینههای پروتکل (PROTOCOL OPTIONS)
-4 (تنها IPv4)
-6 (تنها IPv6)
-U, --unixsock (استفاده از سوکتهای دامنه یونیکس)
-u, --udp (استفاده از UDP)
--sctp (استفاده از SCTP)
--vsock (استفاده از سوکتهای AF_VSOCK)
گزینههای حالت اتصال (CONNECT MODE OPTIONS)
-g hop1[,hop2,...] (مسیریابی مبدأ آزاد)
-G ptr (تنظیم اشارهگر مسیریابی مبدأ)
-p port, --source-port port (تعیین پورت مبدأ)
-s host, --source host (تعیین آدرس مبدأ)
گزینههای حالت شنود (LISTEN MODE OPTIONS)
برای مشاهده اطلاعات درباره محدود کردن میزبانهایی که میتوانند به فرآیند شنود Ncat متصل شوند، بخش «گزینههای کنترل دسترسی (ACCESS CONTROL OPTIONS)» را ببینید.
-l, --listen (شنود برای اتصالات)
-m numconns, --max-conns numconns (تعیین حداکثر تعداد اتصالات)
-k, --keep-open (پذیرش چندین اتصال و عدم خروج با EOF سوکت)
در حالت اتصال، گزینه -k معنای متفاوتی دارد: هنگامی که طرف راه دور یک اتصال TCP سمت خود را میبندد، Ncat به اجرا و ارسال هرگونه داده در دسترس ادامه خواهد داد. این رفتار پیشفرض در Ncat 7.95 و نسخههای پیشین بود، اما برای هماهنگی بیشتر با سایر پیادهسازیهای netcat تغییر یافت. پروتکل TCP تنها پروتکل انتقالی است که از این گزینه در حالت اتصال پشتیبانی میکند.
--broker (واسطهگری اتصالات)
--chat (سرور چت فوری)
گزینههای اساسال (SSL OPTIONS)
--ssl (استفاده از SSL)
در حالت سرور، این گزینه به جای ترافیک ساده، به اتصالات ورودی SSL گوش میدهد.
در حالت UDP، این گزینه پروتکل Datagram TLS (DTLS) را فعال مینماید.
--ssl-verify (اعتبارسنجی گواهیهای سرور)
این گزینه در حالت سرور هیچ اثری ندارد.
--ssl-cert certfile.pem (تعیین گواهی SSL)
--ssl-key keyfile.pem (تعیین کلید خصوصی SSL)
--ssl-trustfile cert.pem (فهرست گواهیهای مورد اعتماد)
--ssl-ciphers cipherlist (تعیین مجموعههای رمزشناسی SSL)
--ssl-servername name (درخواست نام سرور متمایز)
--ssl-alpn ALPN list (تعیین فهرست پروتکلهای ALPN)
گزینههای پروکسی (PROXY OPTIONS)
--proxy host[:port] (تعیین آدرس پروکسی)
اگر پورتی مشخص نشود، پورت استاندارد و شناختهشده پروتکل پروکسی استفاده خواهد شد (۱۰۸۰ برای SOCKS و ۳۱۲۸ برای HTTP). هنگام تعیین یک سرور پروکسی IPv6 HTTP با آدرس IP به جای نام میزبان، باید الزاماً از نمادگذاری کروشه (مثلاً [2001:db8::1]:8080) برای تفکیک پورت از آدرس IPv6 استفاده شود. اگر پروکسی نیاز به احراز هویت دارد، از --proxy-auth استفاده فرمایید.
--proxy-type proto (تعیین پروتکل پروکسی)
پروتکلهای در دسترس فعلی در حالت اتصال عبارتند از http (CONNECT)، socks4 (SOCKSv4) و socks5 (SOCKSv5). تنها سروری که در حال حاضر پشتیبانی میشود http است. اگر این گزینه به کار نرود، پروتکل پیشفرض http خواهد بود.
--proxy-auth user[:pass] (تعیین اطلاعات اعتباری پروکسی)
این اعتبارنامهها را میتوان به عنوان جایگزین از طریق تنظیم متغیر محیطی NCAT_PROXY_AUTH نیز به Ncat منتقل کرد که ریسک ثبت آنها در گزارشهای فرآیند را کاهش میدهد. (گزینه --proxy-auth اولویت بالاتری دارد.)
--proxy-dns type (تعیین محل ترجمه مقصد پروکسی)
local - نامهای میزبان به صورت محلی روی میزبان Ncat ترجمه میشوند. اگر نام میزبان قابل حل نباشد، Ncat با خطا خارج میشود.
remote - نامهای میزبان مستقیماً به سرور پروکسی راه دور تحویل داده میشوند. این رفتار پیشفرض است.
both - ابتدا تلاش میشود نام میزبان روی هاست Ncat ترجمه شود. نامهای غیرقابل حل به سرور پروکسی راه دور فرستاده میشوند.
none - ترجمه نام میزبان به طور کامل غیرفعال میشود. تنها میتوان از یک آدرس مستقیم عددی IPv4 یا IPv6 به عنوان مقصد پروکسی استفاده کرد.
ترجمه محلی نام میزبان به طور کلی از نسخه IP مشخصشده با گزینههای -4 یا -6 پیروی میکند، به جز برای SOCKS4 که با IPv6 ناسازگار است.
گزینههای اجرای دستور (COMMAND EXECUTION OPTIONS)
-e command, --exec command (اجرای دستور)
-c command, --sh-exec command (اجرای دستور از طریق sh)
--lua-exec file (اجرای یک اسکریپت lua.)
تمام گزینههای اجرا متغیرهای زیر را به محیط فرآیند فرزند اضافه میکنند:
NCAT_REMOTE_ADDR, NCAT_REMOTE_PORT
NCAT_LOCAL_ADDR, NCAT_LOCAL_PORT
NCAT_PROTO
گزینههای کنترل دسترسی (ACCESS CONTROL OPTIONS)
--allow host[,host,...] (مجاز شمردن اتصالات)
--allowfile file (مجاز شمردن اتصالات از فایل)
--deny host[,host,...] (مسدود کردن اتصالات)
--denyfile file (مسدود کردن اتصالات از فایل)
گزینههای زمانبندی (TIMING OPTIONS)
این گزینهها پارامتر time را دریافت میکنند. این مقدار بهطور پیشفرض بر حسب ثانیه مشخص میشود، هرچند میتوانید پسوندهای ms، s، m، یا h را به مقدار اضافه کنید تا میلیثانیه، ثانیه، دقیقه یا ساعت مشخص شود.
-d time, --delay time (تعیین تأخیر بین خطوط)
-i time, --idle-timeout time (تعیین مهلت زمان بیکاری)
-q time (تأخیر خروج پس از دریافت EOF در stdin)
-w time, --wait time (تعیین مهلت اتصال)
گزینههای خروجی (OUTPUT OPTIONS)
-o file, --output file (ذخیره دادههای نشست)
-x file, --hex-dump file (ذخیره دادههای نشست به صورت هگز)
--append-output (الحاق خروجی)
-v, --verbose (حالت پرگویی)
گزینههای متفرقه (MISC OPTIONS)
-C, --crlf (استفاده از CRLF برای پایان خط)
-h, --help (صفحه راهنما)
--recv-only (فقط دریافت داده)
--send-only (فقط ارسال داده)
--no-shutdown (عدم خاموشی به حالت نیمهدوطرفه)
-n, --nodns (عدم ترجمه نامهای میزبان)
-t, --telnet (پاسخ به مذاکرات تلنت)
--version (نمایش نسخه)
سوکتهای دامنه یونیکس (UNIX DOMAIN SOCKETS)
گزینه -U (مشابه --unixsock) موجب میشود Ncat به جای سوکتهای شبکه از سوکتهای دامنه یونیکس استفاده کند. سوکتهای دامنه یونیکس به عنوان یک مدخل در سیستم فایل وجود دارند. شما باید نام سوکتی را برای اتصال یا شنود تعیین کنید. به عنوان مثال، برای ایجاد اتصال:
ncat -U ~/unixsock
برای شنود روی یک سوکت:
ncat -l -U ~/unixsock
حالت شنود در صورتی که سوکت وجود نداشته باشد آن را ایجاد خواهد کرد. سوکت پس از پایان برنامه همچنان باقی خواهد ماند.
هر دو نوع سوکت دامنه جریانی و دیتاگرام پشتیبانی میشوند. از -U به تنهایی برای سوکتهای جریانی استفاده کنید، یا آن را با --udp برای سوکتهای دیتاگرام ترکیب فرمایید. سوکتهای دیتاگرام نیازمند یک سوکت مبدأ برای برقراری اتصال هستند. بهطور پیشفرض، یک سوکت مبدأ با نام تصادفی در صورت نیاز ایجاد شده و پس از پایان برنامه حذف میگردد. از گزینه --source به همراه یک مسیر برای استفاده از یک سوکت مبدأ با نام مشخص استفاده کنید.
سوکتهای AF_VSOCK (AF_VSOCK SOCKETS)
گزینه --vsock موجب میشود Ncat به جای سوکتهای شبکه از سوکتهای AF_VSOCK استفاده کند. به جای نام میزبان یا نشانی IP، باید یک CID ارائه شود. به عنوان مثال، برای برقراری اتصال به هاست:
ncat --vsock 2 1234
برای شنود روی یک سوکت:
ncat -l --vsock 1234
هر دو نوع سوکت جریانی و دیتاگرام پشتیبانی میشوند، اما در دسترس بودن نوع سوکت بستگی به هایپروایزر دارد. از --vsock به تنهایی برای سوکتهای جریانی، یا در ترکیب با --udp برای سوکتهای دیتاگرام استفاده کنید.
مثالها (EXAMPLES)
اتصال به example.org روی پورت TCP شماره 8080.
شنود برای اتصالات ورودی روی پورت TCP شماره 8080.
بازهدایت پورت TCP شماره 8080 در سیستم محلی به پورت 80 در میزبان مشخص.
متصل شدن به پورت TCP شماره 8081 و متصل کردن /bin/bash برای دسترسی آزادانه در سراسر شبکه.
اتصال یک شل به پورت TCP شماره 8081، محدود کردن دسترسی به میزبانهای یک شبکه محلی، و محدود کردن حداکثر اتصالات همزمان به ۳ عدد.
اتصال به smtphost:25 از طریق یک سرور SOCKS4 روی پورت 1080.
اتصال به smtphost:25 از طریق یک سرور SOCKS5 روی پورت 1080.
ایجاد یک سرور پروکسی HTTP روی localhost پورت 8888.
ارسال یک فایل از طریق پورت TCP شماره 9899 از host2 (کلاینت) به host1 (سرور).
HOST2$ ncat HOST1 9899 < inputfile
انتقال فایل در جهت معکوس، و تبدیل Ncat به یک سرور «تکفایل».
HOST2$ ncat HOST1 9899 > outputfile
کد وضعیت خروج (EXIT CODE)
کد خروج مشخص میکند که آیا اتصال با موفقیت برقرار و تکمیل شده است یا خیر. مقدار 0 یعنی هیچ خطایی رخ نداده است. مقدار 1 به معنای بروز یک خطای شبکه است؛ مانند «Connection refused» یا «Connection reset». مقدار 2 برای تمام خطاهای دیگر مانند گزینه نامعتبر یا فایل ناموجود در نظر گرفته شده است.
اشکالات (BUGS)
همانند سازندگانش، Ncat بینقص نیست؛ اما شما میتوانید با ارسال گزارشهای باگ یا نوشتن وصلهها (patches) به بهبود آن کمک کنید. اگر Ncat آنگونه که انتظار دارید رفتار نمیکند، ابتدا به آخرین نسخه موجود در https://nmap.org ارتقا دهید. اگر مشکل همچنان پابرجا بود، کمی تحقیق کنید تا مشخص شود که آیا این باگ قبلاً کشف و رفع شده است یا خیر. متن پیام خطا را در وب جستجو کنید یا آرشیوهای nmap-dev را در https://seclists.org بررسی فرمایید.
این صفحه راهنما را نیز به طور کامل بخوانید. اگر نتیجهای نیافتید، گزارش باگ را به نشانی <dev@nmap.org> ایمیل کنید. لطفاً هر اطلاعاتی که درباره مشکل به دست آوردهاید، به همراه شماره نسخه Ncat و نسخه سیستمعاملی که روی آن اجرا میشود را ضمیمه کنید. احتمال پاسخ به گزارشهای مشکلات و پرسشهای نحوه استفاده ارسالی به dev@nmap.org بسیار بیشتر از ارسال مستقیم برای Fyodor است.
وصلههای کد برای رفع اشکالات حتی از گزارشهای اشکال نیز باارزشتر هستند. دستورالعملهای پایه برای تهیه فایلهای وصله با تغییرات شما در نشانی زیر موجود است: https://svn.nmap.org/nmap/HACKING. وصلهها را میتوانید به nmap-dev (توصیهشده) یا مستقیماً برای Fyodor ارسال کنید.
نویسندگان (AUTHORS)
نسخه اصلی Netcat توسط Hobbit* <hobbit@avian.org>* نوشته شده بود. هرچند Ncat بر پایه هیچ کدی از Netcat «سنتی» (یا هر پیادهسازی دیگری) ساخته نشده است، ولی در عین حال Ncat از نظر روح و عملکرد کاملاً مبتنی بر Netcat است.
اعلامیههای حقوقی (LEGAL NOTICES)
حق نشر و مجوز Ncat (Ncat Copyright and Licensing)
نرمافزار Ncat دارای حق نشر (C) 2005–2022 شرکت Nmap Software LLC است. این نرمافزار به عنوان نرمافزار آزاد و متنباز تحت شرایط مشابه نرمافزار Nmap توزیع میشود. شرایط دقیق و جزئیات بیشتر در نشانی زیر در دسترس است: https://nmap.org/man/man-legal.html.
مجوز کریتیو کامنز برای این راهنمای Ncat (Creative Commons License for this Ncat Guide)
این «راهنمای مرجع Ncat» دارای حق نشر (C) 2005–2022 شرکت Nmap Software LLC است. این راهنما بدینوسیله تحت نگارش 3.0 از مجوز Creative Commons Attribution License[1] قرار میگیرد. این مجوز به شما اجازه میدهد اثر را به دلخواه بازنشر کرده و تغییر دهید، مشروط بر اینکه به منبع اصلی ارجاع دهید. به عنوان راهکار جایگزین، میتوانید این سند را مشمول همان مجوز خود Ncat (که پیشتر اشاره شد) در نظر بگیرید.
دسترسی به کد منبع و مشارکتهای جامعه کاربری
کد منبع این نرمافزار در اختیار همگان قرار گرفته است زیرا معتقدیم کاربران حق دارند پیش از اجرای یک برنامه، دقیقاً بدانند برنامه قرار است چه کاری انجام دهد. این امر همچنین به شما امکان میدهد نرمافزار را برای رخنههای امنیتی ممیزی و بررسی کنید (تاکنون هیچ رخنهای یافت نشده است).
کد منبع همچنین به شما اجازه میدهد Nmap (که شامل Ncat است) را به پلتفرمهای جدید پورت کنید، باگها را برطرف سازید و قابلیتهای جدید اضافه کنید. شما شدیداً تشویق میشوید که تغییرات خود را برای امکان ادغام در توزیع اصلی به نشانی <dev@nmap.org> ارسال کنید. با ارسال این تغییرات برای Fyodor یا یکی از لیستهای ایمیل توسعه Insecure.Org، فرض بر این است که شما حق نامحدود و غیرانحصاری برای استفاده مجدد، تغییر و تغییر مجوز کد را به پروژه Nmap (شرکت Nmap Software LLC) واگذار میکنید. نرمافزار Nmap همواره به صورت متنباز عرضه خواهد شد، اما این موضوع از آن جهت اهمیت دارد که عدم امکان تغییر مجوز کد در گذشته مشکلات سهمگینی برای سایر پروژههای نرمافزار آزاد (مانند KDE و NASM) به وجود آورده است. ما همچنین گهگاه همانگونه که در صفحه راهنمای Nmap آمده است مجوز کد را به اشخاص ثالث واگذار میکنیم. اگر تمایل دارید شرایط مجوز ویژهای برای مشارکتهای خود تعیین کنید، کافی است هنگام ارسال آنها این موضوع را قید فرمایید.
سلب ضمانت (No Warranty)
این برنامه با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت تجاری یا مناسب بودن برای یک هدف معین. برای اطلاعات بیشتر به مجوز منبع عمومی Nmap در نشانی زیر مراجعه فرمایید: https://nmap.org/npsl, یا فایل LICENSE همراه با Nmap را مطالعه نمایید.
استفاده نامناسب (Inappropriate Usage)
ابزار Ncat هرگز نباید با امتیازات ویژه (مانند suid root) نصب شود. این امر میتواند یک روزنه امنیتی بزرگ ایجاد کند زیرا سایر کاربران روی سیستم (یا مهاجمان) میتوانند از آن برای ارتقای امتیاز (privilege escalation) استفاده کنند.
نرمافزارهای شخص ثالث (Third-Party Software)
این محصول شامل نرمافزارهای توسعهیافته توسط Apache Software Foundation[2] است. یک نسخه اصلاحشده از کتابخانه قابل حمل شکار بستههای Libpcap[3] به همراه Ncat توزیع شده است. نسخه ویندوز Ncat در عوض از کتابخانه Npcap library[4] مشتقشده از Libpcap بهره میبرد. برخی عملکردهای سطح پایین شبکه از کتابخانه شبکهای Libdnet[5] که توسط Dug Song نوشته شده استفاده میکنند. یک نسخه اصلاحشده به همراه Ncat توزیع گردیده است. Ncat میتواند به صورت اختیاری به جعبهابزار رمزنگاری OpenSSL[6] برای پشتیبانی از تشخیص نسخه SSL متصل شود. تمامی نرمافزارهای شخص ثالث ذکرشده در این پاراگراف، تحت مجوزهای نرمافزاری سبک BSD به صورت آزاد قابل بازتوزیع هستند.
نکات (NOTES)
- 1.
- Creative Commons Attribution License
- 2.
- Apache Software Foundation
- 3.
- Libpcap portable packet capture library
- 4.
- Npcap library
- 5.
- Libdnet
- 6.
- OpenSSL cryptography toolkit
| 03/27/2026 | Ncat |