Scapy Framework - Modbus-Protokoll Implementation

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

Scapy Framework - Modbus-Protokoll Implementation

Beitragvon arakus221 » 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?


  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sys
  5. from scapy.all import *
  6.  
  7. #Modbus TCP Package
  8. class Modbus_TCP(Packet):
  9.     name = "Modbus/TCP"
  10.     fields_desc = [
  11.                             ShortField("Transaction Identifier", 9),
  12.                             ShortField("Protocol Identifier", 0),
  13.                             ShortField("Length", 13),
  14.                             XByteField("Unit Identifier",247),
  15.                     ]
  16.                    
  17. #Funktion zur Implementierung von FC 103, siehe WS-Mitschnitt
  18. class Modbus_FC103(Packet):
  19.     name = "Modbus"
  20.     fields_desc = [
  21.                             ShortField("Function Code: Unknown (103)", 103)
  22.                          #   ShortField("DATA:", ff030002040000000087b2)
  23.             #Implementierung unklar
  24.     ]
  25.  
  26.  
  27. def paket_senden():
  28.    # sr(IP(dst="192.168.0.7", ttl=64)/TCP(sport=1500,dport=502)/Modbus_TCP()/Modbus_FC103())
  29.     sr(IP(dst="192.168.0.7", ttl=64)/TCP(sport=1500,dport=502)/Modbus_TCP()/"tt")
  30.  
  31. paket_senden()


Vielen Dank schonmal im Voraus!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder