Linux(网络管理):12---NetCat网络工具

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41453285/article/details/102739547

一、工具简介

  • NetCat 是一个是用于 TCP/UDP 连接和监听的 Linux 工具,是网络传输及调试领域的 “瑞士军刀”,比喻其功能强大。NetCat 既可以作为客户端,也可以作为服务器,它可以是 一个功能丰富的网络调试和开发工具,也可以自由组织报文进行测试。例如 OpenSIPS 软 件使用 NetCat 工具进行功能测试
  • NetCat可以打开TCP连接,发送UDP报文,监听在TCP 和UDP端口,以及TCP端口扫描,而且脚本对用户友好,错误消息输出到屏幕上

二、OpenWrt下的编译

  • 在 make menuconfig 时,选择 NetWork => NetCat,即可编译出来 NetCat 软件包

三、提供的功能

  • 支持客户端和服务器
  • 支持连出和连入,TCP 和 UDP 以及任意源和目的端口
  • 内建端口扫描功能,带有随机数发生器
  • 支持设定 tos 等

四、最基本的用法

  • NetCat 最简单的使用方法是作为 TCP 客户/服务器模型的服务器来使用,它能够监听 任意指定的端口,并将客户端的请求内容输出到标准输出(即屏幕)中,还可以将输入发 送到客户端

演示案例

  • 开启服务端,监听端口为8080
netcat -l 8080
  • 我们在另外一个窗口来启动客 户端打开连接:
netcat 127.0.0.1 8080
  • 这将建立和 NetCat 服务器的 TCP 连接,这时 你从命令行终端中输入的任何内容都会被发送到指定的目的主机(127.0.0.1)上,任何通 过连接返回来的信息都被输出到标准输出上

五、其他用法

  • NetCat 的工作原理就是从网络的一端读入数据,然后输出到网络的另一端,它可以使 用 TCP 或 UDP 协议。它的名字起源于“cat”,cat 软件的功能是读出文件的内容,然后将 文件内容输出到屏幕上。加上 net,就是它可以从文件或网络的一端读取数据,原封不动 地将数据发送到另外一台主机或文件中。NetCat 经常缩写为 nc,我们下面来举例说明几种 常见用法
  • 以下为主要选项:
    • -l:监听模式,通过该选项 NetCat 将在自己的端口处监听。NetCat 以服务器模式 运行,任何客户端软件均可连接到该服务器上。需要使用“-p”指定绑定端口
    • -u:默认使用 TCP,使用该选项将使用 UDP 来通信
    • -p:指定通信源端口号。OpenBSD 版作为服务器不需要使用“-p”指定。作为客 户端可以不指定源端口,但一些特殊场景,例如在测试防火墙对源端口的处理时, 经常会指定源端口
    • -s source_ip_address:指定用于发送报文的源 IP 地址,在主机有多个接口地址时 使用。-e, --exec=PROGRAM:在连接成功后执行程序
    • -z:指定 NC 扫描打开的服务,但并不发送任何数据。必须指定服务器地址和端 口号或端口号范围,扫描的结果以程序返回值形式查看,如果需要扫描的详细信 息需要增加“-v”选项
    • -q seconds:在输入结束后等待指定的时间后退出,如果为负值则永远不退出
    • -T tos:设置报文的 tos 标识

①作为客户端

  • 这是最简单的使用方式,例如输入“nc www.baidu.com 80”在提示 内容输入以下内容,然后再输入两个回车,百度即会对请求做出响应。百度的响应码为 302, 表示这里没有内容,暂时转移到别处了。如修所示

②作为服务器

  • 如下图所示,启动 netcat 命令 netcat -l -p 8080,这里“-l”参 数指明 NetCat 处于监听模式,“-p”指定源端口号。假设这台主机 IP 地址为 192.168.6.1, 然后从客户端的火狐浏览器输入 http://192.168.6.1:8080。这样浏览器将会将 HTTP 请求发 往 NetCat 所监听的 8080 端口,NetCat 会收到浏览器的请求,并全部输出到屏幕上。在防 火墙测试时,可以在服务器启动任意端口来测试防火墙是否生效

③使用 NetCat 进行文件传输

  • 如果研发设备机器上没有 ftp/scp 等文件传输工具, 那如何将设备中的日志文件复制出来,以及可执行程序复制进去?可以使用 NetCat 来传 输文件
  • 如下图所示,研发机器 A 启动服务器进程,并将 aa.pcap 文件传递到 NC 标准输入中,另外的机器 B 执行客户端命令连接服务器,并将命令的标准输出写到文件 bb.pcap 中,执行完成之后将自动退出进程。传输完成后使用 MD5sum 工具计算传输文件 的 MD5 码是否一致,如果一致表示传送成功

④使用 NetCat 来进行端口扫描

  • 使用 NetCat 来进行端口扫描。端口扫描是探测主机服务的流行方法,经常使用的 软件是 nmap。NetCat 也支持端口扫描。在 NetCat 的命令行中,使用“-z”来指定端口扫 描。首先指定选项参数,接着是主机或 IP 地址,最后是服务器端口。端口可以是一些服 务名、端口号或者是一个端口范围(例如 N-M)
  • 如下图所示,对本机端口进行扫描, 发现打开的端口有 3 个,分别为 22 端口启动 SSH 登录协议、53 端口启动 DNS 代理服务、 80 端口启动 HTTP 服务

  • 以上命令用来扫描目标主机的 20~100(两端包含)端口,“-v”显示详细信息,如不 指定将不会在屏幕输出中报告打开的端口;“-z”表示仅连接不发送任何数据;“-i”用以 指明连接多个端口时,两个端口建立连接的时间间隔。通常情况下,扫描按从低到高的顺 序依次扫描指定的端口,使用“-r”参数可以让 NetCat 在指定的端口范围内无序地扫描端 口,这样可以防止某些防火墙发现端口扫描
  • UDP 报文传输时不创建连接,因此 NetCat 不能判断 UDP 服务扫描是否成功,也就是 说它不能用于 UDP 端口扫描

⑤使用 NetCat 来进行 UDP 报文传输

  • 例如开源的 SIP 服务器项目 OpenSIPS 使用 NetCat 进行模拟客户端进行测试。在它的测试脚本 11.sh 中,包含有如下图所示的命令脚本

  • 该命令将当前目录的文本文件 register.sip 文件输出,并使用管道符号“|”将内容作为 NC 的标准输入。“-q 1”表示发送完成后等待 1 秒后退出。“-u”表示指定使用 UDP 协议 来发送报文。localhost 表示目标地址为 127.0.0.1,5060 为 OpenSIPS 服务器使用的 UDP 监 听端口,最后将标准输出重定向到“/dev/null”中。整个命令就是向服务器发起 SIP 注册 请求

⑥使用 NetCat 来提供网络登录服务

  • NetCat 的强大之处,是可以启动程序来提供 远程登录的服务,这样可以提供任何远程操控服务。其主要原理为将远程输入内容通过管 道定向到 shell 进程,然后 shell 进程的输出发送到远程机器上
  • 如下图所示,在 TCP 端口 1234 处监听,客户端即可通过 NetCat 登录到服务器上

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/102739547