Linux下的神奇指令——netcat
来源:互联网 发布:最好的有源音箱 知乎 编辑:程序博客网 时间:2024/05/21 08:58
netcat 就像 cat 指令一樣,只是將簡單的 cat 功能完全「網路化」,好用與靈活的程度可說是很驚人,而在 Top 100 Network Security Tools 排行榜中還排行第四名呢!
netcat 除了可以當 TCP Client 工具以外,還可以當 TCP Server 的工具,以下我用幾個簡單的例子說明:
示範 netcat 如何當 TCP Client 工具
底下這段指令代表你要將 /etc 目錄整個打包並壓縮起來,並將資料傳送到 10.0.0.99 主機的 Port 3456,並指定若超過 30 秒沒有連上目的地或 30 秒沒有回應的話自動 Timeout。
# tar -zcf - /etc | netcat -w 30 10.0.0.99 3456
示範 netcat 如何當 TCP Server 工具
如果拿以上的例子,你可能會想說那你還要自己寫一個 Server 接受這些封包啊!答案是:「只要用 netcat 就可以拿來當 Server 用了,一行程式也不用寫」,底下這段指令是假設從 10.0.0.99 主機執行的。
# netcat -l -p 3456 > /backup/my_etc_backup.tar.gz
-l 參數代表進入 Listen mode
-p 代表 Listen 的 Port 為 3456
之後的 > my_etc_backup.tar.gz 代表你要將從 TCP 傳入的所有資料都導入到 /backup/my_etc_backup.tar.gz 檔案中。
用以上兩個非常簡單的例子就可以知道,原來在網路之間傳輸資料可以如此的簡單。若知道 rsync 工具的人可能會笑說:「用 netcat 太麻煩了吧,用 rsync 同步或備份檔案才更好用吧」。是的,如果要「同步檔案」的話,當然用 rsync 比較好用,不過 netcat 還可以做的更多!
因為 netcat 可以模擬任何所有 TCP Protocol 的動作,就如同我們常用 telnet 測試 HTTP、POP3、或 SMTP 協定的時候一樣,只是使用 netcat 可以讓我們更自動化的做些測試,舉幾個例子如下:
1. 測試 HTTP 運作是否正常
首先,必須先建立要下的 HTTP 指令檔,假設叫 GET_tw.yahoo.com.txt,內容如下:
GET / HTTP/1.0
Host: tw.yahoo.com
注意:在指令的最後面必須要有兩個「斷行」符號,所以你可以在文字檔後面加上兩行空白行。
然後就可以用以下指令取得 Yahoo! 奇摩 的首頁 HTML:
# cat GET_tw.yahoo.com.txt | nc tw.yahoo.com 80
再透過一些指令或程式就可以將測試網頁是否還活著的偵測程式完成且自動化了。
2. 測試 SMTP 運作是否正常
測試 SMTP 的方式也跟 HTTP 一樣,就是先把指令都給先寫好,假設檔名是 SMTP_test.txt,內容如下:
HELO localhost
MAIL FROM:<will@test.com>
RCPT TO:<will@test.com>
DATA
To: Will <will@test.com>
Subject: This is a test
This is first line
.
QUIT
然後就可以用以下指令將 SMTP Command 送到 smtp.test.com 了:
# cat SMTP_test.txt | nc smtp.test.com 25
執行的結果如下:
# cat SMTP_test.txt | nc smtp.test.com 25
220 smtp.test.com ESMTP Service ready Fri, 11 Jul 2008 19:13:17 +0800 (CST)
250 smtp.test.com
250 Sender <doggy@test.com> OK
250 Recipient <doggy@test.com> OK
354 Enter mail, end <CRLF>.<CRLF>
250 Message accepted for delivery
221 smtp.test.com
如何上述幾個簡單的範例之外,當然也可以測試包括 FTP, POP3, ... 等任何 TCP-based 的服務都可以。
netcat 幾乎在每一個 Linux distribution 中都有預設安裝,算是一個非常普及的工具。如果你要在 Windows 上使用 netcat 工具的話,可以到這裡下載。
- Linux下的神奇指令——netcat
- Linux 下编译netcat
- netcat——Useful netcat examples on Linux
- Linux环境下netcat使用
- Linux Netcat 命令—网络工具中的瑞士军刀
- Linux Netcat 命令—网络工具中的瑞士军刀
- linux 下的socket 调试工具 netcat 使用
- linux 神奇的压缩指令与正规表示法
- netcat——文件传输
- linux下编译netcat并且反弹cmdshell
- Linux Netcat 命令——网络工具中的瑞士军刀
- Linux Netcat 命令——网络工具中的瑞士军刀
- Linux Netcat 命令——网络工具中的瑞士军刀
- Linux Netcat 命令——网络工具中的瑞士军刀
- Linux Netcat 命令——网络工具中的瑞士军刀
- Linux Netcat 命令——网络工具中的瑞士军刀
- Linux Netcat 命令——网络工具中的瑞士军刀
- Linux Netcat 命令——网络工具中的瑞士军刀
- 毕业5年决定你的命运 --------值得所有不甘平庸的人看看
- 变量被重复定义的问题的讨论
- MAKEFILE
- 中國移動老總上厕所
- 各大公司笔试题
- Linux下的神奇指令——netcat
- 武汉,又下雪了
- C/C++语言编程修养(转)
- Linux 下如何强制取消 NFS 目录
- packageManager 学习
- C++学习(一)
- 偶然发现
- C++实现高斯消元法
- [AC自动机+dp]PKU 3691--DNA repair