大数据-玩转数据-netcat

这篇具有很好参考价值的文章主要介绍了大数据-玩转数据-netcat。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Netcat(简称nc)是一款强大的命令行网络工具,用来在两台机器之间建立TCP/UDP连接,并通过标准的输入输出进行数据的读写。

一、Windows 下载安装 netcat(nc)命令

1、netcat(nc)下载地址:

https://eternallybored.org/misc/netcat/
大数据-玩转数据-netcat

2、点击 netcat 1.12 链接进行下载

1、解压netcat-win32-1.12文件夹
大数据-玩转数据-netcat

3、配置环境变量

在Path里添加netcat路径:
大数据-玩转数据-netcat

4、测试

打开两个cmd窗口
第一个执行:nc -l -p 9999
第二个执行:nc localhost 9999

验证执行结果
大数据-玩转数据-netcat
第二个窗口输入 第一个窗口就会接收。

二、linux 下安装执行netcat(nc)命令

大部分的Linux发行版会都会自带Netcat,可以使用nc命令查看系统中是否有安装Netcat

$ nc
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
	  [--apple-recv-anyif] [--apple-awdl-unres]
	  [--apple-boundif ifbound]
	  [--apple-no-cellular] [--apple-no-expensive]
	  [--apple-no-flowadv] [--apple-tcp-timeout conntimo]
	  [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
	  [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
	  [--tcp-adp-rtimo num_probes] [--apple-initcoproc-allow]
	  [--apple-tcp-adp-wtimo num_probes]
	  [--setsockopt-later] [--apple-no-connectx]
	  [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
	  [--apple-kao] [--apple-ext-bk-idle]
	  [--apple-netsvctype svc] [---apple-nowakefromsleep]
	  [--apple-notify-ack] [--apple-sockev]
	  [--apple-tos tos] [--apple-tos-cmsg]
	  [-s source_ip_address] [-w timeout] [-X proxy_version]
	  [-x proxy_address[:port]] [hostname] [port[s]]

出现上面提示信息说明系统中已经安装了Netcat,如果没有安装,可以使用下面命令进行安装

$ wget https://sourceforge.NET/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz
$ tar zxvf netcat-0.7.1.tar.gz
$ cd netcat-0.7.1
$ ./configure
$ make
$ make instal

快速开始
我们可以使用Netcat与HTTP服务器建立连接,以百度为例,使用下面命令与百度建立TCP连接

$ nc www.baidu.com 80

第一个参数为要建立连接的服务器地址,第二个参数为连接端口。成功建立连接后,会进入输入/输出界面,在该界面能向TCP连接发送/接收数据。如百度服务器发送GET请求,模拟浏览器访问百度首页,输入GET / HTTP/1.0并按两次回车

$ nc www.baidu.com 80
GET / HTTP/1.0
(回车)
(回车)

发送完请求后,会收到如下HTTP响应

HTTP/1.0 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 14615
Content-Type: text/html

其他使用场景
端口扫描
Netcat还可以用来做端口扫描,用来发现一些机器上开放的端口

$ nc -zv localhost 9995-9999
nc: connect to localhost port 9995 (tcp) failed: Connection refused
nc: connect to localhost port 9995 (tcp) failed: Connection refused
nc: connect to localhost port 9996 (tcp) failed: Connection refused
nc: connect to localhost port 9996 (tcp) failed: Connection refused
nc: connect to localhost port 9997 (tcp) failed: Connection refused
nc: connect to localhost port 9997 (tcp) failed: Connection refused
nc: connect to localhost port 9998 (tcp) failed: Connection refused
nc: connect to localhost port 9998 (tcp) failed: Connection refused
nc: connect to localhost port 9999 (tcp) failed: Connection refused
Connection to localhost 9999 port [tcp/*] succeeded!

-z参数表示使用Zero-I/O模式,即连接的时候禁止输入输出,仅查看端口是否开启,很适合用于做端口扫描。-v参数用来显示网络连接中的详细输出信息。根据输出信息可以看出,9999端口能连上,证明9999端口开发着

聊天工具
如果用C编写一个简单点对点聊天程序,至少需要60-70行代码,使用Netcat让两台机器建立TCP连接,只需要执行两行命令,就能实现简单的聊天功能,如在服务器172.16.0.4上执行

$ nc -l 9999

-l参数,表示以监听模式运行Netcat,这里我们监听的是9999端口,接着在另外一台服务器上执行

$ nc 172.16.0.4 9999

执行成功,两台服务器就建立了TCP连接,接着就能通过该连接发送消息了,如在客户端服务器发送Hello, I’m client

$ nc 172.16.0.4 9999
Hello, I'm client

服务端就能马上收到该消息

$ nc -l 9999
Hello, I'm client

同样的,在服务端发送的消息,客户端也能收到

传输文件
同样的,通过建立TCP连接,可以很方便的在两台主机间传输文件。如要将服务器A上的test.txt发送到服务器B(IP地址为172.16.0.4)上,在服务器B上执行

$ nc -l 9999 > test.txt

然后在服务器A上执行

$ nc 172.16.0.4 9999 < test.txt

这样就能实现文件发送了

正向 shell
这点比较有意思,使用Netcat能实现类似ssh的功能,即将目标机器的shell终端暴露在某个端口上,然后本地机器使用Netcat连接到目标机器上,就可以访问目标机器的shell终端

在目标机器上执行

$ nc -l 9999 | /bin/bash

这里使用Netcat作为服务端监听9999端口,并将接收到的数据通过管道发送给/bin/bash,相当于将/bin/bash暴露到9999端口上,接着在本地机器上执行

$ nc 172.16.0.4 9999

通过Netcat建立连接,就能在本地机器上访问目标机器的/bin/bash终端啦,比如在本地机器上执行ls命令

$ nc 172.16.0.4 9999
ls -l

目标机器输出如下

$ nc -l 9999 | /bin/bash
total 4
-rw-rw-r-- 1 huangxy huangxy 6 Feb 21 00:50 test.txt

可以看到我们在本地机器上输入的命令,已经在目标机器上成功执行了

虽然我们能使用本地机器传输命令给到目标机器执行,但与ssh连接还是有点区别,因为在本地机器上并不能看到命令的执行结果。可以使用管道巧妙的解决该问题,在目标机器上执行

$ mkfifo /tmp/pipe
$ cat /tmp/pipe | /bin/bash 2>&1 | nc -l -p 9999 > /tmp/pipe

上面两条命令主要功能如下:

用mkfifo命令创建一个命名管道
然后通过cat命令读取/tmp/pipe的内容,将内容通过管道发送给/bin/bash
将/bin/bash的执行结果通过管道发送给nc
nc将从本地机器上接收到的命令保存到/tmp/pipe中
/tmp/pipe中的命令又被cat读取,传输到/bin/bash中,至次完成整个数据的流向
现在在本地机器上就能收到/bin/bash命令的执行结果啦

$ nc 172.16.0.4 9999
ls -l
total 4
-rw-rw-r-- 1 huangxy huangxy 6 Feb 21 00:50 test.txt

与 TCP 服务端交互
Netcat可以与任何使用TCP协议的服务端进行数据交互,比如使用Netcat在Redis执行PING命令

$ printf "PING\r\n" | nc localhost 6379
+PONG

等同于文章来源地址https://www.toymoban.com/news/detail-431094.html

$ nc localhost 6379
PING
+PONG

到了这里,关于大数据-玩转数据-netcat的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux下安装包或命令安装netcat(nc)

    1、下载netcat安装包 2、解压安装包 3、文件移动 将解压后的文件移动到想要放置的目录下,这里移动到/usr/local 4、编译安装 1:进入解压目录执行命令:        ./configure 2:                                              make make install  5、测试安装是否

    2024年02月05日
    浏览(33)
  • spark stream入门案例:netcat准实时处理wordCount(scala 编程)

    目录 案例需求 代码 结果 解析          案例需求:         使用netcat工具向9999端口不断的发送数据,通过SparkStreaming读取端口数据并统计不同单词出现的次数         -- 1. Spark从socket中获取数据:一行一行的获取         -- 2. Driver程序执行时,streaming处理过程

    2024年02月07日
    浏览(41)
  • ant.design(简称antd)中Form表单组件提交表单、表单数据效验、表单自定义效验、表单布局集合

            ant.design(简称antd)现在我们使用较为广泛,web端中后台表单使用非常广泛,此遍文章集合了表单日常用法及使用注意事项。         下图是UI目标样式图                           1、以下是一个组件,首先引入ant相关依赖,在引入react相关依赖,主要使用了For

    2024年02月13日
    浏览(59)
  • 深度解析Elasticsearch索引数据量过大的优化与部署策略

    目录 ​​​​​​​ 引言 1. 分片和副本策略 1.1分片策略 1.1.1 数据量 1.1.2 查询和写入负载 1.1.3 硬件资源 1.1.4 高可用性 1.2.副本策略 1.2.1 冗余和可用性 1.2.2 查询性能 1.2.3 存储需求 2. 硬件和资源配置优化 2.1 选择高性能硬件 2.1.1 存储 2.1.2 内存 2.1.3 处理器 2.1.4 网络 2.2. JVM调

    2024年01月19日
    浏览(55)
  • MyBatis-plus中的两种快捷操作数据库方式:1、mapper调用 2、ActiveRecord方式(简称AR) 二者的使用和区别介绍

            在使用MyBatis操作数据库时,需要频繁的写mapper层dao接口以及对应的配置文件和SQL语句,当功能方法繁杂,业务逻辑不复杂的时候,我们可以使用MyBatis的升级版MyBatis-Plus来代替我们写这些繁琐的配置文件和简单的SQL。 (1)书写或使用MP生成数据库表对应的实体类。

    2024年02月07日
    浏览(67)
  • html5提供的FileReader是一种异步文件读取文件中的数据

    前言:FileReader是一种异步文件读取机制,结合input:file可以很方便的读取本地文件。 input:file 在介绍FileReader之前,先简单介绍input的file类型。 input type=\\\"file\\\" id=\\\"file\\\" input的file类型会渲染为一个按钮和一段文字。点击按钮可打开文件选择窗口,文字表示对文件的描述(大部分情

    2024年02月11日
    浏览(46)
  • Mysql的B树和B+树分别能存储多大的数据量

    第一层: 16 由于数据与key和指针都存放在了各自节点中,所以16k的节点,按数据1k计算,只能存放16条数据,即16个key 第二层: 16 * 16 = 256 第三层: 16 * 16 * 16 = 4096 三层加起来: 大约4000条数据 第一层: 16 * 1000 / 16 = 1000条 16 * 1000表示节点大小默认为16k,估算1k=1000,16表示8字节key长度

    2024年04月13日
    浏览(33)
  • 医学影像系统【简称PACS】源码

    PACS(Picture Archiving and Comuniations Systems)即PACS,图像存储与传输系统,是应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统。目标是支持在医院内部所有关于图像的活动,集成了医疗设备,图像存储和分发数字图像在重要诊断和会诊时的显示,图像归档,以及外部

    2024年02月07日
    浏览(46)
  • Kubernetes(简称k8s)简介

    Kubernetes(简称k8s)是一种开源的容器编排平台,它可以自动化地部署、扩展和管理容器化应用程序。Kubernetes最初由Google公司设计和开发,并于2014年正式发布。如今,它已成为容器编排领域的事实标准,被广泛应用于各种场景中,包括Web应用程序、大数据处理、人工智能等。

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包