Linux教程之Linux Netcat 命令——收集工具中的瑞士军刀
要多google,因为我不可能,也不可以给你解答所有内容,我只能告诉你一些关键点,甚至我会故意隐瞒答案,因为在寻找答案的过程中。netcat是收集工具中的瑞士军刀,它能经由过程TCP和UDP在收集中读写数据。经由过程与其他工具分离和重定向,你能够在剧本中以多种体例利用它。利用netcat命令所能完成的事变使人惊奇。
netcat所做的就是在两台电脑之间创建链接并前往两个数据流,在这以后所能做的事就看你的想像力了。你能创建一个服务器,传输文件,与伴侣谈天,传输流媒体大概用它作为别的协定的自力客户端。
上面是一些利用netcat的例子.
Linuxnetcat命令实例:
1,端口扫描
端口扫描常常被体系办理员和黑客用来发明在一些呆板上开放的端口,匡助他们辨认体系中的毛病。
$nc-z-v-n172.31.100.721-25 能够运转在TCP大概UDP形式,默许是TCP,-u参数调剂为udp.
z参数告知netcat利用0IO,毗连乐成后当即封闭毗连,不举行数据互换(感谢@jxing指导)
v参数教唆用冗余选项(译者注:即具体输入)
n参数告知netcat不要利用DNS反向查询IP地点的域名
这个命令会打印21到25一切开放的端口。Banner是一个文本,Banner是一个你毗连的服务发送给你的文本信息。当你试图判别毛病大概服务的范例和版本的时分,Banner信息长短常有效的。可是,并非一切的服务城市发送banner。
一旦你发明开放的端口,你能够简单的利用netcat毗连服务抓取他们的banner。
$nc-v172.31.100.721 netcat命令会毗连开放端口21而且打印运转在这个端口上服务的banner信息。
ChatServer
假设你想和你的伴侣聊聊,有良多的软件和信息服务能够供你利用。可是,假如你没有这么奢靡的设置,好比你在盘算机实行室,一切的对外的毗连都是被限定的,你如何和成天坐在近邻房间的伴侣相同那?不要忧郁了,netcat供应了如许一种办法,你只必要创立一个Chat服务器,一个事后断定好的端口,如许子他就能够接洽到你了。
Server
$nc-l1567 netcat命令在1567端口启动了一个tcp服务器,一切的尺度输入和输出会输入到该端口。输入和输出都在此shell中展现。
Client
$nc172.31.100.71567 不论你在呆板B上键进甚么城市呈现在呆板A上。
3,文件传输
年夜部分工夫中,我们都在试图经由过程收集大概其他工具传输文件。有良多种办法,好比FTP,SCP,SMB等等,可是当你只是必要一时大概一次传输文件,真的值得华侈工夫来安拆卸置一个软件到你的呆板上嘛。假定,你想要传一个文件file.txt从A到B。A大概B都能够作为服务器大概客户端,以下,让A作为服务器,B为客户端。
Server
$nc-l1567<file.txt Client
$nc-n172.31.100.71567>file.txt 这里我们创立了一个服务器在A上而且重定向netcat的输出为文件file.txt,那末当任何乐成毗连到该端口,netcat会发送file的文件内容。
在客户端我们重定向输入到file.txt,当B毗连到A,A发送文件内容,B保留文件内容到file.txt.
没有需要创立文件源作为Server,我们也能够相反的办法利用。像上面的我们发送文件从B到A,可是服务器创立在A上,此次我们仅必要重定向netcat的输入而且重定向B的输出文件。
B作为Server
Server
$nc-l1567>file.txt Client
nc172.31.100.231567<file.txt 4,目次传输
发送一个文件很复杂,可是假如我们想要发送多个文件,大概全部目次,一样很复杂,只必要利用紧缩工具tar,紧缩后发送紧缩包。
假如你想要经由过程收集传输一个目次从A到B。
Server
$tar-cvf–dir_name|nc-l1567 Client
$nc-n172.31.100.71567|tar-xvf- 这里在A服务器上,我们创立一个tar回档包而且经由过程-在把持台重定向它,然后利用管道,重定向给netcat,netcat能够经由过程收集发送它。
在客户端我们下载该紧缩包经由过程netcat管道然后翻开文件。
假如想要节俭带宽传输紧缩包,我们可使用bzip2大概其他工具紧缩。
Server
$nc-v172.31.100.7210 经由过程bzip2紧缩
Client
$nc-v172.31.100.7211 利用bzip2解压
5.加密你经由过程收集发送的数据
假如你忧虑你在收集上发送数据的平安,你能够在发送你的数据之前用如mcrypt的工具加密。
服务端
$nc-v172.31.100.7212 利用mcrypt工具加密数据。
客户端
$nc-v172.31.100.7213 利用mcrypt工具解密数据。
以上两个命令会提醒必要暗码,确保两头利用不异的暗码。
这里我们是利用mcrypt用来加密,利用别的恣意加密工具都能够。
6.流视频
固然不是天生流视频的最好办法,但假如服务器上没有特定的工具,利用netcat,我们仍旧有但愿做成这件事。
服务端
$nc-v172.31.100.7214 这里我们只是从一个视频文件中读进偏重定向输入到netcat客户端
$nc-v172.31.100.7215 这里我们从socket中读进数据偏重定向到mplayer。
7,克隆一个设备
假如你已安拆卸置一台Linux呆板而且必要反复一样的操纵对其他的呆板,而你不想在反复设置一遍。不在必要反复设置安装的历程,只启动另外一台呆板的一些引诱能够随身碟和克隆你的呆板。
克隆LinuxPC很复杂,假设你的体系在磁盘/dev/sda上
Server
$nc-v172.31.100.7216 Client
$nc-v172.31.100.7217 dd是一个从磁盘读取原始数据的工具,我经由过程netcat服务重视定向它的输入流到其他呆板而且写进到磁盘中,它会跟着分区表拷贝一切的信息。可是假如我们已做太过区而且只必要克隆root分区,我们能够依据我们体系root分区的地位,变动sda为sda1,sda2.等等。
8,翻开一个shell
我们已用过远程shell-利用telnet和ssh,可是假如这两个命令没有安装而且我们没有权限安装他们,我们也能够利用netcat创立远程shell。
假定你的netcat撑持-c-e参数(默许netcat)
Server
$nc-v172.31.100.7218 Client
$nc172.31.100.71567 这里我们已创立了一个netcat服务器而且暗示当它毗连乐成时实行/bin/bash
假设netcat不撑持-c大概-e参数(openbsdnetcat),我们仍旧可以创立远程shell
Server
$nc-l15670 这里我们创立了一个fifo文件,然后利用管道命令把这个fifo文件内容定向到shell2>&1中。是用来重定向尺度毛病输入和尺度输入,然后管道到netcat运转的端口1567上。至此,我们已把netcat的输入重定向到fifo文件中。
申明:
从收集收到的输出写到fifo文件中
cat命令读取fifo文件而且其内容发送给sh命令
sh命令历程遭到输出并把它写回到netcat。
netcat经由过程收集发送输入到client
至于为何会乐成是由于管道任务令平行实行,fifo文件用来替换一般文件,由于fifo使读取守候而假如是一个一般文件,cat命令会尽快停止并入手下手读取空文件。
在客户端仅仅复杂毗连到服务器
Client
$nc-l15671 你会失掉一个shell提醒符在客户端
反向shell
反向shell是指在客户端翻开的shell。反向shell如许定名是由于分歧于其他设置,这里服务器利用的是由客户供应的服务。
服务端
$nc-l1567 在客户端,复杂地告知netcat在毗连完成后,实行shell。
客户端
$nc-l15673 如今,甚么是反向shell的出格的地方呢
反向shell常常被用来绕过防火墙的限定,如制止进站毗连。比方,我有一个公用IP地点为172.31.100.7,我利用代办署理服务器毗连到内部收集。假如我想从收集内部会见这台呆板如1.2.3.4的shell,那末我会用反向外壳用于这一目标。
10.指定源端口
假定你的防火墙过滤除25端口外别的一切端口,你必要利用-p选项指定源端口。
服务器端
$nc-l1567 客户端
$nc-l15675 利用1024之内的端口必要root权限。
该命令将在客户端开启25端口用于通信,不然将利用随机端口。
11.指定源地点
假定你的呆板有多个地点,但愿明白指定利用哪一个地点用于内部数据通信。我们能够在netcat中利用-s选项指定ip地点。
服务器端
$nc-l15676 客户端
$nc-l15677 该命令将绑定地点172.31.100.5。
这仅仅是利用netcat的一些示例。
别的用处有:
[*]利用-t选项摹拟Telnet客户端,
[*]HTTP客户端用于下载文件,
[*]毗连到邮件服务器,利用SMTP协定反省邮件,
[*]利用ffmpeg截取屏幕并经由过程流式传输分享,等等。别的更多用处。
复杂来讲,只需你懂得协定就能够利用netcat作为收集通信前言,完成各类客户端。
参考文档
Netcat手册
英文原文:LinuxNetcatcommand–Theswissarmyknifeofnetworking
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。 尽量不要提问纯属是扯蛋.学习Linux特别是自己一个人初学入手的时候没人教很困难.当然如果可以的话平时多去买些Linux书...对学习Linux很有帮助. 要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。 老实说,第一个程序是在C中编译好的,调试好了才在Linux下运行,感觉用vi比较麻烦,因为有错了不能调试,只是提示错误。 对我们学习操作系统有很大的帮助,加深我们对OS的理解。? 现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。 熟读写基础知识,学得会不如学得牢。 让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。? 就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务 Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。
页:
[1]