Tshark捕获和分析PCAP
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