netcat——瑞士军刀
1. 功能
- TCP服务端客户端
- 网络测试
- ssh的SOCKS或HTTP代理
- 简单的端口扫描
…
2. 一些命令
- -4:只使用IPv4地址
- -6:只是用IPv6地址
- -b:允许广播
- -C:使用CRLF作为行的结尾
- -D:启动debug
- -d:不从标准输入中读取
- -I length:设置TCP接收缓冲区大小
- -i interval:在发送和接收数据包之间设置时间间隔,也在连接到多个端口的时候设置时间间隔
- -k: 强制nc在连接到1个端口之后监听等待1个连接到来。跟-l配合使用
- -l: 监听模式
- -n:不在任何地址、主机名、端口上做DNS(直接是数字形式的)
- -O length: 设置TCP发送缓冲区大小
- -P proxy_username: 连接到proxy的时候提供用户名来验证
- -p source_port:设置源端口
- -q seconds: 在标准输入发送EOF后,等待这些秒,如果是负数,就一直等下去
- -r: 让源/目的端口随机,不让在一个范围内分配
- -S:开启RFC 2385 TCP MD5 signature option
- -s source: 设置源地址,如果是unix domain socket,就指定文件
- -T toskeyword:改变IPv4的TOS字段
- -U:使用unix domain socket
- -u:使用udp,而不是默认的TCP。不用-s指定的话,会在/tmp目录下新建临时文件
- -V rtable: 设置使用的路由表
- -v: verbose输出
- -w timeout: 向外连接的时候设置超时时间
- -X proxy_protocol: 设置代理协议,4” (SOCKS v.4), “5” (SOCKS v.5) and “connect”(HTTPS proxy)。默认是5
- -x proxy_address[:port]:设置连接的代理地址
- -Z:DCCP模式
- -z: 只是扫描一下监听端口,而不发送任何数据。
3. 简单的用法
1. 设置TCP服务端和客户端
1 | 服务端: |
2. 文件传输
1 | 一端 |
3. 连接服务器
1 | $ nc [-C] localhost 25 << EOF |
4. 端口扫描
1 | $ nc -zv host.example.com 20-30 |
参考:
- man nc