将pcap数据导出到csv:时间戳,字节,上行链路/下行链路,额外信息

时间:2011-11-11 10:03:01

标签: csv wireshark pcap

我想知道是否有任何工具可以解析pcap数据并将其转换为具有以下信息的csv文件:

时间戳,字节,上行链路/下行链路,一些额外信息..

基本上,IP / MAC地址可以看到上行链路/下行链路,并且实际上不需要额外信息,但我的意思是选择数据包的特定字段。

我一直在尝试一些工具,但我还没找到合适的工具。否则我会写一个小解析器。 提前谢谢!

8 个答案:

答案 0 :(得分:16)

TShark
以下是一些例子:

$ tshark -r test.pcap -T fields -e frame.number -e eth.src -e eth.dst -e ip.src -e ip.dst -e frame.len > test1.csv

$ tshark -r test.pcap -T fields -e frame.number -e eth.src -e eth.dst -e ip.src -e ip.dst -e frame.len -E header=y -E separator=, > test2.csv

$ tshark -r test.pcap -R "frame.number>40" -T fields -e frame.number -e frame.time -e frame.time_delta -e frame.time_delta_displayed -e frame.time_relative -E header=y > test3.csv

$ tshark -r test.pcap -R "wlan.fc.type_subtype == 0x08" -T fields -e frame.number -e wlan.sa -e wlan.bssid > test4.csv

$ tshark -r test.pcap -R "ip.addr==192.168.1.6 && tcp.port==1696 && ip.addr==67.212.143.22 && tcp.port==80" -T fields -e frame.number -e tcp.analysis.ack_rtt -E header=y > test5.csv

$ tshark -r test.pcap -T fields -e frame.number -e tcp.analysis.ack_rtt -E header=y > test6.csv

答案 1 :(得分:3)

不要再犹豫了,wireshark是你最好的朋友。它可以打开您的pcap文件,并允许您指定所需的额外列。在此之后,您只需将它们导出为csv即可。在主界面上,只需右侧任意一列,然后选择“列首选项”。这将打开一个非常直观的新窗口。只需添加一个新列并指定字段名称即可。就如此容易。

我曾尝试过tshark,但相信我会因此而变得有点烦人:

 tshark: Read filters were specified both with "-R" and with additional command-line arguments."

如果您包含太多列或出于任何未知原因,则会弹出此消息。

答案 2 :(得分:2)

看起来你想要Bro的连接日志:

bro -r trace.pcap
head conn.log

输出:

#separator \x09
#set_separator  ,
#empty_field    (empty)
#unset_field    -
#path   conn
#fields ts  uid id.orig_h   id.orig_p   id.resp_h   id.resp_p   proto   service duration    orig_bytes  resp_bytes  conn_state  local_orig  missed_bytes    history orig_pkts   orig_ip_bytes   resp_pkts   resp_ip_bytes
#types  time    string  addr    port    addr    port    enum    string  intervacount    count   string  bool    count   string  count   count   count   count
1258531221.486539   gvuu4KIHDph 192.168.1.102   68  192.168.1.1 67  udp -   0.163820    301 300 SF  -   0   Dd  1   329 1   328
1258531680.237254   6nWmFGj6kWg 192.168.1.103   137 192.168.1.255   137 udp dns 3.780125    350 0   S0  -   0   546 0   0
1258531693.816224   y2lMKyrnnO6 192.168.1.102   137 192.168.1.255   137 udp dns 3.748647    350 0   S0  -   0   546 0   0

现在解析相关字段:

bro-cut ts id.orig_h id.orig_p id.resp_h id.resp_p service orig_bytes resp_bytes < conn.log | head

1258531221.486539   192.168.1.102   68  192.168.1.1     67  -   301 300
1258531680.237254   192.168.1.103   137 192.168.1.255   137 dns 350 0
1258531693.816224   192.168.1.102   137 192.168.1.255   137 dns 350 0
1258531635.800933   192.168.1.103   138 192.168.1.255   138 -   560 0
1258531693.825212   192.168.1.102   138 192.168.1.255   138 -   348 0
1258531803.872834   192.168.1.104   137 192.168.1.255   137 dns 350 0
1258531747.077012   192.168.1.104   138 192.168.1.255   138 -   549 0
1258531924.321413   192.168.1.103   68  192.168.1.1     67  -   303 300
1258531939.613071   192.168.1.102   138 192.168.1.255   138 -   -   -
1258532046.693816   192.168.1.104   68  192.168.1.1 67  -   311 300

答案 3 :(得分:0)

如问题评论中所述,要以csv格式输出捕获文件中帧的ip地址,请使用以下内容:

tshark -r <filename> -t fields -e ip.addr

有关在csv输出中设置分隔符和引用字符的选项的详细信息,请参阅tshark帮助。

可以使用Wireshark检查捕获文件并在详细信息窗格中选择特定字段来确定字段名称。然后,字段名称将显示在Wireshark窗口底部的状态行中。

答案 4 :(得分:0)

您可以从Wireshark应用程序本身执行此操作:

  • 确保您已将文件保存到磁盘(File>Save)(如果您有 完成捕获)
  • 转到File>Export Packet Dissesctions>as "CSV" [etc]
  • 然后输入文件名(确保在末尾添加.csv,因为WS没有 这样做!)

答案 5 :(得分:0)

我们可以设置逗号以外的字段分隔符吗? 因为在我的PCap文件中,如果我设置了separator =,那么输出文件(.csv)中的数据看起来并不好,因为我在大多数列中都有。

所以我想知道有没有办法像其他字符一样设置字段分隔符,即| (pip)等

由于

答案 6 :(得分:0)

这是将pcap划分为流并将提取的特征输出到CSV文件的python工具

尝试在python中使用flows_to_weka工具

这需要在系统中安装scapy版本,最好将其复制到weka文件夹中。并复制scapy文件夹中的wfe.py,tcp_stream.py和entropy.py文件。完成此操作后 您当前的目录应如下所示:

# RLE -> Text
s = "04662312x52c02z01 03a"
pairs = [(int(s[i:i+2]), s[i+2]) for i in range(0, len(s), 3)]
# [(4, '6'), (62, '3'), (12, 'x'), (52, 'c'), (2, 'z'), (1, ' '), (3, 'a')]
text = ''.join(n * c for n, c in pairs)
# '666633333333333333333333333333333333333333333333333333333333333333xxxxxxxxxxxxcccccccccccccccccccccccccccccccccccccccccccccccccccczz aaa'

# Text -> RLE
from itertools import groupby
pairs = [(len(list(g)), k) for k, g in groupby(text)]
# [(4, '6'), (62, '3'), (12, 'x'), (52, 'c'), (2, 'z'), (1, ' '), (3, 'a')]
s = ''.join("%02d%s" % (n, c) for n, c in pairs)
# '04662312x52c02z01 03a'

并将.pcap文件复制到此文件夹中,然后尝试运行以下命令:

C:\Users\INKAKA\flows_to_weka\scapy

,还可以通过在tcp_stream.py和wfe.py中添加所需的功能来检索所需的功能。

作为参考,您可以访问: https://github.com/fichtner/flows_to_weka

答案 7 :(得分:-3)

通过终端安装argus

sudo apt-get install argus-client

将.pcap转换为.argus文件格式

argus -r filename.pcap -w filename.argus  
-r <FILE> Read FILE  
-w <FILE> Write FILE  

在选择要提取的特征时将.argus转换为.csv文件格式。

ra -r filename.argus -u -s <features-comma-seprated>

Example:
ra -r filename.argus -u -s rank, stime, ltime, dur
-r <FILE> Read FILE
-u Print time values using Unix time format (seconds from the Epoch).
-s Specify the fields to print.

可以找到要打印的可用字段的列表here

此信息是从我的原始博客中复制的,您可以阅读here