Wireshark Plugin für S7-Protokoll

Zuviel Werbung?
-> Hier kostenlos registrieren
Tolle Sache! Ich habe auf der Arbeit allerdings nur Ethereal.. morgen mal gucken obs damit auch geht..

Mal grundsätzlichen Fragen:
Wenn ich alles richtig verstehe nutzen Programme wie z.B. Libnodave ein geheimes Siemens Protokoll? Ich dachte den Aufbau ISO on TCP (RFC 1006) Telegrammen kann man offen nachlesen? Ich vertehe das nicht so ganz...

Also wie läuft die Kommunikation zw. Libnodave und SPS genau ab? Ist das ähnlich wie TCPIP über Handshake usw?

Selbstverständlich ist RFC1006 offengelegt. Dies ist aber nur die Verpackung. Viel wichtiger ist der Inhalt. Und der ist nicht offengelegt.

Die Kommunikation läuft über TCP/IP und verwendet zusätzlich RFC 1006. Einfach nach der Spec googeln.
 
Tolle Sache! Ich habe auf der Arbeit allerdings nur Ethereal.. morgen mal gucken obs damit auch geht..

Warum denn nicht gleich auf Wireshark updaten? Ich weiß nicht ob das Plugin mit der alten Ethereal-Version kompatibel ist.

Ich habe mal eine kleine Dokumentation zum Plugin angehängt, bei der du am Ende auch ein paar Weblinks zu den verschiedenen Protokollen findest.
 

Anhänge

  • Wireshark Plugin für S7-Kom.pdf
    128 KB · Aufrufe: 312
Zuviel Werbung?
-> Hier kostenlos registrieren
ja sauber, damit kann ich was anfangen! Das heisst also Libnodave kennt diesen Telegrammaufbau und kann so in die SPS schreiben/lesen, richtig? Leider wird das ja in der dll stehen, gibt es sowas offen programmiert? Am liebsten in Visual Basic oder php;)
 
Beispiele aus Doku

Hey Thomas,

super Sache das Plugin. Kurze Frage: In der Doku hast du ein par Beispieldateien angegeben. Allerdings weis ich nicht wo man die runterladen kann. Könntest du sie bitte noch reinstellen, bzw den Link schicken.

Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Thomas,

super Sache das Plugin. Kurze Frage: In der Doku hast du ein par Beispieldateien angegeben. Allerdings weis ich nicht wo man die runterladen kann. Könntest du sie bitte noch reinstellen, bzw den Link schicken.

Hallo,
eigentlich ist das meine interne Dokumentation die ich dazu geschrieben habe.
Ich habe aber mal das komplette Paket inklusive html-Dateien, Beispiel-Aufzeichnungen etc. angehängt.

Wär natürlich schön wenn es Rückmeldungen bezüglich Fehlern, falschen Bezeichungen, Verbesserungen an der Darstellung etc. gäbe. Ich arbeite ja auch nicht bei Siemens ;-)
Mit den Aufzeichnungen von der S7-1200 passt die Struktur zumindest nicht so recht zusammen, auch wenn der Grundaufbau der Telegramme gleich zu sein scheint.

Thomas
 

Anhänge

  • wireshark-s7comm-html_dok-2010-03-01.zip
    101,5 KB · Aufrufe: 222
wofür ist diese Kommunikation von Siemens denn eingentlich gedacht? Ihr redet immer von S7 Kommunikation, aber damit ist doch eigentlich die Kommunikation zw. 2 SPSen gemeint die man im NetPro verbindet, oder?
 
wofür ist diese Kommunikation von Siemens denn eingentlich gedacht? Ihr redet immer von S7 Kommunikation, aber damit ist doch eigentlich die Kommunikation zw. 2 SPSen gemeint die man im NetPro verbindet, oder?

Wir reden hier unter anderem von der Kommunikation eines Programms auf einem PC mit der S7 SPS von Siemens. Step 7 z.B. kommuniziert auch über das S7-Protokoll.

Bei Ethernet sind die oberen Protokolle z.B.

..
TCP/IP
-> ISO on TCP
-> S7 Protokoll
..

Dank dem super Plugin :) ist es jetzt möglich mittels WireShark diese Kommunikation zu analysieren.
Die Open Source Bib Libnodava implementiert das S7 Protokoll.

Natürlich kann man damit auch die Kommunikation zwischen 2 SPS analysieren, wenn man mithört ;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum muss ich dafür keine Verbindung in NetPro einrichten? Zählt die Verbindung über Libnodave zu den "normalen" verbindungen oder zählt die als PG/OP verbindung?
 
Wireshark stürzt mit S7-Plugin ab

Hallo zusammen,

ich hab heute versucht das S7-Plugin unter der Wireshark Development Version 1.3.2 (Windows XP) zu installieren. Sobald die S7Comm-Dll (Version von 20.01.2010) im Plugin Verzeichnis liegt, stürzt Wireshark beim Programmstart mit einer Schutzverletzung ab. Gibt's da sonst noch was zu beachten ?

Gruß
Dieter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich hab heute versucht das S7-Plugin unter der Wireshark Development Version 1.3.2 (Windows XP) zu installieren. Sobald die S7Comm-Dll (Version von 20.01.2010) im Plugin Verzeichnis liegt, stürzt Wireshark beim Programmstart mit einer Schutzverletzung ab. Gibt's da sonst noch was zu beachten ?

Hallo,
ich glaube die Development-Version von Wireshark wird nicht mehr mit den VC6 Compiler gebaut. Zumindest kommt die Fehlermeldung von der C++ Runtime Library, darum schätze ich dass die Development Version mit einer neueren Version des VS gebaut wurde.
Meine erste Version habe ich auch mit dem VC2008 übersetzt, da ließ sich das aber nicht ohne Installation des Redistributable Package benutzen (siehe erste Seite dieses Threads).

Lange Rede kurzer Sinn:
Solange die Version 1.2.x das offizielle Release ist, bitte diese Version in Verbindung mit der s7comm.dll verwenden.

Wenn unbedingt die Entwicklungsversion von Wireshark verwendet werden soll, muss das Plugin selber übersetzt werden. Quellcode liegt ja bei.
Wenn es mit einem offiziellen Wireshark-Release nicht zusammenspielen sollte, werde ich nochmal sehen ob ich das mit einem aktuellen VS übersetze.
 
Malformed Package

Guten Tag
Ich habe Ihr S7 Plugin für Wireshark getestet.
Der TEstaufbau ist eine Kommunikation zwischen einer S7300 und einem WinCC 7.0.
ICh schreibe und lese (testhalber) aus Merkern und DBs.
Die Write Pakete können durch ihr Plugin einwandfrei interpretiert werden.
jedoch die Zyklischen Lesepakete, die von der S7 nach WinCC haben die Form:
207 4.834325 10.64.80.60 10.64.1.63 S7COMM 102 > 1679 PDU-Type:[Userdata] Function:[Follow ?] ->:[Cyclic data] ->:[Memory][Malformed Packet]

(rot markierter S7comn-Bereich)

gibt es eine Möglichkeit auch diese Pakete zu interpretieren.

(Verwendete Wireshark version: Version 1.2.7)

Vielen Dank für die Hilfe
Gruß
 
Hallo,
wie kann man bei WinCC denn solche Pakete erzeugen?

Ich habe diese Pakete bisher nur bei den Meldevariablen (also die eine Störung erzeugen) in WinCC flexible entdecken können.
Kannst du mal eine kurze Anleitung geben wie man das in WinCC anlegt? Dann gucke ich mal ob ich rausfinden kann wie das funktioniert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank dür die schnelle Antwort
Solche Pakete entstehen, dadurch, dass wenn Variablenwerte z.B. in einem EA Feld nach einem eingestellten Zyklus aktualisiert werden (z.B. alle 1s).
jedoch kommt das gepostete Paket ja von der S7 (10.64.80.60).
Wie der genaue Datenverkehr bei einem Lesevorgang von WnCC funktioniert kann ich dir leider nicht genau sagen.

Gruß
 
So, ich habe mir das nochmal angesehen. Es gibt im Protokoll verschiedene Angaben für die "Transport size", also z.b. Bit, Byte, Word, etc., und die Längenangabe muss man dann auf diese größe umrechnen.
Als ich diese zyklischen Dienste bei WinCC flex zum ersten mal gesehen habe, hat die Steuerung mit der ich damals getestet habe sich etwas seltsam verhalten, sodass ich da eine Ausnahme reinprogrammiert habe.

Ich habe das aber eben nochmal mit WinCC und WinCCflex an einer anderen Steuerung probiert, und da ist diese Ausnahme nicht mehr notwendig. So ist das Ganze auch wenigstens etwas konsistenter.

Im Anhang die geänderte s7comm.dll

Edit: Abmelden der zyklischen Dienste im Plugin ergänzt.
 
Zuletzt bearbeitet:
Vielen Dank für die Hilfe
Ich hätte nur noch eine Frage:
Ich sehe jetzt alle Zusammenhängende Datenbereiche, die in einem
Zyklus aktualisiert werden, und kann deren Werte bei einem einfachem
Beispiel nachvollziehen, jedoch nicht, auf welchen Datenbereich (in der S7) bzw. auf welche Variablen(im WinCC) sich dieser Datenblock bezieht. gibt es da noch ne Möglichkeit das aus einem Datenpaket herauszulesen????

Aber nochmal vielen Dank bisher :TOOL:
Gruß
 
Wie Rainer schon schrieb geht das aus einem einzelnen Antwortpaket nicht mehr.

Soweit ich das sehe läuft die zyklsche Kommunikation folgendermaßen:
  1. Client stellt eine Anfrage an die SPS mit dem gewünschten Datenbereich und der gewünschten Aktualisierungsrate
  2. Client schickt daraufhin ein Response mit den Daten (soweit verfügbar). Im Parameter-Teil steht dann in der ersten Antwort eine eindeutige Nummer (von mir im Plugin "Sequence Number" genannt)
  3. Die SPS schickt im angeforderten Intervall selbständig die Daten ohne weitere Anfrage vom Client. Der Client bestimmt die Zugehörigkeit der Daten über die "Sequence Number" die er in der ersten Antwort erhalten hat
  4. Abmelden des Clients: Der Client schickt eine Anfrage an die SPS um sich abzumelden. Im Daten-Teil steht 0x01 und die "Sequence Number" des Bereiches den er abmelden möchte.
 
Im Laufe der Zeit habe ich noch ein paar kleine Fehlerbereinigungen beim Plugin gemacht. Neue Funktionen sind nicht hinzugekommen.

Allerdings bin ich am Überlegen die SZL Aufschlüsselung rauszuschmeißen, da solche Telegramme über mehrere Pakete gehen können, und ich sowas nicht wieder zusammenfügen kann. Mal sehn.
 

Anhänge

  • s7comm-dll-2010-09-15.zip
    12,8 KB · Aufrufe: 98
Zurück
Oben