原文地址:http://blog.sina.com.cn/s/blog_5374d6e30100u5h7.html
nc是我最爱用的一个小工具,主要在下面五个方面使用它:
1、服务器之间传送文件
2、http命令行客户端,如短信报警工具
3、服务器端口扫描
4、在服务器上临时开一个后门
5、专用设备只支持交互式命令,用nc实现自动的数据抓取
记得早期的Freebsd发行版中没有nc工具,每次都需要自己装,后来在我的坚持下,delphij加到了发行版中。如果非得用四个字来形容它的话,那就是:短小精悍。
下面是这些方面的使用介绍。
一、文件传送
1、用拉的方式从一台机器传一个文件到另一台机器
假定文件在机器A上,需要将文件传到机器B上。
在机器A上运行:
nc -l 2011 < file.txt
在机器B上运行:
nc IP_of_A 2011 > file.txt
这样,文件file.txt就从机器A上拉取到了机器B上。
2、用推的方式将文件从一台机器推到另一台机器
假定文件在机器A上,需要将文件传到机器B上。
在机器B上运行:
nc -l 2011 > file.txt
在机器A上运行:
nc IP_of_B 2011 < file.txt
这样就将文件file.txt从机器A上推到机器B上。
3、用拉的方式将大量文件从一台机器传到另一台机器
假定机器A上有很多文件,比如多个目录,需要传到机器B上。
在机器A上运行命令:
tar -zcvf - dir1 dir2 file3 | nc -l 2011
在机器B上运行命令:
nc IP_of_A 2011 | tar -zxvf -
等上面的命令运行结束,目录dir1和dir2,外加文件file3将从机器A上拉到了机器B上。
4、用推的方式将大量文件从一台机器推到另一台机器
假定机器A上有很多文件,比如多个目录,需要传到机器B上。
在机器B上运行命令:
nc -l 2011 | tar -zxvf -
在机器A上运行命令:
tar -zcvf - dir1 dir2 file3 | nc IP_of_B 2011
等上面的命令运行结束,目录dir1和dir2,外加文件file3将从机器A上推到机器B上。
用上面的4种方法,可以很方便地在你的办公电脑与服务器、以及不同办公电脑之间传递文件。
二、http命令行客户端
http是文本协议,所以可以echo生成http请求头,通过nc发送给对应的http服务器,取得响应结果,下面的命令抓取www.okbuy.com首页内容:
echo -en 'GET / HTTP/1.1\r\nHost: www.okbuy.com\r\nConnection:close\r\n\r\n' | nc www.okbuy.com 80 >okbuy.html
用这种方式完全可以写一个短信报警的客户端程序,nc跟短信网关联系发送短信。
三、服务器端口扫描
1、扫描一台机器的多个端口
[xiaohong@localhost ~]$ nc -zv 172.16.88.23 20-25
nc: connect to 172.16.88.23 port 20 (tcp) failed: Connectionrefused
nc: connect to 172.16.88.23 port 21 (tcp) failed: Connectionrefused
Connection to 172.16.88.23 22 port [tcp/ssh] succeeded!
nc: connect to 172.16.88.23 port 23 (tcp) failed: Connectionrefused
nc: connect to 172.16.88.23 port 24 (tcp) failed: Connectionrefused
nc: connect to 172.16.88.23 port 25 (tcp) failed: Connectionrefused
2、扫描多台机器的多个端口
假定要扫描172.16.88.16-30的20-80端口。
#!/bin/sh
network='172.16.88.'
for server in $(seq 16 30)
do
nc -z${network}${server} 16-80
done
用类似的方法还可组合形成别的扫描策略。
四、开服务器上临时开一个后门
在服务器A上临时开一个后门:
mkfifo pipe
sh pipe | nc -l 2011 > pipe
在你的客户端上运行
nc IP_of_A 2011
uname
Linux localhost.localdomain 2.6.18-194p #1 SMP Wed Jan 19 12:13:59CST 2011 x86_64 x86_64 x86_64 GNU/Linux
<Ctr+D>
五、专用设备只支持交互式命令,用nc实现自动的数据抓取
这个跟第二部份类似,方法是用echo组合类似的交互输入,如先输入1回后,然后输入2回车,再输入haha命令:
echo -ne '1\r\n2\r\nhaha\r\n' | nc IP_of_Equipment port