使用 NetCat 工具實作遠程檔案傳輸
- 前言
- 一、NetCat 簡介
- 二、NetCat 命令介紹
- 1.Linux 上安裝 NetCat 工具
- 2.NetCat 語法
- 3.NetCat 常見用法
- 1)簡陋版聊天室
- 2)檔案傳輸
前言
Hello,CSDN 的小伙伴們,大家好,因為這段時間博主作業比較忙,所以博客暫時就耽擱了一段時間,不過后面的話,博主也會抽時間寫一些在公司可能會遇到的一些問題,以及一些常用的工具,

一、NetCat 簡介
NetCat(NC)是一個通過 TCP/UDP 在網路中進行讀寫資料工具,主要用于調式領域,傳輸領域甚至黑客攻擊領域,利用 NetCat 工具,可以將網路中的完整資料發送至另一臺主機終端顯示或存盤,常見的應用為檔案傳輸、與好友即時通信、傳輸流媒體等功能,
NetCat 功能介紹:
- 可以實作任意 TCP/UDP 埠的偵聽,NetCat 工具可以作為 Server 以 TCP 或 UDP 的方式偵聽指定埠,
- 埠掃描,NetCat 工具可以作為 Client 發起 TCP 或 UDP 連接,
- 主機之間傳輸檔案及網路測驗等功能,
二、NetCat 命令介紹
本文主要是針對于檔案傳輸做一個簡單的介紹(NetCat 的功能還是很強大的)
1.Linux 上安裝 NetCat 工具
yum -y install netcat
2.NetCat 語法
nc [-hlnruz] [-g<網關...>] [-G<指向器數目>] [-i<延遲秒數>] [-o<輸出檔案>] [-p<通信埠>] [-s<來源地址>] [-v...] [-w<超時秒數>] [主機名稱] [通信埠...]
NetCat 常見引數:
-u:使用 UDP 傳輸協議,-v:顯示更多的詳細資訊,-l:使用監聽模式,可以接收對方傳送過來的檔案等資訊,-n:直接使用 IP 地址,而不通過域名服務器(簡單來說就是不使用 DNS 決議)-N:在遇到EOF時關閉網路連接(多用于檔案傳輸,可以說是檔案傳輸的通知功能)-p <通信埠>:指定本地主機使用的通信埠,-s <來源地址>:指定本地主機送出資料包的 IP 地址,-i <延遲秒數>:指定時間間隔,以便傳送資訊及掃描通信埠,-o <輸出檔案>:指定檔案名稱,把往來傳輸的資料以 16 進制字碼傾倒成該檔案保存,
3.NetCat 常見用法
準備兩臺 Linux 主機:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y epel-release mawk mcrypt pv
| 主機名 | 作業系統 | IP 地址 |
|---|---|---|
| Server | CentOS 7 | 192.168.1.1 |
| Client | CentOS 7 | 192.168.1.2 |
- 注意:這里的 Server 端和 Client 端 并沒有直接的區分開,關系可以隨時交換,不要潛移默化(受到影響),
1)簡陋版聊天室
Server 端:
[root@Server ~]# mawk -W interactive '$0="Server: "$0' | nc -l 8888
Client 端:
[root@Client ~]# mawk -W interactive '$0="Client: "$0' | nc 192.168.1.1 8888
輸出顯示:


2)檔案傳輸
收取方:
[root@Client ~]# nc -l 8888 > 1.txt
發送方:
[root@Server ~]# echo "Hello World" > 1.txt && nc 192.168.1.2 8888 < 1.txt

- 當發送方完成傳輸后,NetCat 并不會直接退出,而是需要用戶手動退出(Ctrl + C)
1)當我們想要實作傳輸完成后,便自動退出時可以使用 -N 引數:
[root@Client ~]# nc -l 8888 > 2.txt
[root@Server ~]# echo "Hello World" > 2.txt && nc -N 192.168.1.2 8888 < 2.txt

2)此外,還可以使用 pv 命令來查看檔案傳輸的進度:
pv (Pipe Viewer):通過管道顯示資料處理進度資訊(跟cp的區別無非就是pv是通過>來進行傳輸)
[root@Server ~]# pv /var/log/messages > ~/messages.txt
700kiB 0:00:00 [4.33MiB/s] [=================================================>] 100%
使用 pv 結合 NetCat 命令來實作傳輸進度顯示:
[root@Client ~]# nc -l 8888 > ~/messages.txt
[root@Server ~]# pv /var/log/messages | nc -N 192.168.1.2 8888
700kiB 0:00:00 [ 189MiB/s] [=================================================>] 100%

3)當我們想要傳輸目錄時,可以使用 tar 跟 NetCat 配合使用:
[root@Client ~]# nc -l 8888 | tar zxf -
[root@Server ~]# tar czf - zhangsan | pv | nc -N 192.168.1.2 8888

4)在傳輸檔案時進行加密操作:
[root@Client ~]# nc -l 8888 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb -k 123123 > zhangsan.txt
[root@Server ~]# mcrypt --flush -Fbq -a rijndael-256 -m ecb -k 123123 < /etc/passwd | pv | nc -N 192.168.1.2 8888
-k:指定加密時所需要的密碼,如果不指定,輸入回車時會顯示需要輸入加密密碼,-d:表示接收加密并進行傳輸,

本篇檔案到這里就要結束了,有什么不懂的,歡迎大家在評論區留言 ~

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349672.html
標籤:其他
上一篇:如何使用CSS設定背景影像?
下一篇:C語言函式歸納
