Linux nc 命令

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux nc 命令。

1、命令简介

nc:Linux 和其他 Unix-like 操作系统中的网络工具,它通常用于网络调试和数据传输。nc 代表 "netcat",它是一个功能强大的命令行工具,可以用于创建 TCP 和 UDP 连接,监听端口,进行端口扫描,以及在网络中传输数据。

2、命令语法

nc
.Bk -words [-46DdhklnrStUuvz] [-i interval] [-p source_port] [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [Xo -x proxy_address[: port]] [hostname] [port[s]]
.Ek

3、命令描述

nc(或称为netcat)实用工具用于几乎涵盖了与TCP或UDP有关的各种任务。它可以建立TCP连接、发送UDP数据包、监听任意TCP和UDP端口、进行端口扫描,同时支持IPv4和IPv6。与telnet不同,nc可以很好地用于脚本编写,并将错误消息分离到标准错误输出,而不像telnet将它们发送到标准输出中。

常见用途包括:

  • 简单的TCP代理
  • 基于Shell脚本的HTTP客户端和服务器
  • 网络守护进程测试
  • 作为SSH的SOCKS或HTTP ProxyCommand
  • 以及更多其他用途

4、命令选项

标签描述
-4强制nc仅使用IPv4地址。
-6强制nc仅使用IPv6地址。
-D启用套接字调试。
-d不尝试从标准输入读取数据。
-h打印nc的帮助信息。
-i interval指定发送和接收的文本行之间的延迟时间间隔。
还导致在连接到多个端口时出现延迟时间间隔。
-k强制nc在当前连接完成后继续监听另一个连接。
使用此选项而不带-l选项是错误的。
-l用于指定nc应监听传入连接,而不是发起与远程主机的连接。
在与-p-s-z选项一起使用是错误的。
此外,使用-w选项指定的任何超时都将被忽略。
-n在任何指定的地址、主机名或端口上不执行任何DNS或服务查找。
-p source_port指定nc应使用的源端口,受特权限制和可用性限制。
在与-l选项一起使用是错误的。
-r指定应随机选择源和/或目标端口,
而不是在范围内按顺序选择或按系统分配的顺序选择它们。
-S启用RFC 2385 TCP MD5签名选项。
-s source_ip_address指定用于发送数据包的接口的IP地址。
在与-l选项一起使用是错误的。
-T ToS指定连接的IP服务类型(ToS)。
有效值是标记“lowdelay”、“throughput”、“reliability”
或以“0x”开头的8位十六进制值。
-t导致nc发送RFC 854的DON’T
和WON’T响应给RFC 854的DO和WILL请求。
这使得可以使用nc来脚本化telnet会话。
-U指定使用Unix域套接字。
-u使用UDP而不是默认的TCP选项。
-vnc提供更详细的输出。
-w timeout如果连接和标准输入在timeout秒内空闲,则连接会被静默关闭。
-w标志对-l选项没有影响,也就是说,nc将永远监听连接,
无论是否使用了-w标志。默认情况下没有超时。
-X proxy_version请求nc在与代理服务器通信时使用指定的协议。
支持的协议有“4”(SOCKS v.4)
、“5”(SOCKS v.5)和“connect”(HTTPS代理)。
如果未指定协议,将使用SOCKS版本5。
-x proxy_address[:port]请求nc使用代理地址和端口连接主机名。如果未指定端口,
将使用代理协议的知名端口(SOCKS为1080,HTTPS为3128)。
-z指定nc只扫描正在侦听的守护进程,而不发送任何数据给它们。
在与-l选项一起使用是错误的。

5、使用示例

1)创建 TCP 连接

nc -v host port

2)监听端口

nc -l -p port

3)发送文件

nc -v -w 1 host port < file.txt

4)接收文件

nc -l -p port > received_file.txt

5)端口扫描

nc -zv host start_port-end_port

6)使用 UDP 连接

nc -u -v host port

7)反向 shell

在目标主机上执行以下命令:

nc -l -p port -e /bin/bash

推荐阅读
cjavapy编程之路首页