使用 Scapy 解析 pcap 文件中的 Modbus 数据包
Parsing Modbus packets in pcap file using Scapy
我是 Scapy 的新手。我正在尝试使用 scapy.contrib.modbus 解析 pcap 文件中的 Modbus 数据包。然而我很成功。我想至少根据库识别请求和响应数据包。
以下是 pcap 文件的 link:
https://github.com/tjcruz-dei/ICS_PCAPS/releases/download/MODBUSTCP%231/captures1.zip
下面是示例代码(顺便说一句不起作用):
from scapy.all import *
import scapy.contrib.modbus as mb
for pkt in PcapReader("captures1/clean/eth2dump-clean-0,5h_1.pcap"):
if pkt['TCP'].sport == 502:
pkt = mb.ModbusADUResponse(pkt)
print(type(pkt))
请提供帮助。谢谢。
代码其实比你想象的要简单得多:
import scapy.all as scapy
import scapy.contrib.modbus as mb
for pkt in scapy.PcapReader("eth2dump-clean-0,5h_1.pcap"):
if mb.ModbusADUResponse in pkt:
pkt.show()
让我们详细了解 why/how 它的工作原理。
scapy 在协议之间有一些关系来帮助解码。
在你的情况下:https://github.com/secdev/scapy/blob/master/scapy/contrib/modbus.py#L948
正在将 TCP.port 502 链接到 ModbusADUResponse
我是 Scapy 的新手。我正在尝试使用 scapy.contrib.modbus 解析 pcap 文件中的 Modbus 数据包。然而我很成功。我想至少根据库识别请求和响应数据包。 以下是 pcap 文件的 link:
https://github.com/tjcruz-dei/ICS_PCAPS/releases/download/MODBUSTCP%231/captures1.zip
下面是示例代码(顺便说一句不起作用):
from scapy.all import *
import scapy.contrib.modbus as mb
for pkt in PcapReader("captures1/clean/eth2dump-clean-0,5h_1.pcap"):
if pkt['TCP'].sport == 502:
pkt = mb.ModbusADUResponse(pkt)
print(type(pkt))
请提供帮助。谢谢。
代码其实比你想象的要简单得多:
import scapy.all as scapy
import scapy.contrib.modbus as mb
for pkt in scapy.PcapReader("eth2dump-clean-0,5h_1.pcap"):
if mb.ModbusADUResponse in pkt:
pkt.show()
让我们详细了解 why/how 它的工作原理。 scapy 在协议之间有一些关系来帮助解码。
在你的情况下:https://github.com/secdev/scapy/blob/master/scapy/contrib/modbus.py#L948 正在将 TCP.port 502 链接到 ModbusADUResponse