Scapy Framework - Modbus-Protokoll Implementation

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
arakus221
User
Beiträge: 1
Registriert: Freitag 18. August 2017, 13:18

Freitag 18. August 2017, 13:29

Hallo zusammen,

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()
Vielen Dank schonmal im Voraus!
Antworten