ich arbeite gerade an der Implementierung des Modbus-Protokolls unter Verwendung des Tools Scapy.
Dort habe ich auch die Möglichkeit gefunden, neue Protokolle zu definieren.
Ziel des ganzen ist das Absetzen des Functions-Codes 103 mit einer dazugehörigen Data-Value.
Ich möchte am Ende folgenden Output nachstellen (siehe WS-Mitschnitt):
https://www.hidrive.strato.com/lnk/ZMrh1VvJ
Der dazugehörige Code sieht momentan so aus. Leider komme ich mit der Dokumentation von Scapy nichtzurecht und komme nicht wirklich weiter. Hat jemand eventuell einen Ansatz wie es weiter gehen könnte?
Code: Alles auswählen
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from scapy.all import *
#Modbus TCP Package
class Modbus_TCP(Packet):
name = "Modbus/TCP"
fields_desc = [
ShortField("Transaction Identifier", 9),
ShortField("Protocol Identifier", 0),
ShortField("Length", 13),
XByteField("Unit Identifier",247),
]
#Funktion zur Implementierung von FC 103, siehe WS-Mitschnitt
class Modbus_FC103(Packet):
name = "Modbus"
fields_desc = [
ShortField("Function Code: Unknown (103)", 103)
# ShortField("DATA:", ff030002040000000087b2)
#Implementierung unklar
]
def paket_senden():
# sr(IP(dst="192.168.0.7", ttl=64)/TCP(sport=1500,dport=502)/Modbus_TCP()/Modbus_FC103())
sr(IP(dst="192.168.0.7", ttl=64)/TCP(sport=1500,dport=502)/Modbus_TCP()/"tt")
paket_senden()