将 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&gt;Save)(如果您刚刚 完成捕获) 转至File&gt;Export Packet Dissesctions&gt;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 转换为 csv

如何将 Pcap.Net 数据包类对象导出到 .pcap 文件

如何将使用PySerial收集的串行数据导出到csv文件?

如何将远程机器上实时运行的tcpdump结果导出到我电脑上的pcap文件中?

使用适当的变量类型将 CSV 文件从 redshift 导出到本地

从PCAP文件中提取时间并另存为CSV文件