【轉】簡單把玩tethereal/tshark

轉自:http://blog.sina.com.cn/s/blog_5919b8b10100064e.htmlhtml

 

Ethereal是一個很流行的開源sniffer,支持包括solaris在內的不少平臺。2006年初,主導Ethereal源碼的大牛Gerald Combs跳槽到了CACE公司。原來「Ethereal」的商標就不能用了。偉大的開源項目若是所以而over,難免同好者唏噓。怎麼辦?Combs等人只得捨棄人氣既旺的Ethereal名號,將項目改名爲Wireshark。它吸引了大多數原來Ethereal的contributor,從Ethereal的fork點0.99.1開始,繼續添加無數使人興奮的新功能。這個互聯網的放大鏡,展示給了咱們一個生動卻又枯燥,舒適伴着冷漠,充滿智慧的流量和陰謀的機關,不捨虛構而又看似真實的「以太」世界。shell

Ethereal的玩法如大多sniffer。更有趣之處在於它提供了命令行的抓包程序tethereal(如今更名爲tshark)等一系列命令行工具,可以無縫地融入unix/windows腳本語言,使嗅探、分析的工做更得強援。express

tethereal/tshark位於圖形化軟件的相同目錄內。和大多數unix腳本同樣,它都提供了比較翔實的man page(我的認爲,惋惜例子仍是少了一點)。windows

如下試驗均基於windows平臺的Wireshark,版本0.99.3。網絡


基本語法:tshark [ -a <capture autostop condition> ] ... [ -b <capture ring buffer option>] ... [ -B <capture buffer size (Win32 only)> ]  [ -c <capture packet count> ] [ -d <layer type>==<selector>,<decode-as protocol> ] [ -D ] [ -f <capture filter> ] [ -F <file format> ] [ -h ] [ -i <capture interface>|- ] [ -l ] [ -L ] [ -n ] [ -N <name resolving flags> ] [ -o <preference setting> ] ... [ -p ] [ -q ] [ -r <infile> ] [ -R <read (display) filter> ] [ -s <capture snaplen> ] [ -S ] [ -t ad|a|r|d ] [ -T pdml|psml|ps|text ] [ -v ] [ -V ] [ -w <outfile>|- ] [ -x ] [ -X <eXtension option>] [ -y <capture link type> ] [ -z <statistics> ]異步

根據試驗,參數的書寫有講究。模仿tcpdump,能夠把抓包過濾表達式寫在命令的最後。通常將抓包表達式用引號quote起來(在windows上是雙引號"),一是爲了視覺方便,一是爲了逃避其中字符和shell語法的衝突(如「>」,「||」等)。抓包過濾表達式也能夠寫在-f參數的後面,注意,此時更應該使用引號或者將-f放在最後。不然,它們會認爲-f(可省)後面的參數都是表達式的一部分,而致使命令格式混亂。tcp

主要參數分類含義權做解說以下:工具

1. 抓包接口類url

  • -i 設置抓包的網絡接口,不設置則默認爲第一個非自環接口。
  • -D 列出當前存在的網絡接口。在不瞭解OS所控制的網絡設備時,通常先用「tshark -D」查看網絡接口的編號以供-i參數使用。
  • -f 設定抓包過濾表達式(capture filter expression)。抓包過濾表達式的寫法雷同於tcpdump,可參考tcpdump man page的有關部分。
  • -s 設置每一個抓包的大小,默認爲65535,多於這個大小的數據將不會被程序記入內存、寫入文件。(這個參數至關於tcpdump的-s,tcpdump默認抓包的大小僅爲68)
  • -p 設置網絡接口以混合模式工做,即只關心和本機有關的流量。
  • -B 設置內核緩衝區大小,僅對windows有效。
  • -y 設置抓包的數據鏈路層協議,不設置則默認爲-L找到的第一個協議,局域網通常是EN10MB等。
  • -L 列出本機支持的數據鏈路層協議,供-y參數使用。   

2. 抓包中止條件spa

  • -c 抓取的packet數,在處理必定數量的packet後,中止抓取,程序退出。
  • -a 設置tshark抓包中止向文件書寫的條件,事實上是tshark在正常啓動以後中止工做並返回的條件。條件寫爲test:value的形式,如「-a duration:5」表示tshark啓動後在5內抓包而後中止;「-a filesize:10」表示tshark在輸出文件達到10kB後中止;「-a files:n」表示tshark在寫滿n個文件後中止。(windows版的tshark0.99.3用參數「-a files:n」不起做用——會有無數多個文件生成。因爲-b參數有本身的files參數,所謂「和-b的其它參數結合使用」無從提及。這也許是一個bug,或tshark的man page的書寫有誤。)

3. 文件輸出控制

  • -b 設置ring buffer文件參數。ring buffer的文件名由-w參數決定。-b參數採用test:value的形式書寫。「-b duration:5」表示每5秒寫下一個ring buffer文件;「-b filesize:5」表示每達到5kB寫下一個ring buffer文件;「-b files:7」表示ring buffer文件最多7個,周而復始地使用,若是這個參數不設定,tshark會將磁盤寫滿爲止。

4. 文件輸入

  • -r 設置tshark分析的輸入文件。tshark既能夠抓取分析即時的網絡流量,又能夠分析dump在文件中的數據。-r不能是命名管道和標準輸入。

5. 處理類

  • -R 設置讀取(顯示)過濾表達式(read filter expression)。不符合此表達式的流量一樣不會被寫入文件。 注意,讀取(顯示)過濾表達式的語法和底層相關的抓包過濾表達式語法不相同,它的語法表達要豐富得多,請參考http://www.ethereal.com/docs/dfref/http://www.ethereal.com/docs/man-pages/ethereal-filter.4.html。相似於抓包過濾表達式,在命令行使用時最好將它們quote起來。
  • -n 禁止全部地址名字解析(默認爲容許全部)。
  • -N 啓用某一層的地址名字解析。「m」表明MAC層,「n」表明網絡層,「t」表明傳輸層,「C」表明當前異步DNS查找。若是-n和-N參數同時存在,-n將被忽略。若是-n和-N參數都不寫,則默認打開全部地址名字解析。
  • -d 將指定的數據按有關協議解包輸出。如要將tcp 8888端口的流量按http解包,應該寫爲「-d tcp.port==8888,http」。注意選擇子和解包協議之間不能留空格。

6. 輸出類

  • -w 設置raw數據的輸出文件。這個參數不設置,tshark將會把解碼結果輸出到stdout。「-w-」表示把raw輸出到stdout。若是要把解碼結果輸出到文件,使用重定向「>」而不要-w參數。
  • -F 設置輸出raw數據的格式,默認爲libpcap。「tshark -F」會列出全部支持的raw格式。
  • -V 設置將解碼結果的細節輸出,不然解碼結果僅顯示一個packet一行的summary。
  • -x 設置在解碼輸出結果中,每一個packet後面以HEX dump的方式顯示具體數據。
  • -T 設置解碼結果輸出的格式,包括text,ps,psml和pdml,默認爲text。
  • -t 設置解碼結果的時間格式。「ad」表示帶日期的絕對時間,「a」表示不帶日期的絕對時間,「r」表示從第一個包到如今的相對時間,「d」表示兩個相鄰包之間的增量時間(delta)。
  • -S 在向raw文件輸出的同時,將解碼結果打印到控制檯。
  • -l 在處理每一個包時即時刷新輸出。
  • -X 擴展項。
  • -q 設置安靜的stdout輸出(例如作統計時)
  • -z 設置統計參數。

7. 其它

  • -h 顯示命令行幫助。
  • -v 顯示tshark的版本信息。
  • -o 重載選項。

在即時抓包模式(-r未設定)時的各參數功能一覽:

簡單把玩tethereal/tshark

在文件讀取分析模式時的各參數功能一覽:

簡單把玩tethereal/tshark

 

 

轉自:http://blog.sina.com.cn/s/blog_5919b8b10100064e.html

相關文章
相關標籤/搜索