Linux--nc(netcat)

参考:

https://www.cnblogs.com/hxsyl/p/6118078.html

https://www.oschina.net/translate/linux-netcat-command

https://blog.csdn.net/qq_29499107/article/details/82384393 

nc提供的功能:可以通过Tcp和Udp在网络中读写数据。它所作的工作就是在两台电脑之间建立连接并返回两个数据流,基于这样的功能可以有很多的使用场景。

nc使用场景1--端口扫描

用于发现机器上开放的端口

$ nc -v -z -w2 127.0.0.1 1-100
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
Connection to 127.0.0.1 53 port [tcp/domain] succeeded!
Connection to 127.0.0.1 80 port [tcp/http] succeeded!
...
nc: connect to 127.0.0.1 port 100 (tcp) failed: Connection refused

这个命令打印1-100的开发端口。

z 参数告诉netcat使用0 IO,连接成功后立即关闭连接, 不进行数据交换(谢谢@jxing 指点)

v 参数显示执行过程

n 参数告诉netcat 不要使用DNS反向查询IP地址的域名

一旦发现开放端口,就可以使用nc连接服务抓取banner。Banner是一个你连接的服务发送给你的文本信息。当你试图鉴别漏洞或者服务的类型和版本的时候,Banner信息是非常有用的。但是,并不是所有的服务都会发送banner。

nc -v 172.31.100.7 21

netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息。

nc应用场景2--文件传输

如果只是临时一次文件传输,使用nc就不用麻烦的配置ftp等。

首先在接收端192.168.1.3上: nc -l 1234 > file.txt

然后在发送端192.168.1.2上: nc 192.168.1.3 < file.txt

server    $nc -l 1567 < file.txt 

client     $nc -n 172.31.100.7 1567 > file.txt 

这里在A上创建了一个服务器,并且重定向netcat的输入为文件file.txt,如有有连接连接到1234端口,nc会发送file的文件内容。

在客户端我们重定向输出到file.txt,当B连接到A,A发送文件内容,B保存文件内容到file.txt.

没有必要创建文件源作为Server,我们也可以相反的方法使用。像下面的我们发送文件从B到A,但是服务器创建在A上,这次我们仅需要重定向netcat的输出并且重定向B的输入文件。

B作为Server

Server        $nc -l 1567 > file.txt 

Client          nc 172.31.100.23 1567 < file.txt 

注意:先运行接收端,指定一个端口为1234,文件为test.txt,再执行发送端,并且发送端必须存在同名的文件test.txt

-l 开启 监听模式,用于指定nc将处于监听模式。通常 这样代表着为一个 服务等待客户端来链接指定的端口。

-p<通信端口> 设置本地主机使用的通信端口。有可能会关闭

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

nc应用场景3--目录传输

从server1(192.168.16.233)拷贝nginx目录内容到server2(192.168.48.47)上。需要先在server2上,用nc激活监听,

server2上运行:# nc -l 1234 | tar xzv-

server1上运行:# tar czv- nginx | nc 192.168.48.47 1234 

nc应用场景4--会话

在Server(192.168.1.2)上:

$nc -l 1567

在Client(192.168.1.3)上:

$nc 192.168.1.2 1567

猜你喜欢

转载自www.cnblogs.com/Jing-Wang/p/11030152.html