尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

不足 50KB 的 nc.exe,为什么成了我 Windows 排障时的第一选择?

不足 50KB 的 nc.exe,为什么成了我 Windows 排障时的第一选择? 不足 50KB 的 nc.exe为什么成了我 Windows 排障时的第一选择【免费下载链接】nc.exeNetcat for windows 32/64 bit项目地址: https://gitcode.com/gh_mirrors/nc/nc.exe凌晨两点数据库连接超时告警。我想在 Windows 上确认 3306 端口通不通却没一个趁手的工具telnet 没装PowerShell 命令又长又慢。最后替我解围的是一个只有几十 KB、名叫 nc.exe 的小程序。它小到什么程度32 位版 nc.exe 约 38KB64 位版 nc64.exe 约 45KB装进 U 盘随身带都毫无存在感。但它的本事说出来会让人怀疑自己以前白折腾了多少时间。这篇文章不打算列一堆参数吓唬你而是想带你从跑通第一行命令开始一步步走到用它解决真实问题。全程二十分钟跟着敲就行。两分钟把它拿到手nc.exe 是经典网络工具 Netcat 的 Windows 移植版血统可以追溯到 hobbit 编写的原始 Unix 版 Netcat后来由 Weld Pond 移植到 NT 平台如今源码和编译好的二进制都放在同一个仓库里遵循 GPL v2 开源协议。git clone https://gitcode.com/gh_mirrors/nc/nc.exe cd nc.exe make仓库里既有完整 C 源码也直接附带了编译好的 nc.exe 和 nc64.exe。你既可以拿了就跑也可以自己动手编译——Makefile 里用的是 MinGW 编译器一条make就出结果。连一台服务器验证它真的能干活新手最容易卡在工具有了但不知道跑什么命令。所以我们不背参数表先做一件能立刻看到成果的事手动向一台服务器发一个 HTTP 请求亲眼看看它返回的完整响应。nc -v example.com 80连接建立后敲入GET / HTTP/1.0再回车两次服务器的原始应答就会铺满屏幕——包括浏览器平时帮你藏起来的响应头你可以据此判断对方跑的是什么 Web 服务。-v让程序在连接时多说两句担心卡住追加-w 3设置三秒超时。到这里你已经掌握了 nc.exe 的一半本质把键盘输入原样交给网络把网络回包原样打在屏幕上。它就像一根透明水管让你直接看见任何 TCP 端口背后在说什么。让它在端口上替你值班有来就有往。客户端模式解决出去的问题监听模式解决进来的问题。nc -l -p 8080这一行让 nc.exe 蹲在 8080 端口上等待连接。任何机器连上来你敲的字会传过去它回的字会显示在你屏幕——零成本你刚刚亲手搭了一个最简单的服务端。紧接着是两个立刻用得上手的场景验证防火墙规则别人反馈连不上 8080你在这头起一个监听让对方直接 nc 过来。通不通十秒见分晓。跨机器传文件接收方执行nc -l -p 1234 received.zip发送方执行nc 192.168.1.100 1234 source.zip。不依赖共享目录不依赖 FTP两台机器之间有 TCP 通路就能传。大文件传得慢用-i 5让数据按行分批发送可以避免瞬间打满网络。一次扫描看清对方开了哪些口子会连接、会监听之后就该解锁扫描能力了。排查某台机器到底开放了哪些端口一条命令nc -z -v -w 1 192.168.1.100 1-1000拆开看-z表示只探测、不发送实际数据-v负责报告哪些端口开放-w 1让每个端口最多等一秒1-1000是要探测的端口范围。再加一个-r打乱探测顺序避免形成规律的扫描模式。这里说句老实话Windows 版文档明确写过-w超时对建立连接这一步不一定完全生效它主要作用于最后的数据读取。所以大规模扫描时别太心急必要时用-i限制探测节奏。想测 UDP 端口把命令换成nc -u -v -w 2 目标 7对着 7 号端口发一个回显测试能收到原样返回就说明 UDP 通路是活的。Windows 版独有的三张底牌上面这些能力Unix 版 Netcat 也有。但 Windows 移植版之所以值得单独拿出来说是因为它补上了 Windows 环境里最缺的三件事参数作用典型场景-d脱离控制台窗口后台静默运行服务器环境、计划任务-L连接断开后自动重新监听需要打不死的常驻服务-c输出换行改为 CRLF对接 Windows 风格的协议举个组合例子nc -L -p 9000 -e cmd.exe -d可以理解成一个断开就复活的常驻通道。但先别急着复制粘贴下一节讲清楚风险你再决定要不要用。-e 是把双刃剑动手前先想三遍-e让 nc.exe 在接受连接后执行一个指定程序并把网络字节流接到该程序的输入输出上。最直接的用法是弹出一个远程 cmd.exe相当于在防火墙后面开了一扇应急门。但风险同样直白这扇门没有任何认证。连上来的任何人拿到的都是启动 nc.exe 那个账号的权限。项目文档里对它的忠告是三个大写单词GREAT CARE。如果你的环境里混着陌生设备请别用-e。就算网络可信也建议遵守这几条用普通权限账号运行别用管理员身份挂着端口选高位非标准端口降低被扫描命中的概率全程用-o traffic.log留下十六进制流量转储事后可审计用完立即关停别留过夜说到底-e是关键时刻救急的工具不是日常省事的工具。⚠️工具用顺了源码就在眼前当你开始好奇它是怎么做到的打开项目根目录就对了——全部逻辑摊在四个文件里netcat.c核心主函数、连接、监听、扫描都在这getopt.c / getopt.h命令行参数解析doexec.c-e执行外部程序的那段高风险代码generic.h平台适配宏跨平台编译的钥匙Makefile 里的编译开关也值得一看-DTELNET开启-t应答 Telnet 协商-DGAPING_SECURITY_HOLE才允许编译-e。换句话说如果你不信任-e完全可以在自己的二进制里把它关掉。读源码不只是好奇——它是你自己掌控安全边界的起点。回到凌晨两点现在再回到开头的场景数据库告警端口疑似不通。我不会再翻遍系统找 telnet也不会去敲一长串 PowerShell。就一条nc -z -v -w 2 db-server 3306结果只有三种可能端口开放问题在应用层端口拒连问题在防火墙或服务超时无响应问题在网络链路。十秒钟排障方向就定了。这就是那个几十 KB 的小程序给我的底气。它不花哨但每一行输出都在回答同一个问题网络到底怎么了如果你也想在 Windows 上备一个这样的工具现在就能开始git clone https://gitcode.com/gh_mirrors/nc/nc.exe cd nc.exe make然后随便挑一台你能连上的服务器跑一条nc -v 目标地址 80。你会发现网络调试这件事真的可以这么轻。【免费下载链接】nc.exeNetcat for windows 32/64 bit项目地址: https://gitcode.com/gh_mirrors/nc/nc.exe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表