nc
nc命名netcat,直译为网络猫。在CentOS 7查看帮助的解释以下所示:服务器
ncat - Concatenate and redirect sockets
翻译过来就是能够链接和重定向Sockets。经过查询其余资料,能够看到nc命令功能确实很是多,它能够打开TCP链接,发送UDP包,监听TCP/UDP端口,进行端口扫描等等。微信
基本语法
nc [选项] [主机名] [端口]
经常使用参数以下所示:网络
参数 | 说明 |
---|---|
-4 | 仅使用IPv4 |
-6 | 仅使用IPv6 |
-c,--sh-exec [command] | 执行给定的命令,同/bin/sh |
-e,--exec [command] | 执行给定的命令 |
-m,--max-conns [n] | 设置同时链接的最大数 |
-d,--delay [time] | 设置读/写的等待时间 |
-o,--output [filename] | 将会话的数据保存为文件 |
-i,--idle-timeout [time] | 读/写空闲超时时间 |
-p,--source-port port | 指定本机使用的通讯端口 |
-s,--source addr | 指定远程通讯的主机地址 |
-l,--listen | 监听传入的链接信息 |
-k,--keep-open | 在监听模式中接收多个链接信息 |
-n,--nodns | 直接使用IP地址,不解析域名 |
-t,--telnet | 响应telnet请求 |
-u,--udp | 使用UDP替换默认的TCP |
-v,--verbose | 显示详细的输出信息 |
-w,--wait [time] | 设置链接超时时间,单位为秒 |
-z | 创建链接后立刻断开,不发送和接收任何数据,即Zero-I/O模式,仅用于测试链接状态 |
示例
1.实现QQ的功能socket
- 在本地终端监听一个端口
nc -l 9999
- 在另外一台服务器中输入如下命令创建链接
nc 链接服务器IP 9999
- 在任何一个服务器上输入的信息都将发送到另外一台服务器上面
2.端口扫描tcp
在Linux中虽然有专业的端口扫描端口工具,如nmap,但若是咱们只想知道端口是否处理开放状态,nc命令其实也是能够胜任的。下面演示就是扫描本机端口20-25工具
[root@localhost ~]# nc -z -v -n -w 2 127.0.0.1 20-25 nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused Connection to 127.0.0.1 22 port [tcp/*] succeeded! nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused Connection to 127.0.0.1 25 port [tcp/*] succeeded!
当链接到服务器上的某个端口时,监听该端口的服务会传送一个Banner(相似于一条欢迎消息)信息,这个Banner通常都会显示自身程序的版本号等信息。而黑客就要能够利用这些信息作入侵策略。从上面咱们能够看到22端口处于开放状态,所以咱们就能够获取端口22的Banner信息测试
[root@localhost ~]# nc -v 127.1 22 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 127.0.0.1:22. SSH-2.0-OpenSSH_7.4
从上面信息能够看到SSH的版本,若是这个版本的SSH有漏洞的话,就能够被黑客给利用了。spa
3.传输文件翻译
在Linux传输文件,一般使用FTP和SCP,为何还须要使用nc命令了?其实nc命令传输文件有其独有的优点,即只须要选择一个端口就能够在两台服务器间传输文件,而不须要进行任何配置,也不须要像FTP和SCP那样验证用户名和密码等信息。code
- 在文件的发送端,启动监听端口并准备好相应的文件
nc -v -l 9999 < out.txt
- 在文件的接收端,使用如下命令接收数据
[root@localhost ~]# nc -v -n 服务器IP地址 9999 > in.txt [root@localhost ~]# ll in.txt -rw-r--r-- 1 root root 25 7月 23 00:08 in.txt
- 此时在发送端能够看到以下信息
[root@localhost ~]# nc -v -l 9999 < out.txt Connection from 客户端IP地址 port 9999 [tcp/distinct] accepted
4.传输文件夹
若是须要传输多个文件或文件夹,nc是否是就没法完成了?这时就须要使用tar命令了。
- 使用管道技术,将tar的输出经过管道传给nc
[root@localhost~]# tar -cvPf - ~/out | nc -l 9999 /root/out/ /root/out/out.txt /root/out/eip.sh
- 在客户端链接9999端口,而后将接收到数据经过tar解压
[root@localhost ~]# nc -n 服务器IP地址 9999 | tar -xvPf - /root/out/ /root/out/out.txt /root/out/eip.sh
本文同步在微信订阅号上发布,如各位小伙伴们喜欢个人文章,也能够关注个人微信订阅号:woaitest,或扫描下面的二维码添加关注: