读取 Pcap 并将其写入 csv 文件 python
reading Pcap and writing it to csv file python
我正在读取 pcap 文件并尝试将其写入包含必要数据的 csv 文件。
我使用 Scapy 读取 Pcap 并且可以成功获取包数据,现在我正在尝试写入 csv 文件但最终只有一个数据。下面是我的代码。
pkts = rdpcap('example.pcap')
for pkt in pkts:
if IP in pkt:
ip_src=pkt[IP].src
ip_dst=pkt[IP].dst
if TCP in pkt:
tcp_dport=pkt[TCP].dport
if ip_src == '10.116.206.114' and ip_dst == '10.236.138.184':
print (str(ip_src) + str(ip_dst) + str(tcp_dport))
csv_header = "IP_src,IP_drc,dst_port\n"
s = ""
for scr in str(ip_src):
s+=str(scr)
csv_header += s + ','
s_ = ''
for dst in str(ip_dst) :
s_+=str(dst)
csv_header += s_ + ','
s_1 = ''
for dst_tcp in str(tcp_dport):
s_1 += str(dst_tcp)
csv_header += s_1
f = open("Pcap/test.csv", "w")
f.write(csv_header)
现在我在 csv 中只得到一个输出
如果我打印以检查所有输出都在日志中而不是在 csv 中,请建议我将数据附加到 csv 中的正确方法
谢谢!
正如@HampusLarsson 评论的那样,for 循环的每次迭代都会打开文件。您应该在循环之前打开文件。
这是固定码:
pkts = rdpcap('example.pcap')
with open("Pcap/test.csv", "w") as f:
for pkt in pkts:
if IP in pkt:
ip_src=pkt[IP].src
ip_dst=pkt[IP].dst
if TCP in pkt:
tcp_dport=pkt[TCP].dport
if ip_src == '10.116.206.114' and ip_dst == '10.236.138.184':
print (str(ip_src) + str(ip_dst) + str(tcp_dport))
csv_header = "IP_src,IP_drc,dst_port\n"
s = ""
for scr in str(ip_src):
s+=str(scr)
csv_header += s + ','
s_ = ''
for dst in str(ip_dst) :
s_+=str(dst)
csv_header += s_ + ','
s_1 = ''
for dst_tcp in str(tcp_dport):
s_1 += str(dst_tcp)
csv_header += s_1
f.write(csv_header)
请注意,我们使用的是上下文管理器 (with open(...) as ...:
),因此文件将在作用域结束时自动关闭,或者在出现异常时自动关闭。
我正在读取 pcap 文件并尝试将其写入包含必要数据的 csv 文件。 我使用 Scapy 读取 Pcap 并且可以成功获取包数据,现在我正在尝试写入 csv 文件但最终只有一个数据。下面是我的代码。
pkts = rdpcap('example.pcap')
for pkt in pkts:
if IP in pkt:
ip_src=pkt[IP].src
ip_dst=pkt[IP].dst
if TCP in pkt:
tcp_dport=pkt[TCP].dport
if ip_src == '10.116.206.114' and ip_dst == '10.236.138.184':
print (str(ip_src) + str(ip_dst) + str(tcp_dport))
csv_header = "IP_src,IP_drc,dst_port\n"
s = ""
for scr in str(ip_src):
s+=str(scr)
csv_header += s + ','
s_ = ''
for dst in str(ip_dst) :
s_+=str(dst)
csv_header += s_ + ','
s_1 = ''
for dst_tcp in str(tcp_dport):
s_1 += str(dst_tcp)
csv_header += s_1
f = open("Pcap/test.csv", "w")
f.write(csv_header)
现在我在 csv 中只得到一个输出
如果我打印以检查所有输出都在日志中而不是在 csv 中,请建议我将数据附加到 csv 中的正确方法
谢谢!
正如@HampusLarsson 评论的那样,for 循环的每次迭代都会打开文件。您应该在循环之前打开文件。 这是固定码:
pkts = rdpcap('example.pcap')
with open("Pcap/test.csv", "w") as f:
for pkt in pkts:
if IP in pkt:
ip_src=pkt[IP].src
ip_dst=pkt[IP].dst
if TCP in pkt:
tcp_dport=pkt[TCP].dport
if ip_src == '10.116.206.114' and ip_dst == '10.236.138.184':
print (str(ip_src) + str(ip_dst) + str(tcp_dport))
csv_header = "IP_src,IP_drc,dst_port\n"
s = ""
for scr in str(ip_src):
s+=str(scr)
csv_header += s + ','
s_ = ''
for dst in str(ip_dst) :
s_+=str(dst)
csv_header += s_ + ','
s_1 = ''
for dst_tcp in str(tcp_dport):
s_1 += str(dst_tcp)
csv_header += s_1
f.write(csv_header)
请注意,我们使用的是上下文管理器 (with open(...) as ...:
),因此文件将在作用域结束时自动关闭,或者在出现异常时自动关闭。