我想知道是否有任何工具可以解析pcap数据并将其转换为具有以下信息的csv文件:
时间戳,字节,上行链路/下行链路,一些额外信息..
基本上,IP / MAC地址可以看到上行链路/下行链路,并且实际上不需要额外信息,但我的意思是选择数据包的特定字段。
我一直在尝试一些工具,但我还没找到合适的工具。否则我会写一个小解析器。 提前谢谢!
答案 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]
瞧
答案 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)
sudo apt-get install argus-client
argus -r filename.pcap -w filename.argus
-r <FILE> Read FILE
-w <FILE> Write FILE
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