Skip to content

Latest commit

 

History

History
154 lines (67 loc) · 3.27 KB

Linux Netcat 命令——网络工具中的瑞士军刀 .md

File metadata and controls

154 lines (67 loc) · 3.27 KB

Linux Netcat 命令——网络工具中的瑞士军刀

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它

netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端

netcat 命令实例:

端口扫描

端口扫描经常被系统管理员和黑客用来发现在一些机器上开放的端口,帮助他们识别系统中的漏洞

nc -z -v -n 172.31.100.7 21-25

可以运行在TCP或者UDP模式,默认是TCP,-u参数调整为udp

z 参数告诉netcat使用0 IO,连接成功后立即关闭连接, 不进行数据交换

v 参数指使用冗余选项(译者注:即详细输出)

n 参数告诉netcat 不要使用DNS反向查询IP地址的域名

这个命令会打印21到25 所有开放的端口。Banner是一个文本,Banner是一个你连接的服务发送给你的文本信息。当你试图鉴别漏洞或者服务的类型和版本的时候,Banner信息是非常有用的。但是,并不是所有的服务都会发送banner

一旦你发现开放的端口,你可以容易的使用netcat 连接服务抓取他们的banner

nc -v 172.31.100.7 21

此命令会连接开放端口21并且打印运行在这个端口上服务的banner信息

Chat Server

假如你想和你的朋友聊聊,有很多的软件和信息服务可以供你使用。但是,如果你没有这么奢侈的配置,比如你在计算机实验室,所有的对外的连接都是被限制的,你怎样和整天坐在隔壁房间的朋友沟通那?不要郁闷了,netcat提供了这样一种方法,你只需要创建一个Chat服务器,一个预先确定好的端口,这样子他就可以联系到你了

Server

nc -l 1567

运行于服务器模式,监听指定端口。此命令在1567端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示。

Client

nc 172.31.100.7 1567

不管你在机器B上键入什么都会出现在机器A上

传输文件

在客户端,假设我们有一个 testfile 文件,里面的内容我们查看下:

cat testfile
hello oschina

而在服务器端有一个空文件名为 test

然后我们使用如下命令来启用服务器端:

nc -l 2389 > test

紧接着运行客户端:

cat testfile | nc localhost 2389

然后你停止服务器端,你可以查看 test 内容就是刚才客户端传过来的 testfile 文件的内容:

cat test
hello oschina

超时控制

多数情况我们不希望连接一直保持,那么我们可以使用 -w 参数来指定连接的空闲超时时间,该参数紧接一个数值,代表秒数,如果连接超过指定时间则连接会被终止

服务器:

nc -l 2389

客户端:

nc -w 10 localhost 238

该连接将在 10 秒后中断

注意: 不要在服务器端同时使用 -w 和 -l 参数,因为 -w 参数将在服务器端无效果