如何获得包含所有pcap数据包详细信息的csv?

时间:2017-08-17 11:57:22

标签: parsing wireshark pcap packet-capture tshark

我想创建一个CSV以在excel上导入它,其中包含wireshark中显示的所有数据包详细信息。

每一行应对应一个数据包,并且列对应于字段详细信息。

使用以下tshark命令:

tshark -r mycapturefile.cap -E -V

我可以显示我需要的信息:

Frame 1077: 42 bytes on wire (336 bits), 42 bytes captured (336 bits)
Encapsulation type: Ethernet (1)
Arrival Time: Aug 15, 2017 14:02:27.095521000 EDT
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1502820147.095521000 seconds

和其他数据包详细信息......

我想要的是-V提供的信息,因此wireshark中的-T fields选项被丢弃。 Wireshark导出选项也不提供我需要的数据,只提供pdml格式,但我认为解析起来更为愚蠢。

我搜索过没有结果的工具,脚本或解析器。由于每个数据包都不同,因此使个人解析器可能很难/乏味,并且考虑到人们可以提取此信息但不提供如何执行此操作的来源,必须有可以执行此操作的方法或工具。

您是否知道已经执行此操作的任何工具,脚本或方法?

提前致谢。

1 个答案:

答案 0 :(得分:0)

有大量信息降临。您必须使用-Y显示过滤器来减少它。然后可以分析结果文本。

尝试-Y“ frame.number == 1077” -V,然后解析返回的文本。

就我而言,我想要证书信息。

Function GetCertsFromWireSharkPackets2 ($CERTTEXT){
foreach($Cert in($CERTTEXT|?{$_ -match "Source:.*\d{1,3}\.\d{1,3}\.\d{1,3}\.|Destination:.*\d{1,3}\.\d{1,3}\.\d{1,3}\.|Certificate:"} | %{$_.trim() -replace 'Source:','|Source:' -replace ":",'=' }) -join "`n"| %{$_.split('|')}|?{$_}) {
  $Cert|%{$Props = [regex]::matches($_,"(?sim)(?<=^).*?(?=\=)").value ; $Dups = [regex]::matches($Props,"(?sim)\b(\w+)\s+\1\b").value.split(' ') ; $values = [regex]::matches($_,"(?sim)(?<=\=).*?(?=$)").value.trim()}
  $PropsNoDups = ($Props -join "`n").replace(($Dups|select -first 1),'').split(10)|?{$_} ; 
  if(($PropsNoDups.count + $Dups.count) -ne $Props.count){$dups+=($dups|select -First 1)}
  for($X=1;$X -lt $Dups.count;$X++){$dups[$X] +=$X}
  $ValidProps = $PropsNoDups+$Dups ; $StitchCount = $Values.Count
  $ValidP_V = For($x=0;$x -lt $StitchCount;$x++){ '"'+$ValidProps[$x] + '"="' + $Values[$x] +'"'} ;$ValidP_V =($ValidP_V -join "`n")|?{$_} ; $ExpText = "New-Object psobject -Property @{`n"+$ValidP_V+"`n}"
Invoke-Expression($ExpText)|select Source, Destination, Certificate, Certificate1, Certificate2, Certificate3
} }


#Click refresh on a few browser tabs to generate traffic.

$CERTTEXT = .\tshark.exe -i 'Wi-Fi' -Y "ssl.handshake.certificate" -V -a duration:30


GetCertsFromWireSharkPackets2 $CERTTEXT

Source       : cybersandwich.com (107.170.193.139)
Destination  : KirtCarson.com (222.168.3.118)
Certificate  : 3082057e30820466a0030201020212030e2782075e8f90f5... (id-at-commonName=multi.zeall.us)
Certificate1 : 308204923082037aa00302010202100a0141420000015385... (id-at-commonName=Let's Encrypt Authority
               X3,id-at-organizationName=Let's Encrypt,id-at-countryName=US)
Certificate2 :
Certificate3 :