netcat是網絡工具中的瑞士軍刀,它能通過TCP和UDP在網絡中讀寫數據。通過與其他工具結合和重定向,你可以在腳本中以多種方式使用它。使用netcat命令所能完成的事情令人驚訝。
netcat所做的就是在兩臺電腦之間建立鏈接并返回兩個數據流,在這之后所能做的事就看你的想像力了。你能建立一個服務器,傳輸文件,與朋友聊天,傳輸流媒體或者用它作為其它協議的獨立客戶端。
下面是一些使用netcat的例子.
[A(172.31.100.7) B(172.31.100.23)]
Linux netcat 命令實例:
端口掃描經常被系統管理員和黑客用來發現在一些機器上開放的端口,幫助他們識別系統中的漏洞。
$nc -z -v -n 172.31.100.7 21-25可以運行在TCP或者UDP模式,默認是TCP,-u參數調整為udp.
pipe建立的管道是單工的,其參數是一個包含兩個元素的整形數組fd[2],創建成功后fd[0]代表管道可讀的一端,fd[1]代表可寫的一端,這兩個的本質都是文件描述符,當進程間有數據要傳輸時,數據發送的一端需要關閉fd[0],接收端要關閉fd[1],才能正常傳送數據。這是一種辦法,但是要考慮到,因為你不知道用戶是使用什么軟件在發送udp數據過來,你亂發數據過去,很大可能是被客戶軟件認為是不合法的數據而過濾掉,如果sock5代理因為發過去的數據被過濾了而認為客戶 是斷開了,那么極容易就將沒有斷開的用戶也踢下去了,而且現在的oicq還會使用使用兩個連接,一個是udp連接,另一個是tcp連接,udp連接只是登陸上服務器時使用,tcp連接卻是進行數據傳輸的,而udp連接卻是一直都不會有數據傳輸的了,如果socks5代理因為udp連接長時間沒有數據傳輸而將那個udp連接關閉的話,oicq也會因為這樣而掉線(你關閉了udp連接,oicq以為代理是不可用了,自己會將tcp連接斷開)。c:當服務器確定數據已靜完成發送,則向客戶端發送(fin)報文告訴客戶端:"我這邊數據發完了,準備好關閉連接"。
v 參數指使用冗余選項(譯者注:即詳細輸出)
n 參數告訴netcat 不要使用DNS反向查詢IP地址的域名
這個命令會打印21到25 所有開放的端口。Banner是一個文本,Banner是一個你連接的服務發送給你的文本信息。當你試圖鑒別漏洞或者服務的類型和版本的時候,Banner信息是非常有用的。但是,并不是所有的服務都會發送banner。
一旦你發現開放的端口,你可以容易的使用netcat 連接服務抓取他們的banner。
$ nc -v 172.31.100.7 21
netcat 命令會連接開放端口21并且打印運行在這個端口上服務的banner信息。
假如你想和你的朋友聊聊,有很多的軟件和信息服務可以供你使用。但是,如果你沒有這么奢侈的配置,比如你在計算機實驗室,所有的對外的連接都是被限制的,你怎樣和整天坐在隔壁房間的朋友溝通那?不要郁悶了,netcat提供了這樣一種方法,你只需要創建一個Chat服務器,一個預先確定好的端口,這樣子他就可以聯系到你了。
Server
$nc -l 1567
netcat 命令在1567端口啟動了一個tcp 服務器,所有的標準輸出和輸入會輸出到該端口。輸出和輸入都在此shell中展示。
Client
$nc 172.31.100.7 1567
不管你在機器B上鍵入什么都會出現在機器A上。
大部分時間中,我們都在試圖通過網絡或者其他工具傳輸文件。有很多種方法,比如FTP,SCP,SMB等等,但是當你只是需要臨時或者一次傳輸文件,真的值得浪費時間來安裝配置一個軟件到你的機器上嘛。假設,你想要傳一個文件file.txt 從A 到B。A或者B都可以作為服務器或者客戶端,以下,讓A作為服務器,B為客戶端。