tshark是網絡分析工具wireshark
下的一個工具,主要用於命令行環境進行抓包、分析,尤爲對協議深層解析時,tcpdump
難以勝任的場景中。本系列文章將整理介紹tshark相關內容。html
sudo apt-get install tshark
安裝完成後在抓包以前,能夠先檢查版本、查看幫助等了解tshark初步瞭解
按照安裝wireshark的方式,安裝完成後,啓動「終端」(命令提示符):linux
tshark -v
查看幫助以下:json
➜ ~ tshark -h TShark (Wireshark) 3.0.1 (v3.0.1-0-gea351cd8) Dump and analyze network traffic. See https://www.wireshark.org for more information. Usage: tshark [options] ...
-i <interface> 接口名或網卡編號 (默認: 第一個非環回接口) -f <capture filter> 使用libpcap過濾表達式進行包過濾 -s <snaplen> 設置每一個抓包的大小,默認爲65535。 (至關於tcpdump的-s,tcpdump默認抓包的大小僅爲68) -p 不使用混雜模式抓捕報文(即只抓取與本機有關的流量) -I 若是支持則啓用鏡像模式 -B <buffer size> 內核緩存大小 (默認2MB) -y <link type> 鏈路層類型 (默認爲找到的第一個協議) --time-stamp-type <type> 接口時間戳類型 -D 列出全部接口並退出 -L 列出全部接口鏈路層類型並退出(供-y參數使用) --list-time-stamp-types 列出全部接口時間戳類型並退出(供--time-stamp參數使用)
-c <packet count> 捕獲到n個包時中止 (默認不限,持續捕獲) -a <autostop cond.> ... duration:NUM - 捕獲進行NUM後中止 filesize:NUM - 輸出文件大於NUM KB後中止 files:NUM - 輸出超過NUM個文件後中止
-b <ringbuffer opt.> ... duration:NUM - 在NUM秒後寫入下一個文件(文件名由-w參數決定) interval:NUM - create time intervals of NUM secs filesize:NUM - 在文件大於NUM KB後寫入下一個文件 files:NUM - 循環緩存: 在NUM個文件後替換早前的
-r <infile|-> 設置須要讀取的文件名及路徑(或'-'表示標準輸入,從終端輸入)ubuntu
-2 執行two-pass分析 -M <packet count> 執行會話自動重置 -R <read filter> 包讀取過濾使用wireshark顯示過濾表達式(配合-2參數) -Y <display filter> 包顯示過濾使用wireshark顯示過濾表達式 -n 不進行名稱解析 (def: all enabled) -N <name resolve flags> 啓用指定的地址名字解析: "mnNtdv" (「m」表明MAC層,「n」表明網絡層,「t」表明傳輸層,「N」表明當前異步DNS查找。) -d <layer_type>==<selector>,<decode_as_protocol> ... "解析爲",詳見man幫助頁面。例: tcp.port==8888,http (注意選擇子和解包協議之間不能留空格) -H <hosts file> 讀取主機列表文件,將被寫入捕獲的文件(Implies -W n) --enable-protocol <proto_name> 啓用協議報文解析 --disable-protocol <proto_name> 不對指定協議報文解析 --enable-heuristic <short_name> 啓用協議報文啓發式解析 --disable-heuristic <short_name> 不對指定協議報文啓發式解析
-w <outfile|-> 使用pcapng格式將報文寫入"outfile"文件 (或'-'表示標準輸出,直接顯示在終端) -C <config profile> 啓動時使用指定的配置文件 -F <output file type> 設置輸出文件格式類型, 默認爲pcapng格式 "-F"留空則列出全部的文件類型 -V 輸出中增長報文層次樹(包詳細信息) -O <protocols> 僅顯示如下協議的詳細信息,逗號分割 -P 每寫入一個文件後進行包狀況彙總 -S <separator> 數據包之間的行分割符 -x 輸出中增長16進制和ascii字符信息(報文按字節顯示) -T pdml|ps|psml|json|jsonraw|ek|tabs|text|fields|? 文本輸出格式 (默認文本:text) -j <protocolfilter> 當-T ek|pdml|json 設置時協議層過濾 (例:"ip ip.flags text", 過濾不展開的全部字節點,除非過濾中有指定的子節點) -J <protocolfilter> 當 -T ek|pdml|json 選項設置時進行頂層協議過濾, (例: "http tcp", 過濾展開的全部字節點) -e <field> 當 -T fields 設置時打印字段 (如tcp.port,_ws.col.Info) 此選項能夠多個用於打印多個字段 -E<fieldsoption>=<value> 當-Tfields選項啓用時用於輸出配置: bom=y|n 打印UTF-8 BOM header=y|n 選擇首行是否輸出字段名(相似表頭) separator=/t|/s|<char> 選擇字段採用tab、空格、指定可打印字符爲分割符 occurrence=f|l|a 打印第一個、最後一個或所有出現的數值(默認所有) aggregator=,|/s|<char> 選擇字段採用逗號、空格、指定可打印字符聚合字段 quote=d|s|n 選擇對數值採用雙引號、單引號、不用引號 -t a|ad|d|dd|e|r|u|ud|? 輸出格式化的時間戳(默認r: rel. 優先) -u s|hms 輸出格式化秒(默認s:秒) -l 每一個包以後就刷新標準輸出 -q 向終端輸出少許信息 (e.g. 當使用統計) -Q 僅向stderr輸出確切錯誤信息(比-q信息更少) -g 啓用組用戶讀取輸出文件 -W n 若是支持,保存額外信息到文件中 n = 寫入網絡地址解析信息 -X <key>:<value> 擴展選項,詳見man頁面 -U tap_name PDUs專家模式, 詳見man幫助頁面 -z <statistics> 大量統計,詳見man幫助頁面 --capture-comment <comment> 在最新建立的輸出文件中增長捕獲註釋(僅支持pcapng格式) --export-objects <protocol>,<destdir> 保存指定導出協議對象到指定目錄 --color 在輸出的文本格式中支持相似Wireshark圖形界面的色彩,終端須要支持24位彩色 同時支持pdml、psml的色彩屬性(注:這兩張屬性非標準) --no-duplicate-keys 若是-T json設置, 合併重複鍵,將多個值歸併在一個鍵下的數組中 --elastic-mapping-filter <protocols> 若是指定-G elastic-mapping,設置僅mapping文件中指定的協議
-h 顯示幫助 -v 顯示版本 -o <name>:<value> ... 覆蓋配置項 -K <keytab> 使用keytab文件用於解密kerberos -G [report] 生成一份或多份報告,默認report="fields" 使用"-G help"獲取更多信息
可用做不一樣格式轉化工具,推薦使用默認的pcapngsegmentfault
tshark -F tshark: option requires an argument -- F tshark: The available capture file types for the "-F" flag are: ... pcap - Wireshark/tcpdump/... - pcap pcapng - Wireshark/... - pcapng ...
抓包前在網絡接口上設置過濾的,使用BPF表達式(tcpdump、libpcap通用)。
一般用於抓取指定的ip、協議,可定位到3層,能夠經過簡單字符進行。不建議做過多過濾(規則複雜可能影響抓包性能)數組
用於抓包以後,可以對報文可識別的協議字段進行過濾,可對2~7層過濾,可以使用邏輯表達式,多個條件結合使用。緩存
注意:
建議在使用時,先在wireshare過濾欄調試,具備字段提示,表達式合規會顯示綠色網絡
參考:app
系列文章: 異步