TShark是一个网络协议分析器(TCPdump是linux下网络数据包捕获和分析的工具)。从网络中捕获数据包数据,或者从先前保存的捕获文件中读取数据包,或者将这些数据包的解码形式打印到标准输出,或者将这些数据包写入文件。TShark的原始捕获文件格式是pcapng格式,这也是Wireshark和其他各种工具使用的格式。

1)使用tshark捕获数据包

在windows下使用tshark捕获数据包

tshark  -w test.pcap #捕获数据包并写入pcap文件

 

tiSpark 读取 tidb tshark提取数据_字段

 在默认目录有test.pcap

tiSpark 读取 tidb tshark提取数据_命令行_02

   2) 使用tshark解析数据包

常用参数:

  • -r:指定需要解析的数据包
  • -T:指定数据包解析输出格式,支持格式见解码所有数据,这里介绍 -T fields,一般与-e 选项连用。
  • -e:指定过滤的字段,如果使用-T ek|fields|json|pdml,则将字段添加到要显示的字段列表中,这个选项可以在命令行中多次使用。如果选择了-T fields选项,则必须提供至少一个字段。列名可以使用“_ws.col”作为前缀。
  • -E<field print option>:当选定-T fields时,设定选项控制打印字段。

       选项:

  1.  bom=y|n, 默认n,如果是y则在输出前添加UTF-8字节顺序标记(十六进制ef, bb, bf) 
  2.  header=y|n,默认n,如果是y则使用-e作为输出的第一行,打印一个字段名的列表
  3.  separator=/t|/s|<character>。默认是/t,设置用于字段的分隔符 ,通常使用,分隔则-E separator=,    
  4.  occurrence=f|l|a,为具有多次出现的字段选择要使用的匹配项。如果f将使用第一个匹配项,如果l将使用最后一个匹配项,如果a将使用所有匹配项
  5.  aggregator=,|/s|<character>,设置聚合器字符,以用于出现多次事件的字段。如果,将使用逗号(这是默认值),如果/s,将使用单个空格。否则,可以使用命令行可以接受的任何字符作为选项的一部分。
  6.  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

  

tiSpark 读取 tidb tshark提取数据_命令行_03

  命令实例:将捕获PCAP的源IP和目的IP写入txt中,且以‘,’分隔

tshark -r test.pcap -T fields -e ip.src -e ip.dst -E separator=, > test.txt

  

tiSpark 读取 tidb tshark提取数据_IP_04

 命令实例:

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