无法将ICMP响应写入excel中。

问题描述 投票:0回答:1

我想把收到的ICMP查询响应写到excel表格中,以下是示例代码。

from scapy.layers.inet import *
a1= IP(dst="192.168.1.1")/ICMP()
a = sr1(IP(dst="192.168.1.1")/ICMP(), iface="Wireless Network Connection", timeout=10)
b = a.summary()

# Create file workbook and worksheet
outworkbook = xlsxwriter.Workbook('output.xlsx')
outsheet = outworkbook.add_worksheet()

# writing headers
outsheet.write("A1", "Requests")
outsheet.write("B1", "Response")

 # writing data
 outsheet.write("A2", a1)
 outsheet.write("B2", b)

创建的excel只有头,没有写响应值,我也试了一些其他的东西,但是到目前为止没有任何效果。

python-3.x network-programming scapy
1个回答
2
投票

遇到的问题

你有5个问题,我可以看到。

  1. 你没有导入 xlsxwriter. 这对于成为一个 MCVE.
  2. 最后 2 次写入的内容缩进了一个空格 (Python 关心这个)。
  3. 你没有关闭工作簿,所以文件没有被保存。
  4. Vars a, a1b 应更多地描述(本回答 证明了为什么)
  5. 您建立了一个名为a1的数据包(重命名为 ping),然后在下一行再建立它。

解决办法

修正后的代码是这样的。

import xlsxwriter
from scapy.layers.inet import *

# My firewall is at 192.168.1.254 so use that address; en0 is my interface
ping_packet = IP(dst="192.168.1.254")/ICMP()
answer = sr1(ping_packet, iface="en0", timeout=10)
ping_summary = answer.summary()

# Create file workbook and worksheet
outworkbook = xlsxwriter.Workbook('output.xlsx')
outsheet = outworkbook.add_worksheet()

# writing headers
outsheet.write("A1", "Requests")
outsheet.write("B1", "Response")

# writing data
outsheet.write("A2", a1)
outsheet.write("B2", b)

# close file
outworkbook.close()

验证

在Libreoffice中打开这个,我们看到它已经被保存下来了。Libreoffice Spreadsheet

© www.soinside.com 2019 - 2024. All rights reserved.