nc 局域网聊天+文件传输(netcat)
nc 局域网聊天+文件传输
nc
的全程是netcat
,这个工具非常好用。
有时候我们需要在局域网内传送一些文本消息或者文件的时候,通常的做法是安装一些局域网通讯软件,然后来做。其实不必要这样,使用nc
这个小工具就很好了。
nc的一些参数
具体的参数,可以通过nc -help
来获取。(注意此处只有一个-
)
下面表格中的内容是用google
翻译后修改来的,不是很好看,请原谅。
最常用的几个参数就是-l
,-u
,-p
这几个参数。
参数 | 说明 |
---|---|
-4 | 使用IPv4 |
-6 | 使用IPv6 |
-b | 允许广播 |
-C | 发送CRLF作为行结束 |
-D | 启用套接字调试选项 |
-d | 从标准输入分离 |
-h | 查看帮助信息 |
-I length | TCP接收缓冲区长度 |
-i secs | 发送间隔/端口扫描的延时 |
-j | 使用巨型帧 |
-k | 保持套接字打开多个连接 |
-l | 监听模式,绑定端口,等待连接 |
-n | 禁止名称/端口的解析 |
-O length | TCP发送缓冲区长度 |
-P proxyuser | 用户名代理验证 |
-p port | 指定用于远程连接的本地端口 |
-q secs | quit after EOF on stdin and delay of secs |
-r | 随机化远程端口 |
-S | 启用TCP MD5签名选项 |
-s addr | 本地源地址 |
-T toskeyword | 设置IP类型 |
-t | 应答TELNET协商 |
-U | 使用UNIX域套接字 |
-u | UDP模式 |
-V rtable | 指定备用路由表 |
-v | 详细 |
-w secs | 连接超时时间和最后网络读取 |
-X proto | 代理协议: “4”, “5” (SOCKS) 或 “connect” |
-x addr[:port] | 指定代理服务器地址端口 |
-Z | DCCP模式 |
-z | Zero-I/O 模式 [用于扫描] |
nc 进行局域网内聊天
因为是局域网,所有这里使用UDP
协议还是TCP
协议是没多大关系的。
这是很简单的C/S
模式,把其中一台机器当做服务器,另一台当做客户端就是了。
对于服务器,使用这个命令nc -l 9999
来监听9999
端口,默认使用的是TCP
协议,可以加-u
参数来使用UDP
协议。
然后是客户端,客户端使用命令nc 192.168.1.12 9999
,这里的IP
地址是服务端的IP
地址,端口是服务端监听的9999
。
下面测试一下。
-
1.在服务端输入命令
fx@fx:~$ nc -l 9999
-
2.在客户端输入命令,并输入要发送的数据
o@o-pc:~$ nc 192.168.11.185 9999
输入要发送的数据
这里测试一下,发送数据能不能收到
- 3.现在去看一下服务端有没有收到数据
fx@fx:~$ nc -l 9999
这里测试发送能不能收到
看到服务端收到了数据后,输入一条应答数据发送给客户端
收到了数据
- 4.看看客户端收到应答了没有
o@o-pc:~$ nc 192.168.11.185 9999
这里测试发送能不能收到
收到了数据
可以看到,一个简单局域网聊天工具就这么简单的完成了。
nc 局域网文件传输
这里就不详细的说了。
假设本机上有一个文件a.txt
要传送给另一台机器。
传输文件步骤如下
- 1.在本机上执行命令
nc -l 9999 < a.txt
- 2.在接收文件的机器上执行命令
nc 192.168.1.12 9999 > a.txt
这个的原理就是和前面局域网聊天的原理是差不多的,区别在与聊天的时候发送的数据来自标准输入
,接收的数据写入标准输出
。而这里将其重定向到了文件。
压缩传输的数据
虽然是局域网,但有时候要传输的数据是比较大的文本文件
,可以有比较大的压缩比的时候,可以压缩传输。(一个几个G的密码字典,可以压缩到几十M)
这时候可以借用tar
或者gzip
来做压缩。具体操作可以见下面
这里使用的是gzip
压缩,也可使用-j
等来使用bzip
等压缩方式。
- 1.在本机上执行命令
tar -cz a.txt | nc -l 9999
- 2.在接收文件的机器上执行命令
nc 192.168.1.12 9999 | tar -xz
传输目录或多个文件
传输目录
传输目录这个很好办,还是借助归档工具tar
来进行。
这里传输的目录结构如下
o@o-pc:~$ tree book
book
├── APUE.pdf
├── C++_STL参考.chm
├── C语言参考.pdf
├── linux网络编程.pdf
├── 或者.txt
└── 名著
├── 百年孤独.txt
├── 红楼梦.txt
├── 三国演义.txt
├── 水浒传.txt
└── 西游记.txt
1 directory, 10 files
下面来看传输的过程
- 1.在本机上执行命令
tar -c book |nc -l 9999
- 2.在接收文件的机器上执行命令
nc 192.168.1.12 9999 | tar -x
看一下接收后的情况
fx@fx:~$ nc 192.168.11.38 9999|tar -x
fx@fx:~$ ls -R book
book:
APUE.pdf C++_STL参考.chm C语言参考.pdf linux网络编程.pdf 或者.txt 名著
book/名著:
百年孤独.txt 红楼梦.txt 三国演义.txt 水浒传.txt 西游记.txt
传输多个文件
这个和传输目录的方式是一样的,也是利用tar
先打包
,再发送
。接收端先接收
,再解包
。
这里传输的文件是 APUE.pdf
,linux网络编程.pdf
,C++_STL参考.chm
。
- 1.在本机上执行命令
tar -c APUE.pdf linux网络编程.pdf C++_STL参考.chm |nc -l 9999
- 2.在接收文件的机器上执行命令
nc 192.168.11.38 9999|tar -x
接收成功了之后可以看到传输的文件。