原文地址: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