Wireshark命令列工具tshark

來源:互聯網
上載者:User

標籤:抓包   位元組   efi   apn   版本   toc   選取器   target   名稱   

Wireshark命令列工具tshark1、目的

  寫這篇部落格的目的主要是為了方便查閱,使用wireshark可以分析資料包,可以通過編輯過濾運算式來達到對資料的分析;但我的需求是,怎麼樣把Data部分匯出來,因為後續的工作主要針對資料包的Data部分,主要是對本機存放區的.pcap檔案進行解析。這時候就會使用到tshark命令列工具,可以通過命令提取自己想要的資料,可以重新導向到檔案,也可以結合上層語言比如Java,來調用命令列,實現對資料的處理!

  下面我會從 相關執行個體、選項介紹、部分執行個體運行結果 進行概括!

2、首先我們先來看一下網上的一些例子,我對這些例子進行了整理,並給出了說明。
//列印http協議流相關資訊tshark -s 512 -i eth0 -n -f ‘tcp dst port 80‘ -R ‘http.host and http.request.uri‘ -T fields -e http.host -e http.request.uri -l | tr -d ‘\t‘  注釋:    -s: 只抓取前512位元組;    -i: 捕獲eth0網卡;    -n: 禁止網路對象名稱解析;    -f: 只捕獲協議為tcp,目的連接埠為80;    -R: 過濾出http.host和http.request.uri;    -T,-e: 指的是列印這兩個欄位;    -I: 輸出到命令列介面; //即時列印當前mysql查詢語句tshark -s 512 -i eth0 -n -f ‘tcp dst port 3306‘ -R ‘mysql.query‘ -T fields -e mysql.query   注釋:    -R: 過濾出mysql的查詢語句;//匯出smpp協議header和value的例子tshark -r test.cap -R ‘(smpp.command_id==0x80000004) and (smpp.command_status==0x0)‘ -e smpp.message_id -e frame.time -T fields -E header=y >test.txt   注釋:
    -r: 讀取本地檔案,可以先抓包存下來之後再進行分析;
    -R: smpp...可以在wireshark的過濾運算式裡面找到,後面會詳細介紹;
    -E: 當-T欄位指定時,設定輸出選項,header=y意思是頭部要列印;
    -e: 當-T欄位指定時,設定輸出哪些欄位;
     >: 重新導向;//統計http狀態tshark -n -q -z http,stat, -z http,tree
   注釋:
    -q: 只在結束捕獲時輸出資料,針對於統計類的命令非常有用;
    -z: 各類統計選項,具體的參考文檔,後面會介紹,可以使用tshark -z help命令來查看所有支援的欄位;       http,stat: 計算HTTP統計資訊,顯示的值是HTTP狀態碼和HTTP要求方法。
       http,tree: 計算HTTP包分布。 顯示的值是HTTP請求模式和HTTP狀態碼。//抓取500個包提取訪問的網址列印出來tshark -s 0 -i eth0 -n -f ‘tcp dst port 80‘ -R ‘http.host and http.request.uri‘ -T fields -e http.host -e http.request.uri -l -c 500   注釋:
    -f: 抓包前過濾;
    -R: 抓包後過濾;
    -l: 在列印結果之前清空緩衝;
    -c: 在抓500個包之後結束;//顯示ssl data資料tshark -n -t a -R ssl -T fields -e "ip.src" -e "ssl.app_data"
//讀取指定報文,按照ssl過濾顯示內容tshark -r temp.cap -R "ssl" -V -T text
  注釋:
    -T text: 格式化輸出,預設就是text;
    -V: 增加包的輸出;//-q 過濾tcp流13,擷取data內容tshark -r temp.cap -z "follow,tcp,ascii,13"//按照指定格式顯示-etshark -r temp.cap -R ssl -Tfields -e "ip.src" -e tcp.srcport -e ip.dst -e tcp.dstport//輸出資料tshark -r vmx.cap -q -n -t ad -z follow,tcp,ascii,10.1.8.130:56087,10.195.4.41:446 | more  注釋:
    -t ad: 輸出格式化時間戳記;//過濾包的時間和rtp.seqtshark -i eth0 -f "udp port 5004" -T fields -e frame.time_epoch -e rtp.seq -o rtp.heuristic_rtp:true 1>test.txt
  注釋:
    -o: 覆蓋屬性檔案設定的一些值;
//提取各協議資料部分tshark -r H:/httpsession.pcap -q -n -t ad -z follow,tcp,ascii,71.6.167.142:27017,101.201.42.120:59381 | more

上面的例子已經涵蓋了大部分的選項,下面我針對每一個選項進行簡要解釋,並給出這個選項常用的值;

3、選項介紹

  在命令列下可以使用tshark -help得到選項的簡單介紹,具體的需要查閱官方文檔https://www.wireshark.org/docs/man-pages/tshark.html

捕獲介面:
  -i: -i <interface> 指定捕獲介面,預設是第一個非本地迴圈介面;  -f: -f <capture filter> 設定抓包過濾運算式,遵循libpcap過濾文法,這個實在抓包的過程中過濾,如果是分析本地檔案則用不到。  -s: -s <snaplen> 設定快照長度,用來讀取完整的資料包,因為網路中傳輸有65535的限制,值0代錶快照長度65535,預設也是這個值;
  -p: 以非混合模式工作,即只關心和本機有關的流量。
  -B: -B <buffer size> 設定緩衝區的大小,只對windows生效,預設是2M;
  -y: -y<link type> 設定抓包的資料連結層協議,不設定則預設為-L找到的第一個協議,區域網路一般是EN10MB等;
  -D: 列印介面的列表並退出;
  -L 列出本機支援的資料連結層協議,供-y參數使用。

捕獲停止選項:
  -c: -c <packet count>
捕獲n個包之後結束,預設捕獲無限個;
  -a: -a <autostop cond.> ... duration:NUM,在num秒之後停止捕獲;
                   filesize:NUM,在numKB之後停止捕獲;
                  files:NUM,在捕獲num個檔案之後停止捕獲;捕獲輸出選項:
 
 -b <ringbuffer opt.> ... ring buffer的檔案名稱由-w參數決定,-b參數採用test:value的形式書寫;
                 duration:NUM - 在NUM秒之後切換到下一個檔案;
                 filesize:NUM - 在NUM KB之後切換到下一個檔案;
                 files:NUM - 形成環形緩衝,在NUM檔案達到之後;
RPCAP選項:
 
 remote packet capture protocol,遠程抓包協議進行抓包;
  -A: -A <user>:<password>,使用RPCAP密碼進行認證;輸入檔案:
  
-r: -r <infile> 設定讀取本地檔案
處理選項:
  
-2: 執行兩次分析
  -R: -R <read filter>,包的讀取過濾器,可以在wireshark的filter文法上查看;在wireshark的視圖->過濾器視圖,在這一欄點擊運算式,就會列出來對所有協議的支援。
  -Y: -Y <display filter>,使用讀取過濾器的文法,在單次分析中可以代替-R選項;
  -n: 禁止所有地址名字解析(預設為允許所有)
  -N: 啟用某一層的地址名字解析。“m”代表MAC層,“n”代表網路層,“t”代表傳輸層,“C”代表當前非同步DNS尋找。如果-n和-N參數同時存在,-n將被忽略。如果-n和-N參數都不寫,則預設開啟所有地址名字解析。  -d: 將指定的資料按有關協議解包輸出,如要將tcp 8888連接埠的流量按http解包,應該寫為“-d tcp.port==8888,http”;tshark -d. 可以列出所有支援的有效選取器。
  輸出選項:
  
-w: -w <outfile|-> 設定raw資料的輸出檔案。這個參數不設定,tshark將會把解碼結果輸出到stdout,“-w -”表示把raw輸出到stdout。如果要把解碼結果輸出到檔案,使用重新導向“>”而不要-w參數。
  -F: -F <output file type>,設定輸出的檔案格式,預設是.pcapng,使用tshark -F可列出所有支援的輸出檔案類型。
  -V: 增加細節輸出;
  -O: -O <protocols>,只顯示此選項指定的協議的詳細資料。
  -P: 即使將解碼結果寫入檔案中,也列印包的概要資訊;
  -S: -S <separator> 行分割符
  -x: 設定在解碼輸出結果中,每個packet後面以HEX dump的方式顯示具體資料。
  -T: -T pdml|ps|text|fields|psml,設定解碼結果輸出的格式,包括text,ps,psml和pdml,預設為text
  -e: 如果-T fields選項指定,-e用來指定輸出哪些欄位;
  -E: -E <fieldsoption>=<value>如果-T fields選項指定,使用-E來設定一些屬性,比如
    header=y|n
    separator=/t|/s|<char>
    occurrence=f|l|a
    aggregator=,|/s|<char>
  -t: -t a|ad|d|dd|e|r|u|ud 設定解碼結果的時間格式。“ad”表示帶日期的絕對時間,“a”表示不帶日期的絕對時間,“r”表示從第一個包到現在的相對時間,“d”表示兩個相鄰包之間的增量時間(delta)。  -u: s|hms 格式化輸出秒;
  -l: 在輸出每個包之後flush標準輸出
  -q: 結合-z選項進行使用,來進行統計分析;
  -X: <key>:<value> 擴充項,lua_script、read_format,具體參見 man pages;
  
-z:統計選項,具體的參考文檔;tshark -z help,可以列出,-z選項支援的統計方式。
  
其他選項:
  
-h: 顯示命令列協助;
  -v: 顯示tshark 的版本資訊;

 4、部分命令測試

  在第三節我簡要介紹了tshark相關的命令,在這一節我們主要測試幾個選項的輸出結果,來對命令加深理解。對於第三節的命令選項,比較重要的已經用藍色標出,方便查閱。

  使用tshark對資料包進行分析,主要是對過濾器的學習,根據自己的需求寫出響應的過濾器,來得到相應的資料。

  針對於我的需求,先抓包在分析,還想將命令列整合進java語言中,然後進行物件導向的分析,那麼就需要一些特別的命令來擷取一些資料:

//1. 樣本1,分析報文封裝的協議
  C:\Users\sdut>tshark -r H:\httpsession.pcap -T fields -e frame.number -e frame.protocols -E header=y
  --輸出  
  frame.number    frame.protocols
  1       eth:ethertype:ip:tcp
  2       eth:ethertype:ip:tcp
  3       eth:ethertype:ip:tcp
  4       eth:ethertype:ip:tcp:http
  5       eth:ethertype:ip:tcp
  6       eth:ethertype:ip:tcp:http:data-text-lines
  7       eth:ethertype:ip:tcp
  8       eth:ethertype:ip:tcp
  9       eth:ethertype:ip:tcp
  -e frame.number:顯示幀序號
  -e frame.time: 顯示時間,時間格式為 Sep 21, 2016 17:20:02.233249000 中國標準時間
  -e frame.protocols: 顯示此資料包使用的協議
  -e ip.src: 顯示源ip,但是不能跟frame一起用
  -e ip.dst: 顯示目的ip地址;
  -e tcp.port: 顯示連接埠號碼。
  ......還有很多,針對需求,一方面可以自己通過wireshark軟體顯示的頭部欄位來猜測,另一方面可以查閱文檔,https://www.wireshark.org/docs/dfref/,這裡面列出了所有支援的-e欄位寫法,可以在裡面搜尋ip、frame上面我們使用的這幾個就會搜到。

//2.樣本2

  C:\Users\sdut>tshark -2 -r H:\httpsession.pcap -R "http.request.line || http.file_data || http.response.line" -T fields -e http.request.line -e http.file_data -e http.response.line -E header=y
  輸出:該例子輸出http協議的要求標頭,回應標頭,和響應資料;
  http.request.line  http.file_data  http.response.line
  ......          ......      ......
  具體的這個-R過濾寫法,可以查看文檔,根據自己的需求來。https://wiki.wireshark.org/DisplayFilters......
5、參考文獻

  tshark官方文檔:https://www.wireshark.org/docs/man-pages/tshark.html

  wireshark wiki:https://wiki.wireshark.org/

  捕獲過濾器 https://wiki.wireshark.org/CaptureFilters

  顯示過濾器,用於display過濾的欄位可以通過https://wiki.wireshark.org/DisplayFilters 查詢。如果不過濾-e指定的欄位資料都會輸出,通過-R過濾之後,只有滿足規則的才會輸出,會因此-R和-T、-e通常會一起使用。

  統計:https://wiki.wireshark.org/Statistics

Wireshark命令列工具tshark

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.