posts - 35,comments - 0,views - 12253

一、基本使用简介

usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
[-m minttl] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]
[-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]
Command Summary:
-4 Use IPv4
-6 Use IPv6
-b Allow broadcast
-C Send CRLF as line-ending
-D Enable the debug socket option
-d Detach from stdin
-F Pass socket fd
-h This help text
-I length TCP receive buffer length
-i interval Delay interval for lines sent, ports scanned
-k Keep inbound sockets open for multiple connects(配合 -l 选项使用,可以重复接受客户端连接。)
-l Listen mode, for inbound connects(开启“监听模式”,nc 作为【服务端】注:如不加该选项,nc 默认作为客户端)
-M ttl Outgoing TTL / Hop Limit
-m minttl Minimum incoming TTL / Hop Limit
-N Shutdown the network socket after EOF on stdin
-n Suppress name/port resolutions
-O length TCP send buffer length
-P proxyuser Username for proxy authentication
-p port Specify local port for remote connects(指定“端口号”)
-q secs quit after EOF on stdin and delay of secs(让 nc 延时(N 秒)再退出)
-r Randomize remote ports
-S Enable the TCP MD5 signature option
-s source Local source address
-T keyword TOS value
-t Answer TELNET negotiation
-U Use UNIX domain socket
-u UDP mode(使用 UDP 协议 注:如不加该选项,默认是 TCP 协议)
-V rtable Specify alternate routing table
-v Verbose (显示详细信息)
-W recvlimit Terminate after receiving a number of packets
-w timeout Timeout for connects and final net reads(设置连接的超时间隔(N 秒))
-X proto Proxy protocol: "4", "5" (SOCKS) or "connect"(指定代理的类型)
-x addr[:port] Specify proxy address and port(以 IP:port 的格式指定代理的位置。)
-Z DCCP mode
-z Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]
-g <网关> # 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> # 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> # 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> # 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> # 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> # 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用

二、netcat的使用

  1. 渗透测试(端口扫描)

nc -znv 127.0.0.1 1-1024 2>&1 | grep succeeded
选项 -z
意思是:开启“zero-I/O 模式”。该模式指的是:nc 只判断某个监听端口是否能连上,连上后【不】与对端进行数据通讯。
选项 -n
由于测试的是【IP 地址】,用该选项告诉 nc,【无须】进行域名(DNS)解析;
反之,如果你要测试的主机是基于【域名】,就【不能】用“选项 -n”
选项 -v
-v 选项前面也聊过,这里要特地强调一下。
对 nc 的其它用法,-v 选项是可加可不加滴;但对于“端口扫描”而言,一定要有这个选项——否则你【看不到】扫描结果
2>&1 | grep succeeded
过滤掉不成功的信息
  1. 要判断某个主机的监听端口是否能连上

    nc -nv 127.0.0.1 80
    选项 -v
    如果你是 nc 的新手,建议总是带上这个选项——通过更详细的输出,能帮你搞明白状况。
    选项 -n
    由于测试的是【IP 地址】,用该选项告诉 nc,【无须】进行域名(DNS)解析;
    反之,如果你要测试的主机是基于【域名】,就【不能】用“选项 -n”
    选项 -w
    超时设置 在测试链接的时候,如果你没使用 -w 这个超时选项,默认情况下 nc 会等待很久,然后才告诉你连接失败。如果你所处的网络环境稳定且高速(比如:局域网内),那么,你可以追加“-w 选项”,设置一个比较小的超时值。在下面的例子中,超时值设为3秒。
    nc -nv -w 3 x.x.x.x xx
    UDP 通常情况下,要测试的端口都是 TCP 协议的端口;如果你碰到特殊情况,需要测试某个 UDP 的端口是否可达。nc 同样能胜任。只需要追加 -u 选项。

    3.监听服务器

    nc -lv -port 7000

    4.传输文件

    4.1 单个文件

    服务器
    nc -l -p 7000 > file2
    客户端
    nc 127.0.0.1 7000 < file1
    性能优势
    nc 传输文件,相当于是:直接在【裸 TCP】层面传输。你可以通俗理解为:【没有】应用层。如果你传输的文件【超级大】或者文件数
    量【超级多】,用 nc 传输文件的性能优势会很明显(相比“FTP、SSH、共享目录…”而言)

    4.2 目录

    服务器
    nc -lv -p 7000 | tar xvf -
    客户端
    tar cvf - * | nc -nv 127.0.0.1 7000
    管道前面表示把当前目录的所有文件打包为 -

    5. 网速吞吐量测试

    服务器
    nc -nvv -l -p 7000 | pv
    客户端
    time nc -n 127.0.0.1 7000 < /dev/zero
    -n是不要解析域名,避免解析域名造成时间误差
    其实上面两种方法都把建立连接的握手时间以及 TCP 窗口慢启动的时间给计算进去了,不是特别精确,最精确的方式是搭配 pv 命令(监控统计管道数据的速度)
posted on   Getone超  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具

点击右上角即可分享
微信分享提示