網絡分析利器wireshark命令版(1):tshark簡介

tshark是網絡分析工具wireshark下的一個工具,主要用於命令行環境進行抓包、分析,尤爲對協議深層解析時,tcpdump難以勝任的場景中。本系列文章將整理介紹tshark相關內容。html

簡介

安裝

在linux下安裝(debian或ubuntu)

sudo apt-get install tshark
安裝完成後在抓包以前,能夠先檢查版本、查看幫助等了解tshark初步瞭解

安裝後檢查

按照安裝wireshark的方式,安裝完成後,啓動「終端」(命令提示符):linux

tshark -v

tshark參數命令解析

查看幫助以下: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
...

捕獲過濾(Capture Filter)

抓包前在網絡接口上設置過濾的,使用BPF表達式(tcpdump、libpcap通用)。
一般用於抓取指定的ip、協議,可定位到3層,能夠經過簡單字符進行。不建議做過多過濾(規則複雜可能影響抓包性能)數組

wireshark內置捕獲過濾

讀取(顯示)過濾(Display Filter)

用於抓包以後,可以對報文可識別的協議字段進行過濾,可對2~7層過濾,可以使用邏輯表達式,多個條件結合使用。緩存

wireshark內置顯示過濾

注意:
建議在使用時,先在wireshare過濾欄調試,具備字段提示,表達式合規會顯示綠色網絡

參考:app

系列文章: 異步

相關文章
相關標籤/搜索