0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过 10 个例子来学习如何使用 nc 命令

Linux爱好者 2018-02-06 09:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

ncat或者说nc是一款功能类似cat的工具,但是是用于网络的。它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。

ncat/nc既是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 TCP 代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。

在大多数 Debian 发行版中,nc是默认可用的,它会在安装系统的过程中自动被安装。 但是在 CentOS 7 / RHEL 7 的最小化安装中,nc并不会默认被安装。 你需要用下列命令手工安装。

[root@linuxtechi ~]# yum install nmap-ncat -y

系统管理员可以用它来审计系统安全,用它来找出开放的端口然后保护这些端口。管理员还能用它作为客户端来审计 Web 服务器、telnet 服务器、邮件服务器等, 通过nc我们可以控制发送的每个字符,也可以查看对方的回应。

我们还可以用它捕获客户端发送的数据以此来了解这些客户端是做什么的。

在本文中,我们会通过 10 个例子来学习如何使用nc命令。

例子: 1) 监听入站连接

通过-l选项,ncat可以进入监听模式,使我们可以在指定端口监听入站连接。 完整的命令是这样的:

$ ncat -l port_number

比如,

$ ncat -l 8080

服务器就会开始在 8080 端口监听入站连接。

例子: 2) 连接远程系统

使用下面命令可以用nc来连接远程系统,

$ ncat IP_address port_number

让我们来看个例子,

$ ncat 192.168.1.100 80

这会创建一个连接,连接到 IP 为 192.168.1.100 的服务器上的 80 端口,然后我们就可以向服务器发送指令了。 比如我们可以输入下面内容来获取完整的网页内容

GET / HTTP/1.1

或者获取页面名称,

GET / HTTP/1.1

或者我们可以通过以下方式获得操作系统指纹标识,

GET / HTTP/1.1

这会告诉我们使用的是什么软件来运行这个 web 服务器的。

例子: 3) 连接 UDP 端口

默认情况下,nc创建连接时只会连接 TCP 端口。 不过我们可以使用-u选项来连接到 UDP 端口,

$ ncat -l -u 1234

现在我们的系统会开始监听 UDP 的 1234 端口,我们可以使用下面的netstat命令来验证这一点,

$netstat -tunlp | grep1234

udp 000.0.0.0:1234 0.0.0.0:* 17341/nc

udp600 :::1234:::*

假设我们想发送或者说测试某个远程主机 UDP 端口的连通性,我们可以使用下面命令,

$ ncat -v -u {host-ip} {udp-port}

比如:

[root@localhost ~]# ncat -v -u 192.168.105.150 53

Ncat: Version6.40(http://nmap.org/ncat )

Ncat: Connected to192.168.105.150:53。

例子: 4) 将nc作为聊天工具

nc也可以作为聊天工具来用,我们可以配置服务器监听某个端口,然后从远程主机上连接到服务器的这个端口,就可以开始发送消息了。 在服务器这端运行:

$ ncat -l 8080

在远程客户端主机上运行:

$ ncat 192.168.1.100 8080

之后开始发送消息,这些消息会在服务器终端上显示出来。

例子: 5) 将nc作为代理

nc也可以用来做代理。比如下面这个例子,

$ ncat -l 8080 | ncat 192.168.1.200 80

所有发往我们服务器 8080 端口的连接都会自动转发到 192.168.1.200 上的 80 端口。 不过由于我们使用了管道,数据只能被单向传输。 要同时能够接受返回的数据,我们需要创建一个双向管道。 使用下面命令可以做到这点:

$mkfifo2way

$ncat -l80800<2way | ncat192.168.1.200801>2way

现在你可以通过nc代理来收发数据了。

例子: 6) 使用nc拷贝文件

nc还能用来在系统间拷贝文件,虽然这么做并不推荐,因为绝大多数系统默认都安装了ssh/scp。 不过如果你恰好遇见个没有ssh/scp的系统的话, 你可以用nc来作最后的努力。

在要接受数据的机器上启动nc并让它进入监听模式:

$ ncat -l8080 > file.txt

现在去要被拷贝数据的机器上运行下面命令:

$ ncat 192.168.1.100 8080 --send-only < data.txt

这里,data.txt是要发送的文件。-–send-only选项会在文件拷贝完后立即关闭连接。 如果不加该选项, 我们需要手工按下ctrl+c来关闭连接。

我们也可以用这种方法拷贝整个磁盘分区,不过请一定要小心。

例子: 7) 通过nc创建后门

nc命令还可以用来在系统中创建后门,并且这种技术也确实被黑客大量使用。 为了保护我们的系统,我们需要知道它是怎么做的。 创建后门的命令为:

$ ncat -l 10000 -e /bin/bash

-e标志将一个 bash 与端口 10000 相连。现在客户端只要连接到服务器上的 10000 端口就能通过 bash 获取我们系统的完整访问权限:

$ ncat 192.168.1.100 10000

例子: 8) 通过nc进行端口转发

我们通过选项-c来用nc进行端口转发,实现端口转发的语法为:

$ ncat -u -l80 -c'ncat -u -l 8080'

这样,所有连接到 80 端口的连接都会转发到 8080 端口。

例子: 9) 设置连接超时

nc的监听模式会一直运行,直到手工终止。 不过我们可以通过选项-w设置超时时间:

$ ncat -w 10 192.168.1.100 8080

这回导致连接 10 秒后终止,不过这个选项只能用于客户端而不是服务端。

例子: 10) 使用-k选项强制nc待命

当客户端从服务端断开连接后,过一段时间服务端也会停止监听。 但通过选项-k我们可以强制服务器保持连接并继续监听端口。 命令如下:

$ ncat -l -k 8080

现在即使来自客户端的连接断了也依然会处于待命状态。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11810

    浏览量

    219514
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1433

    浏览量

    83758
  • NC
    NC
    +关注

    关注

    0

    文章

    21

    浏览量

    14420

原文标题:10 个例子教你学会 ncat (nc) 命令

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入剖析 NTMFS4C06NC:高性能 N 沟道 MOSFET 的卓越之选

    深入剖析 NTMFS4C06NC:高性能 N 沟道 MOSFET 的卓越之选 在电子工程领域,MOSFET 作为关键的功率器件,广泛应用于各类电路设计中。今天,我们将深入探讨一款性能出色的 N 沟道
    的头像 发表于 04-13 11:30 177次阅读

    Linux新手最常踩的10命令坑介绍

    最新的Linux内核特性(kernel 6.x系列)和常见发行版环境(Ubuntu 24.04 LTS、RHEL 9.4、CentOS Stream 10),系统梳理新手最常踩的10命令坑,帮助读者建立正确的操作习惯和风险意识
    的头像 发表于 04-09 10:11 183次阅读

    运维工程师必须掌握的10个系统命令

    系统命令是运维工程师与服务器交互的基础工具。虽然现代运维工作有大量的自动化工具和平台,但掌握核心系统命令仍然必要。命令行工具响应速度快、不依赖图形界面、可以组合使用应对复杂场景。在服务器故障的紧急情况下,
    的头像 发表于 03-23 10:28 214次阅读

    Kubernetes kubectl命令行工具详解

    kubectl是Kubernetes官方提供的命令行工具,作为与Kubernetes集群交互的主要接口,它通过调用Kubernetes API Server实现对集群资源的全面管理。在生产环境中,运维工程师需要熟练掌握kubectl命令
    的头像 发表于 02-02 16:40 586次阅读

    NC203DO35噪声二极管现货库存

    源。该器件可单独作为噪声源,也可用于校准、接收机测试、噪声系数测量等场合,现货市场常简写为 “NC203 DO-35” 。关键参数频率范围:0.1 Hz – 100 MHz推荐工作电压:7 – 10 V
    发表于 01-13 09:22

    10个例子代码,C语言结构体的高级

    当涉及到C语言结构体的高级**时,有很多有趣和强大的技巧可以应用。下面是10个例子代码,每个例子都使用了不同的高级结构体技术,包括位字段、嵌套结构体、联合体、指向结构体的指针等。让我们逐个来讲解这些
    发表于 01-05 06:32

    Linux中13个基本Cat命令示例

    > test2 等待用户输入,输入所需文本并按CTRL+D(按住Ctrl Key并输入d) 退出。文字会写在test2文件。您可以通过以下方式查看文件内容cat命令。 # cat
    发表于 12-26 06:09

    NC407B噪声二极管现货库存

    NC407B是Noisecom公司推出的一款高性能硅基梁式引线(beam-lead)噪声二极管,采用超宽带设计,凭借其高稳定性、对称高斯白噪声特性及军用级温度适应性,广泛应用于超宽带噪声源构建、射频
    发表于 11-24 09:07

    是德示波器自动化测试SCPI命令控制指南

    是德示波器通过标准命令接口SCPI(Standard Commands for Programmable Instruments)实现自动化控制,为测试系统集成与高效调试提供强大支持。本文结合其核心
    的头像 发表于 09-23 17:54 1954次阅读
    是德示波器自动化测试SCPI<b class='flag-5'>命令</b>控制指南

    Linux基础命令which详解

    在Linux系统中,which命令用于查找并显示指定命令的可执行文件路径。这对于系统管理员和开发人员来说是一个非常有用的工具,可以帮助定位命令所在的位置,确认命令是否已正确安装,并且能
    的头像 发表于 07-29 17:58 1052次阅读

    已收藏!你需要知道的57个常用树莓派命令

    初次使用树莓派并不总是那么容易,因为你可能还没有使用命令行的习惯。然而,终端命令是必不可少的,而且通常比通过图形用户界面(GUI)操作更高效。那么,有哪些重要的命令是你应该知道的呢?有
    的头像 发表于 07-23 18:36 1285次阅读
    已收藏!你需要知道的57个常用树莓派<b class='flag-5'>命令</b>!

    labview通过JKL.net发送cmd命令行问题

    请问通过电脑直接发ssh命令,能正常输出,但通过JKL.net发送,提示\'\'ssh\'\'不是内部命令,如何解决?
    发表于 07-02 21:11

    如何使用Traceroute命令

    以下是如何使用 traceroute 命令的详细指南,包括其语法、选项和实际示例。
    的头像 发表于 06-04 11:28 2497次阅读

    CYPD3171可以让该引脚不连接NC吗?

    我有一个定制电路,其中有一个由 MCU 控制的双向降压/升压转换器。 我只需要 CYPD3171 芯片来协商电源角色和电压,并通过 UART 将该信息发送回 MCU。 我唯一不确定的是引脚 19
    发表于 05-08 08:11

    使用CCG2 (CYPD2122-24LQXI) IC,对源发送的 SVDM DISCOVERY IDENTITY命令的响应有问题,怎么解决?

    中的笔记本示例。 这个例子是否需要任何修改来从源请求发现 ID 命令? 我从EZ-PD™配置工具刷新固件和配置并尝试了许多设置,但从未收到发现 ID 命令的响应。 我应该怎么办?
    发表于 05-08 07:08