NCAT(1) Ncat Reference Guide NCAT(1)

ncat - الحاق و بازهدایت سوکت‌ها

ncat [گزینه‌ها...] [hostname] [port]

ابزار Ncat یک ابزار قدرتمند و پر از امکانات شبکه است که داده‌ها را از طریق خط فرمان در بستر شبکه می‌خواند و می‌نویسد. Ncat برای پروژه Nmap نوشته شده و حاصل تکامل خانواده پراکنده نسخه‌های گوناگون Netcat است. این ابزار به گونه‌ای طراحی شده تا یک ابزار پس‌زمینه (back-end) قابل اعتماد باشد که فوراً اتصال شبکه را برای سایر برنامه‌ها و کاربران فراهم سازد. Ncat نه تنها با IPv4 و IPv6 سازگار است، بلکه کاربردهای نامحدودی را در اختیار کاربر قرار می‌دهد.

از میان قابلیت‌های پرتعداد Ncat می‌توان به اتصال زنجیره‌ای چند Ncat به یکدیگر، بازهدایت پورت‌های TCP، UDP و SCTP به مقاصد دیگر، پشتیبانی از SSL، و اتصال از طریق پروکسی‌های SOCKS4، SOCKS5 یا HTTP (همراه با احراز هویت اختیاری پروکسی) اشاره کرد. برخی از این اصول عمومی برای اکثر برنامه‌ها کاربرد دارند و به شما امکان می‌دهند تا بی‌درنگ پشتیبانی شبکه را به نرم‌افزارهایی که در حالت عادی از آن پشتیبانی نمی‌کنند اضافه کنید.

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

برای مشاهده توضیحات کامل گزینه‌ها و مثال‌های کاربردی به ادامه این صفحه راهنما مراجعه فرمایید.

ابزار Ncat در یکی از دو حالت اصلی کار می‌کند: حالت اتصال (connect mode) و حالت شنود یا گوش دادن (listen mode). سایر حالت‌ها، مانند سرور پروکسی HTTP، به عنوان حالت‌های خاصی از این دو عمل می‌کنند. در حالت اتصال، Ncat به عنوان یک کلاینت کار می‌کند. در حالت شنود، به عنوان یک سرور عمل می‌نماید.

در حالت اتصال، آرگومان‌های hostname و port مشخص می‌کنند که اتصال به چه مقصدی برقرار شود. درج hostname الزامی است و می‌تواند نام میزبان یا نشانی IP باشد. اگر port ارائه شود، باید یک شماره پورت ده‌دهی باشد. در صورت حذف، مقدار پیش‌فرض آن 31337 است.

در حالت شنود، hostname و port نشانی‌ای را که سرور به آن مقید (bind) می‌شود کنترل می‌کنند. هر دو آرگومان در حالت شنود اختیاری هستند. اگر hostname حذف شود، به‌طور پیش‌فرض به تمام آدرس‌های موجود روی IPv4 و IPv6 گوش می‌دهد. اگر port حذف شود، مقدار پیش‌فرض آن 31337 خواهد بود.

-4 (تنها IPv4)

اجبار به استفاده انحصاری از IPv4.

-6 (تنها IPv6)

اجبار به استفاده انحصاری از IPv6.

-U, --unixsock (استفاده از سوکت‌های دامنه یونیکس)

استفاده از سوکت‌های دامنه یونیکس به جای سوکت‌های شبکه. این گزینه می‌تواند به تنهایی برای سوکت‌های جریانی (stream sockets) یا در ترکیب با --udp برای سوکت‌های دیتاگرام استفاده شود. توضیحات حالت -U در بخشی به نام «سوکت‌های دامنه یونیکس (UNIX DOMAIN SOCKETS)» آمده است.

-u, --udp (استفاده از UDP)

استفاده از UDP برای اتصال (حالت پیش‌فرض TCP است).

--sctp (استفاده از SCTP)

استفاده از SCTP برای اتصال (حالت پیش‌فرض TCP است). پشتیبانی از SCTP در حالت سازگار با TCP پیاده‌سازی شده است.

--vsock (استفاده از سوکت‌های AF_VSOCK)

استفاده از سوکت‌های AF_VSOCK به جای سوکت‌های پیش‌فرض TCP (تنها در لینوکس). این گزینه می‌تواند به تنهایی برای سوکت‌های جریانی یا در ترکیب با --udp برای سوکت‌های دیتاگرام به کار رود. شرح حالت --vsock در بخشی با عنوان «سوکت‌های AF_VSOCK» ارائه شده است.

-g hop1[,hop2,...] (مسیریابی مبدأ آزاد)

تعیین گام‌ها (hops) برای مسیریابی مبدأ آزاد (loose source routing) در IPv4. می‌توانید از -g یک بار با فهرستی از گام‌های جداشده با کاما استفاده کنید، یا -g را چندین بار با گام‌های تکی برای ساخت فهرست به کار ببرید، یا هر دو را ترکیب کنید. گام‌ها را می‌توان به صورت آدرس‌های IP یا نام‌های میزبان مشخص کرد.

-G ptr (تنظیم اشاره‌گر مسیریابی مبدأ)

تنظیم «اشاره‌گر» مسیریابی مبدأ IPv4 برای استفاده با -g. این آرگومان باید مضربی از ۴ و حداکثر ۲۸ باشد. تمام سیستم‌عامل‌ها از تنظیم این اشاره‌گر روی مقداری غیر از چهار پشتیبانی نمی‌کنند.

-p port, --source-port port (تعیین پورت مبدأ)

تنظیم شماره پورت برای مقید شدن (bind) Ncat.

-s host, --source host (تعیین آدرس مبدأ)

تنظیم آدرس برای مقید شدن Ncat.

برای مشاهده اطلاعات درباره محدود کردن میزبان‌هایی که می‌توانند به فرآیند شنود Ncat متصل شوند، بخش «گزینه‌های کنترل دسترسی (ACCESS CONTROL OPTIONS)» را ببینید.

-l, --listen (شنود برای اتصالات)

گوش دادن به اتصالات ورودی به جای اتصال به یک رایانه راه دور.

-m numconns, --max-conns numconns (تعیین حداکثر تعداد اتصالات)

حداکثر تعداد اتصالات همزمانی که توسط یک نمونه از Ncat پذیرفته می‌شود. مقدار پیش‌فرض ۱۰۰ است (۶۰ در ویندوز).

-k, --keep-open (پذیرش چندین اتصال و عدم خروج با EOF سوکت)

در حالت عادی، سرور شنونده تنها یک اتصال را می‌پذیرد و پس از بسته شدن آن خاتمه می‌یابد. این گزینه موجب می‌شود که چندین اتصال همزمان را بپذیرد و پس از بسته شدن همه آنها، منتظر اتصالات بیشتر بماند. این گزینه باید با --listen ترکیب شود. در این حالت هیچ راهی وجود ندارد که Ncat متوجه شود ورودی شبکه چه زمانی به پایان رسیده است، بنابراین تا زمان توقف دستی به کار خود ادامه می‌دهد. این امر همچنین بدان معناست که هرگز جریان خروجی خود را نمی‌بندد، بنابراین هر برنامه‌ای که از Ncat داده می‌خواند و منتظر انتهای فایل (EOF) است معلق خواهد ماند.

در حالت اتصال، گزینه -k معنای متفاوتی دارد: هنگامی که طرف راه دور یک اتصال TCP سمت خود را می‌بندد، Ncat به اجرا و ارسال هرگونه داده در دسترس ادامه خواهد داد. این رفتار پیش‌فرض در Ncat 7.95 و نسخه‌های پیشین بود، اما برای هماهنگی بیشتر با سایر پیاده‌سازی‌های netcat تغییر یافت. پروتکل TCP تنها پروتکل انتقالی است که از این گزینه در حالت اتصال پشتیبانی می‌کند.

--broker (واسطه‌گری اتصالات)

امکان اتصال چندین طرف به یک سرور متمرکز Ncat و برقراری ارتباط با یکدیگر را فراهم می‌سازد. Ncat می‌تواند ارتباط بین سیستم‌هایی را که پشت NAT هستند یا به هر دلیلی قادر به اتصال مستقیم نیستند واسطه‌گری کند. این گزینه در ترکیب با --listen استفاده می‌شود که باعث فعال شدن حالت واسطه‌گری روی پورت --listen می‌گردد.

--chat (سرور چت فوری)

گزینه --chat حالت گفت‌وگو (چت) را فعال می‌کند که برای تبادل متن میان چندین کاربر طراحی شده است. در حالت چت، واسطه‌گری اتصالات فعال است. Ncat پیش از ارسال هر پیام دریافتی به سایر اتصالات، یک شناسه (ID) به ابتدای آن اضافه می‌کند. این شناسه برای هر کلاینت متصل منحصر‌به‌فرد است و کمک می‌کند مشخص شود چه کسی چه پیامی ارسال کرده است. علاوه بر این، کاراکترهای غیرقابل‌چاپ مانند نویسه‌های کنترلی escape می‌شوند تا از وارد آمدن آسیب به ترمینال جلوگیری به عمل آید.

--ssl (استفاده از SSL)

در حالت اتصال، این گزینه به صورت شفاف یک نشست SSL را با سرور SSL مذاکره می‌کند تا اتصال را به طور امن رمزگذاری نماید. این ویژگی به ویژه برای تعامل با سرورهای HTTP مجهز به SSL بسیار کاربردی است.

در حالت سرور، این گزینه به جای ترافیک ساده، به اتصالات ورودی SSL گوش می‌دهد.

در حالت UDP، این گزینه پروتکل Datagram TLS (DTLS) را فعال می‌نماید.

--ssl-verify (اعتبارسنجی گواهی‌های سرور)

در حالت کلاینت، گزینه --ssl-verify مشابه --ssl است، با این تفاوت که اعتبارسنجی گواهی سرور را نیز الزامی می‌کند. Ncat همراه با مجموعه‌ای پیش‌فرض از گواهی‌های مورد اعتماد در فایل ca-bundle.crt ارائه می‌شود. برخی سیستم‌عامل‌ها فهرستی پیش‌فرض از گواهی‌های مورد اعتماد فراهم می‌کنند؛ در صورت موجود بودن، این فهرست‌ها نیز مورد استفاده قرار می‌گیرند. از --ssl-trustfile برای ارائه یک فهرست سفارشی استفاده کنید. از -v یک یا چند بار برای دریافت جزئیات درباره خطاهای اعتبارسنجی بهره بگیرید. Ncat گواهی‌های باطل‌شده (revoked) را بررسی نمی‌کند.

این گزینه در حالت سرور هیچ اثری ندارد.

--ssl-cert certfile.pem (تعیین گواهی SSL)

این گزینه مسیر فایل‌های گواهی با کدگذاری PEM را مشخص می‌کند که برای احراز هویت سرور (در حالت شنود) یا کلاینت (در حالت اتصال) استفاده می‌شوند. آن را در ترکیب با --ssl-key به کار ببرید.

--ssl-key keyfile.pem (تعیین کلید خصوصی SSL)

این گزینه مسیر فایل کلید خصوصی با کدگذاری PEM را تعیین می‌کند که با گواهی مشخص‌شده توسط --ssl-cert مرتبط است.

--ssl-trustfile cert.pem (فهرست گواهی‌های مورد اعتماد)

این گزینه فهرستی از گواهی‌ها را تعیین می‌کند که برای اعتبارسنجی گواهی مورد اعتماد هستند. این گزینه هیچ اثری ندارد مگر اینکه با --ssl-verify ترکیب شود. آرگومان این گزینه نام یک فایل PEM حاوی گواهی‌های معتبر است. معمولاً این فایل شامل گواهی‌های مراجع صدور گواهی (CA) است، هرچند ممکن است مستقیماً شامل گواهی‌های سرور نیز باشد. هنگامی که از این گزینه استفاده می‌شود، Ncat از گواهی‌های پیش‌فرض خود استفاده نمی‌کند.

--ssl-ciphers cipherlist (تعیین مجموعه‌های رمزشناسی SSL)

این گزینه فهرست مجموعه‌های رمزشناسی (ciphersuites) را مشخص می‌کند که Ncat هنگام اتصال به سرورها یا هنگام پذیرش اتصالات SSL از کلاینت‌ها استفاده خواهد کرد. ساختار نگارشی در صفحه راهنمای OpenSSL ciphers(1) شرح داده شده و مقدار پیش‌فرض آن برابر است با: ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!MD5:@STRENGTH

--ssl-servername name (درخواست نام سرور متمایز)

در حالت کلاینت، این گزینه افزونه TLS SNI (Server Name Indication) را تنظیم می‌کند که نام سرور منطقی مورد اتصال Ncat را به سرور اعلام می‌دارد. این ویژگی زمانی بسیار مهم است که سرور مقصد میزبان چندین سرور مجازی روی یک آدرس شبکه منفرد باشد. در صورت عدم درج این گزینه، افزونه TLS SNI با نام میزبان سرور مقصد پر خواهد شد.

--ssl-alpn ALPN list (تعیین فهرست پروتکل‌های ALPN)

این گزینه امکان می‌دهد فهرستی از پروتکل‌های جداشده با کاما را برای ارسال از طریق افزونه Application-Layer Protocol Negotiation (ALPN) در TLS مشخص فرمایید. این قابلیت توسط تمام نسخه‌های OpenSSL پشتیبانی نمی‌شود.

--proxy host[:port] (تعیین آدرس پروکسی)

درخواست عبور از طریق پروکسی host:port، با استفاده از پروتکل مشخص‌شده با --proxy-type.

اگر پورتی مشخص نشود، پورت استاندارد و شناخته‌شده پروتکل پروکسی استفاده خواهد شد (۱۰۸۰ برای SOCKS و ۳۱۲۸ برای HTTP). هنگام تعیین یک سرور پروکسی IPv6 HTTP با آدرس IP به جای نام میزبان، باید الزاماً از نمادگذاری کروشه (مثلاً [2001:db8::1]:8080) برای تفکیک پورت از آدرس IPv6 استفاده شود. اگر پروکسی نیاز به احراز هویت دارد، از --proxy-auth استفاده فرمایید.

--proxy-type proto (تعیین پروتکل پروکسی)

در حالت اتصال، این گزینه پروتکل proto را برای اتصال از طریق میزبان پروکسی مشخص‌شده با --proxy درخواست می‌کند. در حالت شنود، موجب می‌شود Ncat به عنوان یک سرور پروکسی با استفاده از پروتکل مشخص‌شده عمل کند.

پروتکل‌های در دسترس فعلی در حالت اتصال عبارتند از http (CONNECT)، socks4 (SOCKSv4) و socks5 (SOCKSv5). تنها سروری که در حال حاضر پشتیبانی می‌شود http است. اگر این گزینه به کار نرود، پروتکل پیش‌فرض http خواهد بود.

--proxy-auth user[:pass] (تعیین اطلاعات اعتباری پروکسی)

در حالت اتصال، اعتبارنامه‌هایی را ارائه می‌دهد که برای اتصال به سرور پروکسی به کار می‌روند. در حالت شنود، اعتبارنامه‌های مورد نیاز کلاینت‌های متصل‌شونده را تعیین می‌کند. برای استفاده با --proxy-type http یا --proxy-type socks5، ساختار باید به شکل username:password باشد. برای --proxy-type socks4، باید تنها به صورت username باشد.

این اعتبارنامه‌ها را می‌توان به عنوان جایگزین از طریق تنظیم متغیر محیطی NCAT_PROXY_AUTH نیز به Ncat منتقل کرد که ریسک ثبت آنها در گزارش‌های فرآیند را کاهش می‌دهد. (گزینه --proxy-auth اولویت بالاتری دارد.)

--proxy-dns type (تعیین محل ترجمه مقصد پروکسی)

در حالت اتصال، مشخص می‌کند که آیا نام‌های میزبان مقصد پروکسی توسط سرور پروکسی راه دور ترجمه شوند یا به صورت محلی توسط خود Ncat. مقادیر ممکن برای type عبارتند از:

local - نام‌های میزبان به صورت محلی روی میزبان Ncat ترجمه می‌شوند. اگر نام میزبان قابل حل نباشد، Ncat با خطا خارج می‌شود.

remote - نام‌های میزبان مستقیماً به سرور پروکسی راه دور تحویل داده می‌شوند. این رفتار پیش‌فرض است.

both - ابتدا تلاش می‌شود نام میزبان روی هاست Ncat ترجمه شود. نام‌های غیرقابل حل به سرور پروکسی راه دور فرستاده می‌شوند.

none - ترجمه نام میزبان به طور کامل غیرفعال می‌شود. تنها می‌توان از یک آدرس مستقیم عددی IPv4 یا IPv6 به عنوان مقصد پروکسی استفاده کرد.

ترجمه محلی نام میزبان به طور کلی از نسخه IP مشخص‌شده با گزینه‌های -4 یا -6 پیروی می‌کند، به جز برای SOCKS4 که با IPv6 ناسازگار است.

-e command, --exec command (اجرای دستور)

اجرای دستور مشخص‌شده پس از برقراری اتصال. دستور باید به صورت مسیر کامل درج شود. تمام ورودی‌های کلاینت راه دور به برنامه ارسال شده و پاسخ‌ها از طریق سوکت به کلاینت راه دور بازگردانده می‌شوند؛ بدین ترتیب برنامه خط فرمانی شما از طریق یک سوکت تعاملی می‌شود. در ترکیب با --keep-open، Ncat چندین اتصال همزمان به پورت/برنامه مشخص‌شده را مانند inetd مدیریت می‌کند. Ncat تنها حداکثر تعداد معینی از اتصالات همزمان را می‌پذیرد که توسط گزینه -m کنترل می‌شود. به‌طور پیش‌فرض این مقدار روی ۱۰۰ تنظیم شده است (۶۰ در ویندوز).

-c command, --sh-exec command (اجرای دستور از طریق sh)

مشابه -e، با این تفاوت که تلاش می‌کند دستور را از طریق /bin/sh اجرا کند. این بدان معناست که نیازی به تعیین مسیر کامل برای دستور ندارید، و امکانات شل مانند متغیرهای محیطی در دسترس خواهند بود.

--lua-exec file (اجرای یک اسکریپت lua.)

فایل مشخص‌شده را پس از برقراری اتصال، با استفاده از مفسر داخلی به عنوان یک اسکریپت Lua اجرا می‌کند. هم ورودی استاندارد و هم خروجی استاندارد اسکریپت به جریان‌های داده اتصال بازهدایت می‌شوند.

تمام گزینه‌های اجرا متغیرهای زیر را به محیط فرآیند فرزند اضافه می‌کنند:

NCAT_REMOTE_ADDR, NCAT_REMOTE_PORT

نشانی IP و شماره پورت میزبان راه دور. در حالت اتصال، نشانی مقصد است؛ در حالت شنود، نشانی کلاینت می‌باشد.

NCAT_LOCAL_ADDR, NCAT_LOCAL_PORT

نشانی IP و شماره پورت انتهای محلی اتصال.

NCAT_PROTO

پروتکل مورد استفاده: یکی از TCP، UDP، و SCTP.

--allow host[,host,...] (مجاز شمردن اتصالات)

فهرست میزبان‌های مشخص‌شده تنها میزبان‌هایی خواهند بود که مجاز به اتصال به فرآیند Ncat هستند. سایر تلاش‌های اتصال قطع خواهند شد. در صورت بروز تعارض میان --allow و --deny، گزینه --allow اولویت دارد. ساختار تعیین میزبان از همان نحو نگارشی مورد استفاده در Nmap تبعیت می‌کند.

--allowfile file (مجاز شمردن اتصالات از فایل)

این گزینه عملکردی یکسان با --allow دارد، با این تفاوت که میزبان‌های مجاز در یک فایل با خطوط تفکیک‌شده قرار می‌گیرند، نه مستقیماً در خط فرمان.

--deny host[,host,...] (مسدود کردن اتصالات)

فهرستی از میزبان‌هایی را به Ncat معرفی می‌کند که اجازه اتصال به فرآیند شنود Ncat را ندارند. در صورت تلاش میزبان‌های مشخص‌شده برای اتصال، نشست آنها بی‌صدا خاتمه می‌یابد. در صورت تعارض میان --allow و --deny، گزینه --allow اولویت دارد. تعیین میزبان‌ها از همان قواعد Nmap پیروی می‌کند.

--denyfile file (مسدود کردن اتصالات از فایل)

این گزینه همان عملکرد --deny را دارد، به جز اینکه میزبان‌های مستثنی‌شده در یک فایل تفکیک‌شده با خطوط جدید ارائه می‌شوند، نه مستقیماً در خط فرمان.

این گزینه‌ها پارامتر time را دریافت می‌کنند. این مقدار به‌طور پیش‌فرض بر حسب ثانیه مشخص می‌شود، هرچند می‌توانید پسوندهای ms، s، m، یا h را به مقدار اضافه کنید تا میلی‌ثانیه، ثانیه، دقیقه یا ساعت مشخص شود.

-d time, --delay time (تعیین تأخیر بین خطوط)

تنظیم بازه تأخیر برای خطوط ارسالی. این گزینه به طور مؤثری تعداد خطوطی را که Ncat در بازه مشخص ارسال می‌کند محدود می‌سازد. این کار ممکن است برای ارتباطات کم‌پهنای‌باند یا برای غلبه بر محدودیت‌های گزینه‌های iptables --limit مفید باشد.

-i time, --idle-timeout time (تعیین مهلت زمان بیکاری)

تنظیم یک مهلت زمانی مشخص برای اتصالات بدون فعالیت (idle). در صورت رسیدن به مهلت بیکاری، اتصال قطع می‌شود.

-q time (تأخیر خروج پس از دریافت EOF در stdin)

پس از دریافت EOF در ورودی استاندارد (stdin)، به اندازه زمان مشخص‌شده صبر کرده و سپس خارج می‌شود. اگر time منفی باشد، برای همیشه صبر می‌کند. Ncat ممکن است همچنان بر اساس مهلت بیکاری یا EOF روی سوکت خارج شود.

-w time, --wait time (تعیین مهلت اتصال)

تنظیم مهلت زمانی ثابت برای تلاش‌های برقراری اتصال.

-o file, --output file (ذخیره داده‌های نشست)

ذخیره داده‌های نشست در یک فایل.

-x file, --hex-dump file (ذخیره داده‌های نشست به صورت هگز)

ذخیره داده‌های نشست در یک فایل به صورت هگزادسیمال.

--append-output (الحاق خروجی)

استفاده از گزینه --append-output به همراه -o یا -x موجب می‌شود خروجی حاصل به جای بازنویسی کامل فایل‌های خروجی مشخص‌شده، به انتهای آنها ضمیمه شود.

-v, --verbose (حالت پرگویی)

استفاده از -v باعث می‌شود Ncat در حالت پرگویی کار کند و انواع اطلاعات مفید مربوط به اتصال را به نمایش بگذارد. برای پرگویی و جزئیات بیشتر بیش از یک بار (-vv، -vvv...) استفاده کنید.

-C, --crlf (استفاده از CRLF برای پایان خط)

این گزینه به Ncat دستور می‌دهد که هنگام دریافت ورودی از standard input، انتهای خطوط LF را به CRLF تبدیل کند. این ویژگی برای تعامل مستقیم با برخی از سرورهای سخت‌گیر از طریق ترمینال در پروتکل‌های متنی متداول که از CRLF برای پایان خط استفاده می‌کنند کاربرد دارد.

-h, --help (صفحه راهنما)

نمایش یک صفحه راهنمای خلاصه شامل گزینه‌ها و پارامترهای متداول، و سپس خروج.

--recv-only (فقط دریافت داده)

در صورت درج این گزینه، Ncat تنها داده‌ها را دریافت می‌کند و برای ارسال چیزی تلاش نخواهد کرد.

--send-only (فقط ارسال داده)

در صورت درج این گزینه، Ncat تنها داده‌ها را ارسال می‌کند و داده‌های دریافتی را نادیده می‌گیرد. این گزینه همچنین باعث می‌شود Ncat پس از دریافت EOF در stdin، اتصال شبکه را بسته و خاتمه یابد.

--no-shutdown (عدم خاموشی به حالت نیمه‌دوطرفه)

در صورت درج این گزینه، Ncat پس از مشاهده EOF روی stdin، فراخوانی shutdown را روی سوکت انجام نمی‌دهد. این قابلیت برای سازگاری عقب‌رو با netcat توزیع OpenBSD تعبیه شده است که هنگام اجرا با گزینه -d چنین رفتاری دارد.

-n, --nodns (عدم ترجمه نام‌های میزبان)

غیرفعال‌سازی کامل ترجمه نام میزبان در سراسر گزینه‌های Ncat، مانند مقصد، آدرس مبدأ، گام‌های مسیریابی مبدأ و پروکسی. تمام آدرس‌ها باید به صورت عددی مشخص شوند. (توجه داشته باشید که ترجمه مقصدهای پروکسی به صورت جداگانه از طریق گزینه --proxy-dns کنترل می‌شود.)

-t, --telnet (پاسخ به مذاکرات تلنت)

مدیریت مذاکرات DO/DONT WILL/WONT در پروتکل تلنت. این امر امکان اسکریپت‌نویسی نشست‌های Telnet را با Ncat فراهم می‌سازد.

--version (نمایش نسخه)

نمایش شماره نسخه Ncat و خروج.

گزینه -U (مشابه --unixsock) موجب می‌شود Ncat به جای سوکت‌های شبکه از سوکت‌های دامنه یونیکس استفاده کند. سوکت‌های دامنه یونیکس به عنوان یک مدخل در سیستم فایل وجود دارند. شما باید نام سوکتی را برای اتصال یا شنود تعیین کنید. به عنوان مثال، برای ایجاد اتصال:

ncat -U ~/unixsock

برای شنود روی یک سوکت:

ncat -l -U ~/unixsock

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

هر دو نوع سوکت دامنه جریانی و دیتاگرام پشتیبانی می‌شوند. از -U به تنهایی برای سوکت‌های جریانی استفاده کنید، یا آن را با --udp برای سوکت‌های دیتاگرام ترکیب فرمایید. سوکت‌های دیتاگرام نیازمند یک سوکت مبدأ برای برقراری اتصال هستند. به‌طور پیش‌فرض، یک سوکت مبدأ با نام تصادفی در صورت نیاز ایجاد شده و پس از پایان برنامه حذف می‌گردد. از گزینه --source به همراه یک مسیر برای استفاده از یک سوکت مبدأ با نام مشخص استفاده کنید.

گزینه --vsock موجب می‌شود Ncat به جای سوکت‌های شبکه از سوکت‌های AF_VSOCK استفاده کند. به جای نام میزبان یا نشانی IP، باید یک CID ارائه شود. به عنوان مثال، برای برقراری اتصال به هاست:

ncat --vsock 2 1234

برای شنود روی یک سوکت:

ncat -l --vsock 1234

هر دو نوع سوکت جریانی و دیتاگرام پشتیبانی می‌شوند، اما در دسترس بودن نوع سوکت بستگی به هایپروایزر دارد. از --vsock به تنهایی برای سوکت‌های جریانی، یا در ترکیب با --udp برای سوکت‌های دیتاگرام استفاده کنید.

اتصال به example.org روی پورت TCP شماره 8080.

ncat example.org 8080

شنود برای اتصالات ورودی روی پورت TCP شماره 8080.

ncat -l 8080

بازهدایت پورت TCP شماره 8080 در سیستم محلی به پورت 80 در میزبان مشخص.

ncat --sh-exec "ncat example.org 80" -l 8080 --keep-open

متصل شدن به پورت TCP شماره 8081 و متصل کردن /bin/bash برای دسترسی آزادانه در سراسر شبکه.

ncat --exec "/bin/bash" -l 8081 --keep-open

اتصال یک شل به پورت TCP شماره 8081، محدود کردن دسترسی به میزبان‌های یک شبکه محلی، و محدود کردن حداکثر اتصالات همزمان به ۳ عدد.

ncat --exec "/bin/bash" --max-conns 3 --allow 192.168.0.0/24 -l 8081 --keep-open

اتصال به smtphost:25 از طریق یک سرور SOCKS4 روی پورت 1080.

ncat --proxy socks4host --proxy-type socks4 --proxy-auth joe smtphost 25

اتصال به smtphost:25 از طریق یک سرور SOCKS5 روی پورت 1080.

ncat --proxy socks5host --proxy-type socks5 --proxy-auth joe:secret smtphost 25

ایجاد یک سرور پروکسی HTTP روی localhost پورت 8888.

ncat -l --proxy-type http localhost 8888

ارسال یک فایل از طریق پورت TCP شماره 9899 از host2 (کلاینت) به host1 (سرور).

HOST1$ ncat -l 9899 > outputfile

HOST2$ ncat HOST1 9899 < inputfile

انتقال فایل در جهت معکوس، و تبدیل Ncat به یک سرور «تک‌فایل».

HOST1$ ncat -l 9899 < inputfile

HOST2$ ncat HOST1 9899 > outputfile

کد خروج مشخص می‌کند که آیا اتصال با موفقیت برقرار و تکمیل شده است یا خیر. مقدار 0 یعنی هیچ خطایی رخ نداده است. مقدار 1 به معنای بروز یک خطای شبکه است؛ مانند «Connection refused» یا «Connection reset». مقدار 2 برای تمام خطاهای دیگر مانند گزینه نامعتبر یا فایل ناموجود در نظر گرفته شده است.

همانند سازندگانش، 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 ارسال کنید.

•Chris Gibson <chris@linuxops.net>
•Gordon Lyon (Fyodor)<fyodor@nmap.org> (http://insecure.org)
•Kris Katterjohn <katterjohn@gmail.com>
•Mixter <mixter@gmail.com>

نسخه اصلی Netcat توسط Hobbit* <hobbit@avian.org>* نوشته شده بود. هرچند Ncat بر پایه هیچ کدی از Netcat «سنتی» (یا هر پیاده‌سازی دیگری) ساخته نشده است، ولی در عین حال Ncat از نظر روح و عملکرد کاملاً مبتنی بر Netcat است.

نرم‌افزار Ncat دارای حق نشر (C) 2005–2022 شرکت Nmap Software LLC است. این نرم‌افزار به عنوان نرم‌افزار آزاد و متن‌باز تحت شرایط مشابه نرم‌افزار Nmap توزیع می‌شود. شرایط دقیق و جزئیات بیشتر در نشانی زیر در دسترس است: https://nmap.org/man/man-legal.html.

این «راهنمای مرجع 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 آمده است مجوز کد را به اشخاص ثالث واگذار می‌کنیم. اگر تمایل دارید شرایط مجوز ویژه‌ای برای مشارکت‌های خود تعیین کنید، کافی است هنگام ارسال آنها این موضوع را قید فرمایید.

این برنامه با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت تجاری یا مناسب بودن برای یک هدف معین. برای اطلاعات بیشتر به مجوز منبع عمومی Nmap در نشانی زیر مراجعه فرمایید: https://nmap.org/npsl, یا فایل LICENSE همراه با Nmap را مطالعه نمایید.

ابزار Ncat هرگز نباید با امتیازات ویژه (مانند suid root) نصب شود. این امر می‌تواند یک روزنه امنیتی بزرگ ایجاد کند زیرا سایر کاربران روی سیستم (یا مهاجمان) می‌توانند از آن برای ارتقای امتیاز (privilege escalation) استفاده کنند.

این محصول شامل نرم‌افزارهای توسعه‌یافته توسط Apache Software Foundation[2] است. یک نسخه اصلاح‌شده از کتابخانه قابل حمل شکار بسته‌های Libpcap[3] به همراه Ncat توزیع شده است. نسخه ویندوز Ncat در عوض از کتابخانه Npcap library[4] مشتق‌شده از Libpcap بهره می‌برد. برخی عملکردهای سطح پایین شبکه از کتابخانه شبکه‌ای Libdnet[5] که توسط Dug Song نوشته شده استفاده می‌کنند. یک نسخه اصلاح‌شده به همراه Ncat توزیع گردیده است. Ncat می‌تواند به صورت اختیاری به جعبه‌ابزار رمزنگاری OpenSSL[6] برای پشتیبانی از تشخیص نسخه SSL متصل شود. تمامی نرم‌افزارهای شخص ثالث ذکرشده در این پاراگراف، تحت مجوزهای نرم‌افزاری سبک BSD به صورت آزاد قابل بازتوزیع هستند.

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