tshark是命令行的慰技,wireshark是圖形界面的阴挣。一般用wireshark多年栓,但是命令行的有個(gè)好處流纹,就是容易被其他程序調(diào)用糜烹。
基本語(yǔ)法: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> ]
根據(jù)試驗(yàn),參數(shù)的書寫有講究漱凝。模仿tcpdump疮蹦,可以把抓包過(guò)濾表達(dá)式寫在命令的最后。一般將抓包表達(dá)式用引號(hào)quote起來(lái)(在windows上是雙引號(hào)")茸炒,一是為了視覺(jué)方便愕乎,一是為了逃避其中字符和shell語(yǔ)法的沖突(如“>”,“||”等)壁公。抓包過(guò)濾表達(dá)式也可以寫在-f參數(shù)的后面感论,注意,此時(shí)更應(yīng)該使用引號(hào)或者將-f放在最后紊册。否則比肄,它們會(huì)認(rèn)為-f(可省)后面的參數(shù)都是表達(dá)式的一部分囊陡,而導(dǎo)致命令格式混亂芳绩。
主要參數(shù)分類含義權(quán)作解說(shuō)如下:
- 抓包接口類
-i 設(shè)置抓包的網(wǎng)絡(luò)接口,不設(shè)置則默認(rèn)為第一個(gè)非自環(huán)接口撞反。
-D 列出當(dāng)前存在的網(wǎng)絡(luò)接口妥色。在不了解OS所控制的網(wǎng)絡(luò)設(shè)備時(shí),一般先用“tshark -D”查看網(wǎng)絡(luò)接口的編號(hào)以供-i參數(shù)使用痢畜。
-f 設(shè)定抓包過(guò)濾表達(dá)式(capture filter expression)垛膝。抓包過(guò)濾表達(dá)式的寫法雷同于tcpdump,可參考tcpdump man page的有關(guān)部分丁稀。
-s 設(shè)置每個(gè)抓包的大小吼拥,默認(rèn)為65535,多于這個(gè)大小的數(shù)據(jù)將不會(huì)被程序記入內(nèi)存线衫、寫入文件凿可。(這個(gè)參數(shù)相當(dāng)于tcpdump的-s,tcpdump默認(rèn)抓包的大小僅為68)
-p 設(shè)置網(wǎng)絡(luò)接口以非混合模式工作授账,即只關(guān)心和本機(jī)有關(guān)的流量枯跑。
-B 設(shè)置內(nèi)核緩沖區(qū)大小,僅對(duì)windows有效白热。
-y 設(shè)置抓包的數(shù)據(jù)鏈路層協(xié)議敛助,不設(shè)置則默認(rèn)為-L找到的第一個(gè)協(xié)議,局域網(wǎng)一般是EN10MB等屋确。
-L 列出本機(jī)支持的數(shù)據(jù)鏈路層協(xié)議纳击,供-y參數(shù)使用续扔。 - 抓包停止條件
-c 抓取的packet數(shù),在處理一定數(shù)量的packet后焕数,停止抓取纱昧,程序退出。
-a 設(shè)置tshark抓包停止向文件書寫的條件堡赔,事實(shí)上是tshark在正常啟動(dòng)之后停止工作并返回的條件识脆。條件寫為test:value的形式,如“-a duration:5”表示tshark啟動(dòng)后在5秒內(nèi)抓包然后停止善已;“-a filesize:10”表示tshark在輸出文件達(dá)到10kB后停止灼捂;“-a files:n”表示tshark在寫滿n個(gè)文件后停止。(windows版的tshark0.99.3用參數(shù)“-a files:n”不起作用——會(huì)有無(wú)數(shù)多個(gè)文件生成雕拼。由于-b參數(shù)有自己的files參數(shù)纵东,所謂“和-b的其它參數(shù)結(jié)合使用”無(wú)從說(shuō)起粘招。這也許是一個(gè)bug啥寇,或tshark的man page的書寫有誤。) - 文件輸出控制
-b 設(shè)置ring buffer文件參數(shù)洒扎。ring buffer的文件名由-w參數(shù)決定辑甜。-b參數(shù)采用test:value的形式書寫∨劾洌“-b duration:5”表示每5秒寫下一個(gè)ring buffer文件磷醋;“-b filesize:5”表示每達(dá)到5kB寫下一個(gè)ring buffer文件;“-b files:7”表示ring buffer文件最多7個(gè)胡诗,周而復(fù)始地使用邓线,如果這個(gè)參數(shù)不設(shè)定,tshark會(huì)將磁盤寫滿為止煌恢。 - 文件輸入
-r 設(shè)置tshark分析的輸入文件骇陈。tshark既可以抓取分析即時(shí)的網(wǎng)絡(luò)流量,又可以分析dump在文件中的數(shù)據(jù)瑰抵。-r不能是命名管道和標(biāo)準(zhǔn)輸入你雌。 - 處理類
-R 設(shè)置讀取(顯示)過(guò)濾表達(dá)式(read filter expression)二汛。不符合此表達(dá)式的流量同樣不會(huì)被寫入文件婿崭。注意,讀入燃铡(顯示)過(guò)濾表達(dá)式的語(yǔ)法和底層相關(guān)的抓包過(guò)濾表達(dá)式語(yǔ)法不相同氓栈,它的語(yǔ)法表達(dá)要豐富得多,請(qǐng)參考http://www.ethereal.com/docs/dfref/和http://www.ethereal.com/docs/man-pages/ethereal-filter.4.html婿着。類似于抓包過(guò)濾表達(dá)式授瘦,在命令行使用時(shí)最好將它們quote起來(lái)幸海。
-n 禁止所有地址名字解析(默認(rèn)為允許所有)。
-N 啟用某一層的地址名字解析奥务∥锒溃“m”代表MAC層,“n”代表網(wǎng)絡(luò)層氯葬,“t”代表傳輸層挡篓,“C”代表當(dāng)前異步DNS查找。如果-n和-N參數(shù)同時(shí)存在帚称,-n將被忽略官研。如果-n和-N參數(shù)都不寫,則默認(rèn)打開所有地址名字解析闯睹。
-d 將指定的數(shù)據(jù)按有關(guān)協(xié)議解包輸出戏羽。如要將tcp 8888端口的流量按http解包,應(yīng)該寫為“-d tcp.port==8888,http”楼吃。注意選擇子和解包協(xié)議之間不能留空格始花。 - 輸出類
-w 設(shè)置raw數(shù)據(jù)的輸出文件。這個(gè)參數(shù)不設(shè)置孩锡,tshark將會(huì)把解碼結(jié)果輸出到stdout酷宵。“-w-”表示把raw輸出到stdout躬窜。如果要把解碼結(jié)果輸出到文件浇垦,使用重定向“>”而不要-w參數(shù)。
-F 設(shè)置輸出raw數(shù)據(jù)的格式荣挨,默認(rèn)為libpcap男韧。“tshark -F”會(huì)列出所有支持的raw格式默垄。
-V 設(shè)置將解碼結(jié)果的細(xì)節(jié)輸出此虑,否則解碼結(jié)果僅顯示一個(gè)packet一行的summary。
-x 設(shè)置在解碼輸出結(jié)果中厕倍,每個(gè)packet后面以HEX dump的方式顯示具體數(shù)據(jù)寡壮。
-T 設(shè)置解碼結(jié)果輸出的格式,包括text,ps,psml和pdml讹弯,默認(rèn)為text况既。
-t 設(shè)置解碼結(jié)果的時(shí)間格式∽槊瘢“ad”表示帶日期的絕對(duì)時(shí)間棒仍,“a”表示不帶日期的絕對(duì)時(shí)間,“r”表示從第一個(gè)包到現(xiàn)在的相對(duì)時(shí)間臭胜,“d”表示兩個(gè)相鄰包之間的增量時(shí)間(delta)莫其。
-S 在向raw文件輸出的同時(shí)癞尚,將解碼結(jié)果打印到控制臺(tái)。
-l 在處理每個(gè)包時(shí)即時(shí)刷新輸出乱陡。
-X 擴(kuò)展項(xiàng)浇揩。
-q 設(shè)置安靜的stdout輸出(例如做統(tǒng)計(jì)時(shí))
-z 設(shè)置統(tǒng)計(jì)參數(shù)。 - 其它
-h 顯示命令行幫助憨颠。
-v 顯示tshark的版本信息胳徽。
-o 重載選項(xiàng)。
tcpdump -i moca0 -w /tmp/dhcp.pcap