2023年7月10日发(作者:)
nc命令⽤法举例什么是ncnc是netcat的简写,有着⽹络界的瑞⼠军⼑美誉。因为它短⼩精悍、功能实⽤,被设计为⼀个简单、可靠的⽹络⼯具nc的作⽤(1)实现任意TCP/UDP端⼝的侦听,nc可以作为server以TCP或UDP⽅式侦听指定端⼝(2)端⼝的扫描,nc可以作为client发起TCP或UDP连接(3)机器之间传输⽂件(4)机器之间⽹络测速
nc的控制参数不少,常⽤的⼏个参数如下所列:1) -l⽤于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,⽽⾮向其它地址发起连接。2) -p
指定发送数据的源IP地址,适⽤于多⽹卡机
4) -u 指定nc使⽤UDP协议,默认为TCP5) -v输出交互或出错信息,新⼿调试时尤为有⽤6)-w超时秒数,后⾯跟数字
7)-z表⽰zero,表⽰扫描时不发送任何数据
前期准备准备两台机器,⽤于测试nc命令的⽤法主机A:ip地址 10.0.1.161主机B:ip地址 10.0.1.162
两台机器先安装nc和nmap的包yum install nc -yyum install nmap -y如果提⽰如下-bash: nc: command not found 表⽰没安装nc的包 nc⽤法1,⽹络连通性测试和端⼝扫描
nc可以作为server端启动⼀个tcp的监听(注意,此处重点是起tcp,下⾯还会讲udp)先关闭A的防⽕墙,或者放⾏下⾯端⼝,然后测试B机器是否可以访问A机器启动的端⼝在A机器上启动⼀个端⼝监听,⽐如 9999端⼝(注意:下⾯的-l 是⼩写的L,不是数字1)默认情况下下⾯监听的是⼀个tcp的端⼝nc -l 9999
客户端测试,测试⽅法1在B机器上telnet A机器此端⼝,如下显⽰表⽰B机器可以访问A机器此端⼝
客户端测试,测试⽅法2B机器上也可以使⽤nmap扫描A机器的此端⼝nmap 10.0.1.161 -p9999
客户端测试,测试⽅法3使⽤nc命令作为客户端⼯具进⾏端⼝探测nc -vz -w 2 10.0.1.161 9999(-v可视化,-z扫描时不发送数据,-w超时⼏秒,后⾯跟数字)上⾯命令也可以写成nc -vzw 2 10.0.1.161 9999
客户端测试,测试⽅法4(和⽅法3相似,但⽤处更⼤)nc可以可以扫描连续端⼝,这个作⽤⾮常重要。常常可以⽤来扫描服务器端⼝,然后给服务器安全加固在A机器上监听2个端⼝,⼀个9999,⼀个9998,使⽤&符号丢⼊后台 在客户端B机器上扫描连续的两个端⼝,如下
nc作为server端启动⼀个udp的监听(注意,此处重点是起udp,上⾯主要讲了tcp)启动⼀个udp的端⼝监听nc -ul 9998复制当前窗⼝输⼊ netstat -antup |grep 9998 可以看到是启动了udp的监听
客户端测试,测试⽅法1nc -vuz 10.0.1.161 9998由于udp的端⼝⽆法在客户端使⽤telnet去测试,我们可以使⽤nc命令去扫描(前⾯提到nc还可以⽤来扫描端⼝)(telnet是运⾏于tcp协议的)(u表⽰udp端⼝,v表⽰可视化输出,z表⽰扫描时不发送数据)上⾯在B机器扫描此端⼝的时候,看到A机器下⾯出现⼀串XXXXX字符串
客户端测试,测试⽅法2nmap -sU 10.0.1.161 -p 9998 -Pn(它暂⽆法测试nc启动的udp端⼝,每次探测nc作为server端启动的udp端⼝时,会导致对⽅退出侦听,有这个bug,对于⼀些程序启动的udp端⼝在使⽤nc扫描时不会有此bug)下⾯,A机器启动⼀个udp的端⼝监听,端⼝为9998在复制的窗⼝上可以确认已经在监听了B机器使⽤nmap命令去扫描此udp端⼝,在扫描过程中,导致A机器的nc退出监听。所以显⽰端⼝关闭了(我推测是扫描时发数据导致的)nmap -sU 10.0.1.161 -p 9998 -Pn-sU :表⽰udp端⼝的扫描-Pn :如果服务器禁PING或者放在防⽕墙下⾯的,不加-Pn 参数的它就会认为这个扫描的主机不存活就不会进⾏扫描了,如果不加-Pn就会像下⾯的结果⼀样,它也会进⾏提⽰你添加上-Pn参数尝试的注意:如果A机器开启了防⽕墙,扫描结果可能会是下⾯状态。(不能确定对⽅是否有监听9998端⼝)既然上⾯测试⽆法使⽤nmap扫描nc作为服务端启动的端⼝,我们可以使⽤nmap扫描其余的端⼝(额,有点跑题了,讲nmap的⽤法了,没关系,主要为了说明nmap是也可以⽤来扫描udp端⼝的,只是扫描nc启动的端⼝会导致对⽅退出端⼝监听)下⾯,A机器上rpcbind服务,监听在udp的111端⼝在B机器上使⽤nmap扫描此端⼝,是正常的检测到处于open状态
客户端测试,测试⽅法3nc扫描⼤量udp端⼝扫描过程⽐较慢,可能是1秒扫描⼀个端⼝,下⾯表⽰扫描A机器的1到1000端⼝(暂未发现可以在⼀⾏命令中扫描分散的⼏个端⼝的⽅法)nc -vuz 10.0.1.161 1-1000
nc⽤法2,使⽤nc传输⽂件和⽬录
⽅法1,传输⽂件演⽰(先启动接收命令)使⽤nc传输⽂件还是⽐较⽅便的,因为不⽤scp和rsync那种输⼊密码的操作了把A机器上的⼀个rpm⽂件发送到B机器上需注意操作次序,receiver先侦听端⼝,sender向receiver所在机器的该端⼝发送数据。
步骤1,先在B机器上启动⼀个接收⽂件的监听,格式如下意思是把赖在9995端⼝接收到的数据都写到file⽂件⾥(这⾥⽂件名随意取)nc -l port >filenc -l 9995 >
步骤2,在A机器上往B机器的9995端⼝发送数据,把下⾯rpm包发送过去nc 10.0.1.162 9995 < 机器接收完毕,它会⾃动退出监听,⽂件⼤⼩和A机器⼀样,md5值也⼀样
⽅法2,传输⽂件演⽰(先启动发送命令)步骤1,先在B机器上,启动发送⽂件命令下⾯命令表⽰通过本地的9992端⼝发送⽂件nc -l 9992 <
步骤2,A机器上连接B机器,取接收⽂件下⾯命令表⽰通过连接B机器的9992端⼝接收⽂件,并把⽂件存到本⽬录下,⽂件名为 10.0.1.162 9992 >
⽅法3,传输⽬录演⽰(⽅法发送⽂件类似)
步骤1,B机器先启动监听,如下A机器给B机器发送多个⽂件传输⽬录需要结合其它的命令,⽐如tar经过我的测试管道后⾯最后必须是 - ,不能是其余⾃定义的⽂件名nc -l 9995 | tar xfvz -
步骤2,A机器打包⽂件并连接B机器的端⼝管道前⾯表⽰把当前⽬录的所有⽂件打包为 - ,然后使⽤nc发送给B机器tar cfz - * | nc 10.0.1.162 9995B机器这边已经⾃动接收和解压
nc⽤法3,测试⽹速测试⽹速其实利⽤了传输⽂件的原理,就是把来⾃⼀台机器的/dev/zero 发送给另⼀台机器的/dev/null就是把⼀台机器的⽆限个0,传输给另⼀个机器的空设备上,然后新开⼀个窗⼝使⽤dstat命令监测⽹速在这之前需要保证机器先安装dstat⼯具yum install -y dstat
⽅法1,测试⽹速演⽰(先启动接收命令⽅式)步骤1,A机器先启动接收数据的命令,监听⾃⼰的9991端⼝,把来⾃这个端⼝的数据都输出给空设备(这样不写磁盘,测试⽹速更准确)nc -l 9991 >/dev/null 步骤2,B机器发送数据,把⽆限个0发送给A机器的9991端⼝nc 10.0.1.161 9991
在复制的窗⼝上使⽤dstat命令查看当前⽹速,dstat命令⽐较直观,它可以查看当前cpu,磁盘,⽹络,内存页和系统的⼀些当前状态指标。我们只需要看下⾯我选中的这2列即可,recv是receive的缩写,表⽰接收的意思,send是发送数据,另外注意数字后⾯的单位B,KB,MB 可以看到A机器接收数据,平均每秒400MB左右B机器新打开的窗⼝上执⾏dstat,看到每秒发送400MB左右的数据
⽅法2,测试⽹速演⽰(先启动发送命令⽅式)步骤1,先启动发送的数据,谁连接这个端⼝时就会接收来⾃zero设备的数据(⼆进制的⽆限个0)nc -l 9990 /dev/null同样可以使⽤dstat观察数据发送时的⽹速
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688986568a191858.html
评论列表(0条)