使用 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