HardBirch

Linux下的神奇指令——netcat

时间:10-01-08 栏目:系统技术篇 作者:鲁智森也有文化 评论:0 点击: 1,429 次

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:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐