“瑞士军刀“ NC的妙用
nc是一款在多种Linux发新版中都有集成的web应用,它可以实现两台主机的互联互通以完成文本信息传递,文件传输,远程登录等动作。
功能一,文本信息传输:nc通过开放端口实施链接,实现两台主机的信息交换。然而一般情况下,需要将一台机设为服务端,另一台设为接收端。
服务端主机输入代码:
nc -l -p 333 //我们将这台主机设为服务端,地址为假设为IP1。并且在这个服务端开放了333端口。
netstart-pantu | grep 333 //服务端主机开始监听333端口
客户端主机执行:
nc -nv IP1 333 //这里输入服务端的ip地址,并匹配到该机的333端口。
遮掩我们只需在服务端上输入信息,再回车,就会通过333端口发送到客户端。在客户端的shell上也可以看到这行信息。
实际运用:电子取证。
我用一台pc对目标服务器进行电子取证,目的是尽量完整地将服务器上的文件、状态搞到手。
目标机(被取证方):
ls -l | nc -nv ip1 333 //目标机通过333端口向取证方——ip地址为ip1的主机发送数据
取证机:
nc -l -p 333 > ps.txt //在本机监听333端口,一旦有数据传来就把他们写进ps.txt文件中,方便阅读
功能二:传输文件。
方法一:
接收端
nc -cl 333 > a.txt //开放333端口,将接收到的文件保存为a.txt
发送端:
nc -nv (IP address) 333 < a.txt -q 1 //输入接收端的ip并开放333端口,将a.txt以q(全部发送)的形式传输,传输完成1秒后断开接口
方法二:
传送端:
nc -lp 33 < a.txt -q 1 //发送端开放333端口等人来取a.txt,并以全部发送的方式传给对方,传输完成1秒后断开连接。
接收端:
nc -nv IP 333 > a.txt //输入传送段IP地址开放333端口,把接收到的文件保存在a.txt中。
功能三:加密传送文件:加密方式很多,无法一一列举,这里举个例子,抛砖引玉。
发送端:
mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.txt | nc -nv IP 333 -q 1
发送端输入接收端的IP并开放333端口,将a.txt文件用加密指令mcrypt中的rijndael方法进行加密,解密密钥为256,然后把它放在333端口。
接收端:
nc -lp 333 | mcrypt --flush -Fbq -a rijndael-256 -m ecb > a.txt
通过管道拿到加密文件,然后通过密钥开启对应的解密方式,把解密文件放在a.txt中。
功能四:NC流媒体服务。
先简单讲下什么是流媒体服务。我们今天用流量在网上收看收听视音频就是典型的享受流媒体服务。服务端以流的形式来服务客户端,通过不停发送数据流让客户端收看视频。我们以流媒体视频为例:
服务端:
cat a.mp4 | nc -lp 333 //a.mp4是需要传输的视频文件
客户端:
nc -nv IP address 333 | mplayer -vo.x11 -cache 3000-
客户端输入服务端IP地址并联通333端口,就可以使用播放器打开视频文件a.mp4了。
功能五:nc实现远程控制。
利用nc实现服务端与客户端的互相登录。服务管理人员就是利用这项功能实现对服务器的远程管理。这里介绍正向反向两种登陆方式。
正向登录:客户端控制服务端。
服务端:`nc -lp 333 -c bash //c表示向客户端传输了一个shell
客户端:
nc -nv IP address 333 //输入服务器的IP地址,通过333端口拿到服务器的一个shell实现远程登陆控制
反向登录:服务端控制
服务端:
nc -lp 333
客户端:
nc -nv IP 333 -c bash
服务端抛出一个333端口,等着客户端来连接,连上后,客户端被服务端控制,客户端向服务端输送了一个shell。
功能六:远程克隆磁盘。
实现磁盘所有数据文件的远程备份。
发送端:
nc -lp 333 | dd of=/dev/sda
接收端:
dd if=/dev/sda | nc -nv IP 333 -q 1
接收端输入发送端的IP,开放333端口,-q将磁盘/dev/sda里的数据全部接收。
下面讲讲nc的缺点:总的来说,nc是个好东西,尤其是在信息、数据交互方面的功能非常强大。但是nc也有一个不足之处就是传输的信息是不加密的,而且一般是以明文形式传输,非常容易被嗅探。所以如果大家追求私密的传输,一般不要选nc。
在下关于nc的分享到此为止,不足错误之处还望各位指点一二,在下感激不尽。