«
连 nc 命令都不知道太菜了吧
阿布大人 发布于
阅读:65
私有分类
python -m http.server 8080
小宇:哼,你太菜了,我看评论区说直接有个 nc 命令就能搞定,还说这东西是网络工具中的瑞士军刀,功能非常强大。你这还得安装 python 环境,太麻烦了呀。
闪客:哦的确,当时没想到这个。nc 确实是个很强大的工具,全称叫 Netcat。它可以用来测试网络连接、传输文件、搭建临时服务等等。
闪客:nc 的功能太丰富了,属于一个大而全的东西,就没联想到创建 http 服务也可以用。
闪客:别急,我给你一点一点讲。nc 命令最常用的场景就是测试网络连接,举个简单的例子,如果你想看看某台服务器的某个端口是否开放,就可以用它来试试。当时自以为自己是黑客的时候就用它来扫各种端口玩。
闪客:额,比如你想测试 192.168.1.100 的 80 端口是否开放,直接运行下面这行命令:
闪客:-z 表示只检测端口是否开放,不建立真正的连接,-v 则让输出更详细一些。如果端口是开放的,你会看到类似 succeeded 的提示,否则会显示 connection refused。
小宇:哦,不过光检测端口似乎没啥意思,我又不是黑客,有没有更有趣更实用点的用法?
闪客:当然有。就昨天的抓包实验场景,用 nc 也可以快速创建一个 TCP 服务。比如你想在本地监听 12345 端口,只需这样写:
闪客:额你今天有点暴躁诶,然后用这个方式可以简单实现一个“即时聊天”。你在一个窗口输入的内容,会实时显示在另一个窗口上,非常适合调试或者练习网络编程。
小宇:这听起来还不错,用这个来练习抓包似乎更简单且更灵活些,请求和返回的内容都可以自己随时发,而且直接是 TCP 层的也不用 HTTP 层多了好多数据对吧。
闪客:是的。除此之外 nc 还可以用来传输文件。比如你想把 test.txt 文件从一台机器传到另一台,可以这样做:
nc <接收方IP> 12345 < test.txt
闪客:对,就是这么简单。只要网络是通的,nc 比任何文件传输工具都方便。我在公司经常需要把业务机器上的日志文件下载到本地,有的时候 FTP 有跳板机啥的很难连,一个 nc 就搞定了。
小宇:嗯,这还像点样子,除了这些,你平时还用它干什么?
闪客:我经常用它来模拟 HTTP 请求。比如你想手动发起一个 GET 请求,可以这样写:
echo -e "GET / HTTP/1.1\r\nHost:
小宇:这看起来像是自己手写了一个 HTTP 请求?那这和 curl 直接发有啥区别?
闪客:哈哈,不过通过这种方式,可以更直观地控制和观察底层通信的细节,当然了如果不关注太底层细节的东西,肯定还是 curl 更方便。
小宇:原来如此,感觉 nc 还真是个神器,命令都很简单,但功能和灵活性都非常强大。
闪客:是啊,nc 的全能性非常适合快速测试和开发。尤其是我们做网络相关调试时,用它能事半功倍。
闪客:呀,时间也不早了,旁边好像新开了家面馆,我们去吃个饭吧。
小宇:吃饭什么的就算了,我去试试用 nc 模拟个 HTTP 服务把昨天的抓包场景再复现复现,拜拜!