Linux命令-nc

405 阅读3分钟
  • nc的全名是netcat

  • 其主要用途是建立监听任意TCP和UDP连接,支持ipv4和ipv6

  • 因此,它可以用来网络调试、端口扫描等等。

测试端口号能否连接

  • 用法:nc -z -v 主机ip或域名 端口号
    • -z告诉netcat,用户不想发送数据给主机,nc不用等待用户输入。

    • -v告诉netcat输出详细的交互过程。

    • -z -v可省略后面的-,直接写作-zv

在这里插入图片描述

端口扫描

  • nc -z -v 主机ip或域名 端口号的扩展,从指定的一个端口变成了一个范围的端口。
  • 用法:nc -zv 主机的ip或域名 端口号下限-端口号上限

注意:虽然可以nc进行端口扫描。

但是它的扫描速度比较慢,建议用nmap命令进行更专业的端口扫描,速度更快。

nmap命令 是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。

语法

nmap(选项)(参数)

选项

-O:激活操作探测;
-P0:值进行扫描,不ping主机;
-PT:是同TCP的ping;
-sV:探测服务版本信息;
-sP:ping扫描,仅发现目标主机是否存活;
-ps:发送同步(SYN)报文;
-PU:发送udp ping;
-PE:强制执行直接的ICMPping;
-PB:默认模式,可以使用ICMPping和TCPping;
-6:使用IPv6地址;
-v:得到更多选项信息;
-d:增加调试信息地输出;
-oN:以人们可阅读的格式输出;
-oX:以xml格式向指定文件输出信息;
-oM:以机器可阅读的格式输出;
-A:使用所有高级扫描选项;
--resume:继续上次执行完的扫描;
-P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围;
-e:在多网络接口Linux系统中,指定扫描使用的网络接口;
-g:将指定的端口作为源端口进行扫描;
--ttl:指定发送的扫描报文的生存期;
--packet-trace:显示扫描过程中收发报文统计;
--scanflags:设置在扫描报文中的TCP标志。
--send-eth/--send-ip 使用原始以太网发送/构造指定IP发送

作为服务端,监听特定端口号

  • 测试客户端是否成功将信息发送到服务端。

  • 用法:nc -l 端口号

    • 默认情况下是TCP
    • 如果是UDP,则是nc -lu 端口号

例子: nc -l 8000,然后用浏览器发起请求127.0.0.1:8000

下图中可以看到netcat打印出来的浏览器发送的请求(包括但不限于请求方式、IP地址及端口号、连接方式、User-Agent……)

作为客户端,检测应用层协议是否正常

  • 作为客户端,连接特定端口号,并发送应用层协议相关的信息,检测应用层协议是否正常。

    • nc -zv 主机的ip或域名 端口号类似,但是前者仅仅测试端口连通性,此处主要侧重上层应用协议
  • 用法:nc 主机的ip或域名 端口号

—文件传输

  • 这条实际上前面两个条的结合运用。

  • 接收端:nc -l 端口号 > 文件名

  • 发送端: nc 主机的ip或域名 端口号 < 文件名