netcat nc 命令

nc 命令是很好用的网络工具。

常见参数

  • -4 :强制用IPv4的地址;
  • -6 :强制用IPv6的地址;
  • -h:在线帮助;
  • -i<延迟秒数>:设置时间间隔,以便传送信息及扫描通信端口;
  • -k:保持套接字打开,为多个连接已提供服务;
  • -l:使用监听模式,监控传入的资料;
  • -n:直接使用ip地址,而不通过域名服务器;
  • -p<源端口>:设置本地主机使用的通信端口;
  • -r:指定应该随机选择源端口和/或目标端口,而不是在一个范围内顺序或按照系统分配的顺序。
  • -s<源位址>:设置本地主机送出数据包的IP地址;
  • -u:使用UDP传输协议;
  • -v:显示指令执行过程;
  • -w<超时秒数>:设置等待连线的时间,单位秒;
  • -z:使用0输入/输出模式,只在扫描通信端口时使用,连接成功后直接关闭,不进行数据交换;

扫描端口

$ nc -zn 10.211.55.7 21-1024 
Connection to 10.211.55.7 port 22 [tcp/*] succeeded!
Connection to 10.211.55.7 port 80 [tcp/*] succeeded!
Connection to 10.211.55.7 port 88 [tcp/*] succeeded!
Connection to 10.211.55.7 port 139 [tcp/*] succeeded!
Connection to 10.211.55.7 port 443 [tcp/*] succeeded!
Connection to 10.211.55.7 port 445 [tcp/*] succeeded!

z:表明是用0IO,即就建立连接,而不进行数据交换
n:表示不通过 DNS 服务器
10.211.55.7:待扫描的地址
21-1024:扫描的端口范围

还可以添加参数 -v 来显示整个执行过程

建立连接

$ nc -p 10000 -w 10 drugs.dxy.cn 80

该命令的意思就是将本地 10000 端口和 drugs.dxy.cn 80 端口建立连接,连接超时时间10s,10s 内无通讯就主动断开连接

简易通讯

假设这里有2台服务器,一台的IP是10.211.55.7,另外一台是10.211.55.8

服务端 10.211.55.7

$ nc -l 1234

这样一个简单的命令,就是将该服务器的1234这个端口,设置成监听状态,等待建立连接。

客户端 10.211.55.8

$ nc 10.211.55.7 1234

客户端只需主动和服务端建立连接就可以进行通讯了。

传输文件

服务端 10.211.55.7

$ echo haha > text.txt
$ nc -l 1234 < text.txt

这里首先创建了一个文件text.txt,内容为“haha”,然后绑定本机的1234这个端口,并text.txt的内容准备进行传输。

客户端 10.211.55.8

$ nc 10.211.55.7 1234 > text2.txt
$ cat text2.txt 
haha

客户端这边需要和 10.211.55.7:1234 这个套接字建立连接,并将读取到的数据写到 text2.txt 这个文件中

传输目录

传输目录其实和传输文件的本质是一样的,都是传输数据,只不过先将数据进行打包处理了而已。

服务端 10.211.55.7

$ tar -zcv  test/ | nc -l 1234

这里要传输 test 目录,首先将该目录进行压缩(-z),打包(-c),并将处理好后的数据流通过通道交给nc,nc就将该数据绑定到指定的端口,等待连接来获取。

客户端 10.211.55.8

$ nc 10.211.55.7 1234 | tar -zxv

而客户端的操作恰好和服务端相反,首先从指定的端口获取数据,其次进行解压缩(-zc),就可以获取到整个目录了。

发起HTTP请求

$ nc drugs.dxy.cn 80
GET / HTTP/1.1
Host: drugs.dxy.cn

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 31 Jan 2018 08:57:06 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: DRUGSSESSIONID=F28DF915E9151F7D6F370A11EB3A04B3-n1; Domain=.dxy.cn; Path=/; HttpOnly
Content-Language: zh-CN
Vary: Accept-Encoding

eff
<!DOCTYPE HTML>
...
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
netcat是一款网络工具,可以用来进行网络通信和调试等操作。可以在终端中输入以下命令格式来使用netcat: ``` nc [options] [hostname/IP address] [port(s)] ``` 其中,`options` 为可选参数,`hostname/IP address` 表示目标主机的主机名或IP地址,`port(s)` 表示目标主机的端口号,可以是单个端口号或者端口号范围。下面是一些常用的netcat命令示例: 1. 连接到指定的主机和端口: ``` nc hostname/IP address port ``` 例如: ``` nc www.baidu.com 80 ``` 这个命令将会连接到百度的服务器,并且使用80号端口发送HTTP请求。 2. 监听指定端口并接收连接: ``` nc -l port ``` 例如: ``` nc -l 8080 ``` 这个命令将会监听本机的8080端口,并且等待接收连接。 3. 将文本文件发送到指定主机的指定端口: ``` nc hostname/IP address port < filename ``` 例如: ``` nc 192.168.1.100 1234 < data.txt ``` 这个命令将会将本地的data.txt文件发送到IP地址为192.168.1.100,端口号为1234的主机上。 4. 在指定端口上启动一个简单的HTTP服务器: ``` while true; do echo -e "HTTP/1.1 200 OK\n\n $(date)" | nc -l localhost 8080; done ``` 这个命令将会在本机的8080端口上启动一个简单的HTTP服务器,每次接收到连接都会返回一个HTTP响应,响应内容为当前的日期和时间。 这些是netcat的一些常用命令示例,如果您需要更多的帮助和信息,可以使用 `man nc` 命令来查看netcat的帮助文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值