TShark是一個網絡協議分析器(TCPdump是linux下網絡數據包捕獲和分析的工具)。從網絡中捕獲數據包數據,或者從先前保存的捕獲文件中讀取數據包,或者將這些數據包的解碼形式打印到標准輸出,或者將這些數據包寫入文件。TShark的原始捕獲文件格式是pcapng格式,這也是Wireshark和其他各種工具使用的格式。
1)使用tshark捕獲數據包
在windows下使用tshark捕獲數據包
tshark -w test.pcap #捕獲數據包並寫入pcap文件
在默認目錄有test.pcap
2) 使用tshark解析數據包
常用參數:
-r
:指定需要解析的數據包-T
:指定數據包解析輸出格式,支持格式見解碼所有數據,這里介紹-T fields
,一般與-e
選項連用。-e
:指定過濾的字段,如果使用-T ek|fields|json|pdml,則將字段添加到要顯示的字段列表中,這個選項可以在命令行中多次使用。如果選擇了-T fields選項,則必須提供至少一個字段。列名可以使用“_ws.col”作為前綴。-E<field print option>
:當選定-T fields時,設定選項控制打印字段。
選項:
- bom=y|n, 默認n,如果是y則在輸出前添加UTF-8字節順序標記(十六進制ef, bb, bf)
- header=y|n,默認n,如果是y則使用-e作為輸出的第一行,打印一個字段名的列表
- separator=/t|/s|<character>。默認是/t,設置用於字段的分隔符 ,通常使用,分隔則-E separator=,
- occurrence=f|l|a,為具有多次出現的字段選擇要使用的匹配項。如果f將使用第一個匹配項,如果l將使用最后一個匹配項,如果a將使用所有匹配項
- aggregator=,|/s|<character>,設置聚合器字符,以用於出現多次事件的字段。如果,將使用逗號(這是默認值),如果/s,將使用單個空格。否則,可以使用命令行可以接受的任何字符作為選項的一部分。
- quote=d|s|n,設置用於包圍字段的引號字符。 d uses double-quotes, s single-quotes, n no quotes (the default).
-Y
:過濾指定報文
命令實例:將捕獲PCAP的源IP和目的IP寫入txt中
tshark -r test.pcap -T fields -e ip.src -e ip.dst > test.txt
命令實例:將捕獲PCAP的源IP和目的IP寫入txt中,且以‘,’分隔
tshark -r test.pcap -T fields -e ip.src -e ip.dst -E separator=, > test.txt
命令實例:
tshark -r temp.cap -T fields -e _ws.col.Protocol -E header=n -E separator=, -E quote=d -E occurrence=f > temp.csv
對temp.cap提取協議字段,並使用,分隔,寫入temp.csv