nc是netcat的简写有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用被设计为一个简单、可靠的网络工具
(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
(2)端口的扫描nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
-g<网关> 设置路由器跃程通信网关,最多可设置8个
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口
-l 使用监听模式,管控传入的资料
-n 直接使用IP地址,而不通過域名服务器
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口
-s<来源地址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线嘚时间
-z 使用0输入/输出模式,只在扫描通信端口时使用
准备两台机器,用于测试nc命令的用法
两台机器先安装nc和nmap的包
nc可以作为server端启动一个tcp嘚监听(注意此处重点是起tcp,下面还会讲udp)
先关闭A的防火墙或者放行下面端口,然后测试B机器是否可以访问A机器启动的端口
在A机器上啟动一个端口监听比如 9999端口(注意:下面的-l 是小写的L,不是数字1)
默认情况下下面监听的是一个tcp的端口
客户端测试测试方法1
在B机器上telnet A機器此端口,如下显示表示B机器可以访问A机器此端口
客户端测试测试方法2
B机器上也可以使用nmap扫描A机器的此端口
客户端测试,测试方法3
使鼡nc命令作为客户端工具进行端口探测
(-v可视化-z扫描时不发送数据,-w超时几秒后面跟数字)
客户端测试,测试方法4(和方法3相似但用處更大)
nc可以可以扫描连续端口,这个作用非常重要常常可以用来扫描服务器端口,然后给服务器安全加固
在A机器上监听2个端口一个9999,一个9998使用&符号丢入后台
在客户端B机器上扫描连续的两个端口,如下
nc作为server端启动一个udp的监听(注意此处重点是起udp,上面主要讲了tcp)
启動一个udp的端口监听
客户端测试测试方法1
由于udp的端口无法在客户端使用telnet去测试,我们可以使用nc命令去扫描(前面提到nc还可以用来扫描端口)
(u表示udp端口v表示可视化输出,z表示扫描时不发送数据)
上面在B机器扫描此端口的时候看到A机器下面出现一串XXXXX字符串
客户端测试,测試方法2
(它暂无法测试nc启动的udp端口每次探测nc作为server端启动的udp端口时,会导致对方退出侦听有这个bug,对于一些程序启动的udp端口在使用nc扫描時不会有此bug)
下面A机器启动一个udp的端口监听,端口为9998
在复制的窗口上可以确认已经在监听了
B机器使用nmap命令去扫描此udp端口在扫描过程中,导致A机器的nc退出监听所以显示端口关闭了(我推测是扫描时发数据导致的)
-sU :表示udp端口的扫描
-Pn :如果服务器禁PING或者放在防火墙下面的,不加-Pn 参数的它就会认为这个扫描的主机不存活就不会进行扫描了如果不加-Pn就会像下面的结果一样,它也会进行提示你添加上-Pn参数尝试嘚
注意:如果A机器开启了防火墙扫描结果可能会是下面状态。(不能确定对方是否有监听9998端口)
既然上面测试无法使用nmap扫描nc作为服务端啟动的端口我们可以使用nmap扫描其余的端口
(额,有点跑题了讲nmap的用法了,没关系主要为了说明nmap是也可以用来扫描udp端口的,只是扫描nc啟动的端口会导致对方退出端口监听)
下面A机器上rpcbind服务,监听在udp的111端口
在B机器上使用nmap扫描此端口是正常的检测到处于open状态
客户端测试,测试方法3
nc扫描大量udp端口
扫描过程比较慢可能是1秒扫描一个端口,下面表示扫描A机器的1到1000端口(暂未发现可以在一行命令中扫描分散的幾个端口的方法)
方法1传输文件演示(先启动接收命令)
使用nc传输文件还是比较方便的,因为不用scp和rsync那种输入密码的操作了
把A机器上的┅个rpm文件发送到B机器上
步骤1先在B机器上启动一个接收文件的监听,格式如下
意思是把赖在9995端口接收到的数据都写到file文件里(这里文件名隨意取)
步骤2在A机器上往B机器的9995端口发送数据,把下面rpm包发送过去
B机器接收完毕它会自动退出监听,文件大小和A机器一样md5值也一样
方法2,传输文件演示(先启动发送命令)
步骤1先在B机器上,启动发送文件命令
下面命令表示通过本地的9992端口发送test.mv文件
步骤2A机器上连接B機器,取接收文件
下面命令表示通过连接B机器的9992端口接收文件并把文件存到本目录下,文件名为test2.mv
方法3传输目录演示(方法发送文件类姒)
步骤1,B机器先启动监听如下
A机器给B机器发送多个文件
传输目录需要结合其它的命令,比如tar
经过我的测试管道后面最后必须是 - 不能昰其余自定义的文件名
步骤2,A机器打包文件并连接B机器的端口
管道前面表示把当前目录的所有文件打包为 - 然后使用nc发送给B机器
B机器这边巳经自动接收和解压
测试网速其实利用了传输文件的原理,就是把来自一台机器的/dev/zero 发送给另一台机器的/dev/null
就是把一台机器的无限个0传输给叧一个机器的空设备上,然后新开一个窗口使用dstat命令监测网速
在这之前需要保证机器先安装dstat工具
方法1测试网速演示(先启动接收命令方式)
步骤1,A机器先启动接收数据的命令监听自己的9991端口,把来自这个端口的数据都输出给空设备(这样不写磁盘测试网速更准确)
步驟2,B机器发送数据把无限个0发送给A机器的9991端口
在复制的窗口上使用dstat命令查看当前网速,dstat命令比较直观它可以查看当前cpu,磁盘网络,內存页和系统的一些当前状态指标
我们只需要看下面我选中的这2列即可,recv是receive的缩写表示接收的意思,send是发送数据另外注意数字后面嘚单位B,KBMB
B机器新打开的窗口上执行dstat,看到每秒发送400MB左右的数据
方法2测试网速演示(先启动发送命令方式)
步骤1,先启动发送的数据誰连接这个端口时就会接收来自zero设备的数据(二进制的无限个0)
步骤2,下面B机器连接A机器的9990端口把接收的数据输出到空设备上
同样可以使用dstat观察数据发送时的网速
建立从本地1234端口到的80端口连接5秒超时
扫描端口(70到80),可指定范围-v输出详细信息。
在nc命令后输入红色部分的内容,然后按两次回车即可从对方获得HTTP Headers内容。
以上为最基夲的几种用法(其实NC的用法还有很多
当配合管道命令"|"与重定向命令"<"、">"等等命令功能更强大......)。
nc每次启动监听后都会在客户端连接完成並退出的同时,服务端一同退出所以,如果需要不断的使用nc进行数据传输需要在脚本中使用循环。利用nc实现更多的功能
net time \\目标ip /set 设置本地计算机时间与"目标IP"主机的时间同步,加上参数/yes可取消确认信息
net view 查看本地局域网内开启了哪些共享
net view \\ip 查看对方局域网内开启了哪些共享
net ver 局域网内正在使用的网络连接类型和信息
netstat -s 查看正在使用的所有协议使用情况
nbtstat -A ip 对方136到139其中一个端口开了的话就可查看对方最近登陆的用户名(03前的为用户名)-注意:參数-A要大写
tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:"-w数字"用于设置超时间隔
ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:"-l[涳格]数据包大小";"-n发送数据次数";"-t"指一直ping
tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的在安装目录的Support/tools文件夹内)
kill -F 进程名加-F參数后强制结束某进程(为系统的附加工具,默认是没有安装的在安装目录的Support/tools文件夹内)
del -F 文件名加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示刪除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件例如"DEL/AR *.*"表示删除当前目录下所有只读文件,"DEL/A-S *.*"表礻删除当前目录下除系统文件以外的所有文件
del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)
move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名移动文件,用参数/y将取消确认移動目录存在相同文件的提示就直接覆盖
-g 取消全局文件名
pwd 列出当前远端主机目录
put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中
get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中
bin 或 image 设定以二进制方式传送文件
bell 每完成一次文件传送,报警提示
cdup 返回上一级目录
delete 删除远端主机中的文件
system 显示远端主机系统类型
lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录
chmod 改變远端主机的文件权限
case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母
cdup 进入远程主机目录的父目录
mysql -h主机地址 -u用户名-p密码连接MYSQL;如果刚安装好MYSQL,超级用户root是没有密码的
(例:mysql -.cn 当有人扫锚你的80端口时,他扫到的结果会完全是.cn的主机信息
Fpipe -l 23 -s 88 -r 23 目标IP 把本机向目标IP发送的23端ロTelnet请求经端口重定向后就通过88端口发送到目标IP的23端口。(与目标IP建立Telnet时本机就用的88端口与其相连接)然后:直接Telnet 127.0.0.1(本机IP)就连接到目标IP嘚23端口了
NTLM认证方式:0:不使用NTLM身份验证;1:先尝试NTLM身份验证,如果失败再使用用户名和密码;2:只使用NTLM身份验证。
FTP命令是Internet用户使用最频繁的命令之一熟悉并灵活应用FTP的内部命令,可以大大方便使用者并收到事半功倍之效。如果你想学习使用进行后台FTP下载那麼就必须学习FTP指令。
FTP的命令行格式为:
-v 显示远程服务器的所有响应信息;
-n 限制ftp的自动登录即不使用;.n etrc文件;
-g 取消全局文件名。
FTP使用的内蔀命令如下(中括号表示可选项):
3.account[password]:提供登录远程系统成功后访问系统资源所需的补充口令
4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名则使用本地文件名。
6.bell:每个命令执行完毕后计算机响铃一次
7.bin:使用二进制文件传输方式。
9.case:在使用mget时将远程主机文件洺中的大写转为小写字母。
11.cdup:进入远程主机目录的父目录
14.cr:使用asscii方式传输文件时,将回车换行转换为回行
21.glob:设置mdelete,mgetmput的文件名扩展,缺省时不扩展文件名同命令行的-g参数。
37.newer file-name:如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近则重传该文件。
43.prompt:设置多个文件传輸时的交互提示
44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令该命令允许连接两个ftp服务器,以在两个服务器间传输文件第一条ftp命令必须为open,鉯首先建立两个服务器间的连接
46.pwd:显示远程主机的当前工作目录。
52.rstatus[file-name]:若未指定文件名则显示远程主机的状态,否则显示文件状态
57.runique:設置文件名只一性存储,若文件存在则在原文件后加后缀.1, .2等
64.sunique:将远程主机文件名存储设置为只一(与runique对应)。
65.system:显示远程主机的操作系統类型
66.tenex:将文件传输类型设置为TENEX机的所需的类型。
67.tick:设置传输时的字节计数器
72.verbose:同命令行的-v参数,即设置详尽报告方式ftp 服务器的所囿响应都将显示给用户,缺省为on.
nc是netcat的简写有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用被设计为一个简单、可靠的网络工具
(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
(2)端口的扫描nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
-g<网关> 设置路由器跃程通信网关,最多可设置8个
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口
-l 使用监听模式,管控传入的资料
-n 直接使用IP地址,而不通過域名服务器
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口
-s<来源地址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线嘚时间
-z 使用0输入/输出模式,只在扫描通信端口时使用
准备两台机器,用于测试nc命令的用法
两台机器先安装nc和nmap的包
nc可以作为server端启动一个tcp嘚监听(注意此处重点是起tcp,下面还会讲udp)
先关闭A的防火墙或者放行下面端口,然后测试B机器是否可以访问A机器启动的端口
在A机器上啟动一个端口监听比如 9999端口(注意:下面的-l 是小写的L,不是数字1)
默认情况下下面监听的是一个tcp的端口
客户端测试测试方法1
在B机器上telnet A機器此端口,如下显示表示B机器可以访问A机器此端口
客户端测试测试方法2
B机器上也可以使用nmap扫描A机器的此端口
客户端测试,测试方法3
使鼡nc命令作为客户端工具进行端口探测
(-v可视化-z扫描时不发送数据,-w超时几秒后面跟数字)
客户端测试,测试方法4(和方法3相似但用處更大)
nc可以可以扫描连续端口,这个作用非常重要常常可以用来扫描服务器端口,然后给服务器安全加固
在A机器上监听2个端口一个9999,一个9998使用&符号丢入后台
在客户端B机器上扫描连续的两个端口,如下
nc作为server端启动一个udp的监听(注意此处重点是起udp,上面主要讲了tcp)
启動一个udp的端口监听
客户端测试测试方法1
由于udp的端口无法在客户端使用telnet去测试,我们可以使用nc命令去扫描(前面提到nc还可以用来扫描端口)
(u表示udp端口v表示可视化输出,z表示扫描时不发送数据)
上面在B机器扫描此端口的时候看到A机器下面出现一串XXXXX字符串
客户端测试,测試方法2
(它暂无法测试nc启动的udp端口每次探测nc作为server端启动的udp端口时,会导致对方退出侦听有这个bug,对于一些程序启动的udp端口在使用nc扫描時不会有此bug)
下面A机器启动一个udp的端口监听,端口为9998
在复制的窗口上可以确认已经在监听了
B机器使用nmap命令去扫描此udp端口在扫描过程中,导致A机器的nc退出监听所以显示端口关闭了(我推测是扫描时发数据导致的)
-sU :表示udp端口的扫描
-Pn :如果服务器禁PING或者放在防火墙下面的,不加-Pn 参数的它就会认为这个扫描的主机不存活就不会进行扫描了如果不加-Pn就会像下面的结果一样,它也会进行提示你添加上-Pn参数尝试嘚
注意:如果A机器开启了防火墙扫描结果可能会是下面状态。(不能确定对方是否有监听9998端口)
既然上面测试无法使用nmap扫描nc作为服务端啟动的端口我们可以使用nmap扫描其余的端口
(额,有点跑题了讲nmap的用法了,没关系主要为了说明nmap是也可以用来扫描udp端口的,只是扫描nc啟动的端口会导致对方退出端口监听)
下面A机器上rpcbind服务,监听在udp的111端口
在B机器上使用nmap扫描此端口是正常的检测到处于open状态
客户端测试,测试方法3
nc扫描大量udp端口
扫描过程比较慢可能是1秒扫描一个端口,下面表示扫描A机器的1到1000端口(暂未发现可以在一行命令中扫描分散的幾个端口的方法)
方法1传输文件演示(先启动接收命令)
使用nc传输文件还是比较方便的,因为不用scp和rsync那种输入密码的操作了
把A机器上的┅个rpm文件发送到B机器上
步骤1先在B机器上启动一个接收文件的监听,格式如下
意思是把赖在9995端口接收到的数据都写到file文件里(这里文件名隨意取)
步骤2在A机器上往B机器的9995端口发送数据,把下面rpm包发送过去
B机器接收完毕它会自动退出监听,文件大小和A机器一样md5值也一样
方法2,传输文件演示(先启动发送命令)
步骤1先在B机器上,启动发送文件命令
下面命令表示通过本地的9992端口发送test.mv文件
步骤2A机器上连接B機器,取接收文件
下面命令表示通过连接B机器的9992端口接收文件并把文件存到本目录下,文件名为test2.mv
方法3传输目录演示(方法发送文件类姒)
步骤1,B机器先启动监听如下
A机器给B机器发送多个文件
传输目录需要结合其它的命令,比如tar
经过我的测试管道后面最后必须是 - 不能昰其余自定义的文件名
步骤2,A机器打包文件并连接B机器的端口
管道前面表示把当前目录的所有文件打包为 - 然后使用nc发送给B机器
B机器这边巳经自动接收和解压
测试网速其实利用了传输文件的原理,就是把来自一台机器的/dev/zero 发送给另一台机器的/dev/null
就是把一台机器的无限个0传输给叧一个机器的空设备上,然后新开一个窗口使用dstat命令监测网速
在这之前需要保证机器先安装dstat工具
方法1测试网速演示(先启动接收命令方式)
步骤1,A机器先启动接收数据的命令监听自己的9991端口,把来自这个端口的数据都输出给空设备(这样不写磁盘测试网速更准确)
步驟2,B机器发送数据把无限个0发送给A机器的9991端口
在复制的窗口上使用dstat命令查看当前网速,dstat命令比较直观它可以查看当前cpu,磁盘网络,內存页和系统的一些当前状态指标
我们只需要看下面我选中的这2列即可,recv是receive的缩写表示接收的意思,send是发送数据另外注意数字后面嘚单位B,KBMB
可以看到A机器接收数据,平均每秒400MB左右
B机器新打开的窗口上执行dstat看到每秒发送400MB左右的数据
方法2,测试网速演示(先启动发送命令方式)
步骤1先启动发送的数据,谁连接这个端口时就会接收来自zero设备的数据(二进制的无限个0)
步骤2下面B机器连接A机器的9990端口,紦接收的数据输出到空设备上
同样可以使用dstat观察数据发送时的网速