Linux网络神器之强大的NetCat命令

阅读更多
名称:netcat命令在linux中别名为nc
作用:支持任意的TCP和UDP连接,监听和读写
描述:nc功能支持的协议通常包括TCP和UDP,它可以打开TCP连接,发送UDP数据包,监听任意的TCP或UDP端号,扫描端口,以及处理IPv4和IPv6,与telnet不同的是,nc脚本更精致,分离错误信息进入标准的错误代替发送他们到标准的输出
常用的功能:
(1)简单的TCP代理服务
(2)shell脚本实现基于HTTP客户端和服务端
(3)网络守护进程测试
(4)可以给ssh做HTTP代理或者链接
(5)还有更多的功能,完全取决于你如何使用

参数详解:

-4:强制nc使用IPv4地址
-6:强制nc使用IPv6地址
-D:开启socket的调试模式
-d:关闭读取来自标准输入的功能
-h:打印nc帮助信息
-i:指定一个延时时间在每行数据发送和接受之间,在连接,发送,扫描多个端口时也会导致延时
-k:强制nc去保持监听另一个连接,在它当前的连接完成时,必须配置-l使用否则会报错
-l:开启监听服务
-n:在指定的地址,端口,主机上,不做DNS或者服务查找
-p:指定为远程连接指定一个本地端口
-r:随机的远程端口
-S:激活TCP的md5签名选项
-s:指定本地地址
-T:设置服务的ip类型
-C:设置回车符为行结束符标志
-t:telnet应答
-u:开启UDP模式
-v:详细信息
-w:指定超时时间
-X:代理协议
-x: 指定一个代理ip:port
-z: 关闭I/O读写,使用扫描模式

案例场景:

(1)简单聊天
服务器1-》192.168.1.120:nc -l 1234
服务器2-》192.168.1.120:nc   192.168.1.120  1234
建立连接后,即可发送消息,只支持两个终端使用

(2)模拟telnet远程登录服务器
server:nc -l 1234 -e bash
client : 192.168.1.121 1234
然后就类似于ssh远程登录了,虽然功能有限,但还是很强大的

如果不支持-e参数,也可以创建远程登录:
使用mkfifo命令创建有名管道:

服务端:
mkfifo /tmp/tmp_fifo
cat /tmp/tmp_fifo | /bin/bash -i 2>&1 | nc -l 2222 > /tmp/tmp_fifo
客户端:
nc -n 172.31.100.7 2222
然后就远程登录成功了
过程如下:
(1)从网络收到命令写入fifo文件中
(2)cat命令读取fifo文件,并且发送到bash命令
(3)bash执行完的结果发送给nc
(4)nc通过网络把内容发送给客户端
这样一来看起来就非常逼真了

(3)端口扫描
端口扫描,常用系统管理员和黑客用来发现一些机器上的开放端口,帮助识别系统上的漏洞
nc -z -v -n 192.168.1.212 20-25
z参数告诉netcat开启静默模式,连接成功后,立即关闭连接,不进行数据交互
v参数,使用详细输出
n参数,不要使用DNS反向查询IP地址的域名
发现有开放的端口,可以使用nc -v ip port 链接,并查看banner信息

(4)文件传输
文件发送方:nc -l 2222 < ac  阻塞等待
文件接收方: nc -n  192.168.1.212 2222  > bx  读取写入bx文件中

(5)目录传输:
目录传输前,需要压缩整个目录
发送方:tar -zcvf -dir_name | nc -l 2222
接收方:nc -n 192.168.1.212 | tar -xvf -  接收并解压
如果想节省宽带:

发送方:tar -zcvf -dir_name | bzip2 -z | nc -l 2222
接收方:nc -n 192.168.1.212 |  bzip2 -d |tar -xvf -  接收并解压

(6)加密传输:
发送方使用mcrypt加密: nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
接收方使用mycrpt解密:mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567
使用任何加密方式都行,执行上述需要输入密码,确保使用一样的密码

(7)流视频:

服务方:cat video.avi | nc -l 2222
接收读入并输出到播放器里面: nc ip 2222 | mplayer -vo x11 -cache 4000 -

(8)指定客户端端号用于通讯
服务方:nc -l 2222
客户方: nc ip 2222 -p 23
1024以内的端口需要root权限,默认随机产生一个端口

(9)指定源地址:

如果你的机器有多个网卡,那么可以指定地址,用于通信:

服务方: nc -u -l 2222 < file
客户方: nc -u 服务方ip 2222 -s 客户方多ip中一个  > file


最后欢迎大家扫码关注微信公众号:我是攻城师(woshigcs),我们一起学习,进步和交流!(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!

Linux网络神器之强大的NetCat命令_第1张图片

你可能感兴趣的:(linux,bash,ssh)