将 pcap 数据导出到 csv:时间戳、字节、上行链路/下行链路、额外信息 [关闭]
Posted
技术标签:
【中文标题】将 pcap 数据导出到 csv:时间戳、字节、上行链路/下行链路、额外信息 [关闭]【英文标题】:Export pcap data to csv: timestamp, bytes, uplink/downlink, extra info [closed] 【发布时间】:2011-12-26 21:39:06 【问题描述】:我想知道是否有任何工具可以解析 pcap 数据并将其转换为包含以下信息的 csv 文件:
时间戳、字节、上行/下行、一些额外信息..
基本上,上行链路/下行链路可以通过 IP/MAC 地址看到,并且不需要额外的信息,但我的意思是选择数据包的特定字段。
我一直在尝试一些工具,但还没有找到合适的工具。否则我会写一个小解析器。 提前致谢!
【问题讨论】:
tshark 一定要做,找到结果我会发帖的。 这里有一个关于如何使用 tshark 编写 .csv 文件的答案:***.com/questions/6962133/… 【参考方案1】:通过终端安装 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
【讨论】:
我不知道为什么这被否决了,它对我来说效果很好。 @MichaelHoffmann 我将我的博客直接提到了答案,然后我被告知你不能这样做,只能在这里写下答案,然后如果我想链接我的博客。所以我这样做了,但我为我之前的行为挑衅地面临了后果:p【参考方案2】:这里是python工具将pcap分成流并将提取的特征输出到CSV文件中
尝试在python中使用flows_to_weka工具
这需要在您的系统中安装一个 scapy 版本,并且最好将 scapy 文件夹复制到 weka 文件夹中。并复制 scapy 文件夹中的 wfe.py、tcp_stream.py 和 entropy.py 文件。完成此操作后 你的当前目录应该是这样的:
C:\Users\INKAKA\flows_to_weka\scapy
并将 .pcap 文件复制到此文件夹并尝试运行此命令:
$python wfe.py -i input.pcap -t csv > output.csv
您还可以通过在 tcp_stream.py 和 wfe.py 中添加所需的功能来检索您想要的功能。
作为参考,您可以访问: https://github.com/fichtner/flows_to_weka
【讨论】:
【参考方案3】:我们可以设置逗号以外的字段分隔符吗? 因为在我的 PCap 文件中,如果我设置了 separator=,那么我在输出文件 (.csv) 中的数据看起来不太好,因为我的大多数列中都有 ,。
所以我想知道有什么方法可以像其他字符一样设置字段分隔符,即 | (点)等
谢谢
【讨论】:
【参考方案4】:您可以从 Wireshark 应用程序本身执行此操作:
确保您已将文件保存到磁盘 (File>Save
)(如果您刚刚
完成捕获)
转至File>Export Packet Dissesctions>as "CSV" [etc]
然后输入文件名(确保在末尾添加 .csv,因为 WS 没有
这样做!)
瞧
【讨论】:
【参考方案5】:别再看了,wireshark 是你最好的朋友。它可以打开您的 pcap 文件并允许您指定所需的额外列。在此之后,您可以简单地将它们导出为 csv。在主界面上,只需在任何一列上右键,然后选择“列首选项”。这将打开一个非常直观的新窗口。只需添加一个新列并指定字段名称。就如此容易。
我曾尝试过 tshark,但相信我,它变得有点烦人,尤其是这样:
tshark:读取过滤器是用“-R”和附加的命令行参数指定的。”
如果您包含太多列或出于任何未知原因,则会弹出此消息。
【讨论】:
【参考方案6】:看起来你想要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
【讨论】:
【参考方案7】: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【讨论】:
【参考方案8】:如问题的 cmets 中所述,要以 csv 格式输出捕获文件中帧的 IP 地址,请使用以下内容:
tshark -r <filename> -t fields -e ip.addr
有关在 csv 输出中设置分隔符和引号字符的选项的更多信息,请参阅 tshark 帮助。
可以通过使用 Wireshark 检查捕获文件并在详细信息窗格中选择特定字段来确定字段名称。然后字段名称将显示在 Wireshark 窗口底部的状态行中。
【讨论】:
以上是关于将 pcap 数据导出到 csv:时间戳、字节、上行链路/下行链路、额外信息 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Pcap.Net 数据包类对象导出到 .pcap 文件
如何将远程机器上实时运行的tcpdump结果导出到我电脑上的pcap文件中?