如何使用Mac命令行建立一个TCP连接?
太长不看
这里笔者直接抛出答案,想快速知道答案的读者可以直接看这里↓
nc -v ip_address port
下面是笔者的一些例子。可以看到我们分别与谷歌的Public DNS服务器(8.8.8.8:53)、百度的HTTP服务器(220.181.38.148:80)和HTTPs服务器(220.181.38.148:443)成功建立了TCP连接。
~$ nc -v 8.8.8.8 53
dns.google [8.8.8.8] 53 (domain) open
~$ ping baidu.com
PING baidu.com (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: icmp_seq=0 ttl=50 time=84.007 ms
~$ nc -v 220.181.38.148 80
220.181.38.148 80 (http) open
~$ nc -v 220.181.38.148 443
220.181.38.148 443 (https) open
NetCat命令行工具
NetCat是一个功能丰富的网络命令行工具,下面简单列举一下NetCat命令的特性。
- 建立对外TCP/UDP连接
- DNS Forward与Reverse check
- 能指定任意的本地端口作为送信源端口
- IP地址欺骗
- 端口扫描
- 松散路由功能
- 支持Standard Input/Output
- 低速送信模式
- Server模式
- Telnet模式
- 传输文件
- Backdoor (误…
以上功能参考 Netcat_JP_Wiki
安装NetCat命令行工具
笔者电脑上没有自带NetCat,需要安装才能使用。这里用Homebrew来快速安装。
brew install netcat
如果没有安装Homebrew,可以通过下列命令安装。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
有疑问可以参阅 homebrew官网
建立一个TCP连接
安装好NetCat命令行工具之后,通过下面的方式能够建立一个TCP连接到任意服务器,并且通过指定flag v (Verbose)能使反馈打印到屏幕。
~$ nc -v 8.8.8.8 53
dns.google [8.8.8.8] 53 (domain) open
$ netcat -v 220.181.38.148 443
220.181.38.148 443 (https) open
↑这里的netcat和nc命令虽然有微妙的不同,但是几乎可以理解为同一程序和其别名。↑
相信看到这里,读者已经能知道通过-v我们能够实现端口扫描。进行端口扫描的时候最好加上flag z(zero I/O 模式),就能自动断开与服务器的连接。
nc -vz ip_address port