Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 22 von 27 ErsteErste ... 122021222324 ... LetzteLetzte
Ergebnis 211 bis 220 von 262

Thema: Wireshark Plugin für S7-Protokoll

  1. #211
    Registriert seit
    21.10.2014
    Beiträge
    9
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von juergi Beitrag anzeigen
    Die 0x72 braucht man nicht zu Escapen, da im Header bereits die Länge bis zum Trailer steht. Somit ist klar, dass jeder Wert 0x72 innerhalb dieser Länge zur Payload gehört.
    Evtl. ist der "Trailer" als zukünftige Erweiterung gedacht, um direkt an ein Telegramm ein weiteres Anhängen zu können.

    Gruß
    Jürgi
    Oh, das ist ein verdammt guter Ansatz! Vielleicht wollten die das tatsächlich damit bezwecken. Das wäre nämlich dann auch konsistent mit der aktuelen 0x0000 im length field des Trailers.

    @Jochen: Vielen lieben Dank für dein Angebot. Ich hab bisher noch keine Erfahrung mit dem Programmieren der S7er. Mir mangelt es auch an nötiger (vermutlich teurer...) Software dafür... Aber danke für das tolle Angebot. Ich komm auf dich zurück, sollte es mich weiterbringen!

    @Thomas: Doch genau das meine ich, ich hab Write Requests, die z.B. falsch interpretiert werden. Bin gerade noch am herausfinden, woran das liegt.

    Viele Grüße

  2. #212
    Registriert seit
    21.10.2014
    Beiträge
    9
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    @juergi: Oh, das ist eine verdammt gute Idee! Vielleicht wollten die das tatsächlich damit bezwecken. Das wäre nämlich dann auch konsistent mit der aktuellen 0x0000 im length field des Trailers, und würde diese Zahl auch erklären.

    @Jochen: Vielen lieben Dank für dein Angebot. Ich hab bisher noch keine Erfahrung mit dem Programmieren der S7er. Mir mangelt es auch an nötiger (vermutlich teurer...) Software dafür... Aber danke für das tolle Angebot. Ich komm auf dich zurück, sollte es die Entwirrung des Protokolls weiterbringen!

    @Thomas: Doch genau das meine ich, ich hab Write Requests, die z.B. falsch interpretiert werden. Bin gerade noch am herausfinden, woran das liegt.

    Viele Grüße

  3. #213
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.077
    Danke
    128
    Erhielt 1.477 Danke für 1.088 Beiträge

    Standard

    Ich habe eine neue Erkenntnis zur Session-Id. Diese muss nicht anhand des Wertes der von der SPS zurückkommt berechnet werden (+ 0x380), sondern kommt direkt aus der SPS zurück. Nur im Format varuint32, also als Wert mit variabler Länge. In den folgenden Telegrammen wird die Id dann als Wert mit 32 Bit fixer Länge verwendet. Die verschiedenen Datentypen machen die Erkennung natürlich schwer nur durch ansehen der Werte erkennbar. Zumindest fallen damit auch zwei unbekannte Bytes raus.

    Eine Session wird ebenfalls aufgebaut um diverse andere Dienste zu nutzen, wie zyklische Variablendienste, die Abfrage des Baugruppenzustands, und auch der Bausteinupload scheint über eine Session eingeleitet zu werden.
    Bei Sitzungsaufbau sieht es auch so aus, als ob angegeben werden kann wie lange diese gültig ist. Bei den Variablendiensten konnte ich die zugehörige ID schon lokalisieren, genauso wie auch die ID um das Aktualisierungsintervall festzustellen.

    Ganz verkehrt scheint die Interpretation zumindest nicht zu sein.

  4. #214
    Registriert seit
    21.10.2014
    Beiträge
    9
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ohje, mit der Session ID hast du vollkommen Recht, hatte da wohl auch Tomaten auf den Augen...

    Ich hab gesehen, dass du am WE auch an den cyclic packets weiter gemacht hast.
    Bist du dir bei der Cyclic Session ID sicher, dass sich die immer über 4 Byte erstreckt?

    Dieses Feld ist ja an und für sich bei anderen Funktionen (z.B. Data Req/Res, StartConn Req/Res) auch vorhanden, und da ist es immer 0x0000.

    Wie ich oben schon mal erwähnt hab, glaub ich, dass es nicht Teil der Session ID ist, sondern eher eine Art Bitmaske (Ich konnte in dem Feld 0x1000 und 0x7000 beobachten, daher meine Vermutung auf ne Bitmaske).

    Eventuell könnte man sogar Pakete immer konsequent in vier statt in drei Teile aufteilen:

    Header -> Data Header -> Data -> Trailer

    Über alle Pakete ist der Data Header im Prinzip immer der gleiche (Type of Data, Funktionsnummer (bzw. Cyclic Reference), bisschen was unbekanntes, Sequence Number).
    Der Data Header bestimmt quasi, um welchen expliziten Typen es sich bei Data handelt.

    Viele Grüße

  5. #215
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.077
    Danke
    128
    Erhielt 1.477 Danke für 1.088 Beiträge

    Standard

    Zitat Zitat von foo Beitrag anzeigen
    Bist du dir bei der Cyclic Session ID sicher, dass sich die immer über 4 Byte erstreckt?
    Ja. Weil die Id bei den zyklischen Daten glücklicherweise einen Wert hat der alle 32 Bit benötigt, wie 0x1000006a. Und die Id kommt bei Start-Session von der SPS zurück, und wird auch beim Beenden der Session so verwendet. Darum bin ich überhaupt drauf gekommen dass es varuint32 ist, denn so eine Zahl hat in diesem Format verdächtig viele 8en in den Bytes

    Zitat Zitat von foo Beitrag anzeigen
    Wie ich oben schon mal erwähnt hab, glaub ich, dass es nicht Teil der Session ID ist, sondern eher eine Art Bitmaske (Ich konnte in dem Feld 0x1000 und 0x7000 beobachten, daher meine Vermutung auf ne Bitmaske).

    Eventuell könnte man sogar Pakete immer konsequent in vier statt in drei Teile aufteilen:

    Header -> Data Header -> Data -> Trailer

    Über alle Pakete ist der Data Header im Prinzip immer der gleiche (Type of Data, Funktionsnummer (bzw. Cyclic Reference), bisschen was unbekanntes, Sequence Number).
    Der Data Header bestimmt quasi, um welchen expliziten Typen es sich bei Data handelt.
    Ich habe schon einiges vereinheitlichen können. Bei dem was ich am WE gemacht habe, ist die Anzahl der Zeilen zumindest weniger geworden.
    Es fallen nur die Telegramme mit den zyklischen Daten aus dem Rahmen. Ich glaube nicht dass sich die in das andere Schema pressen lassen, dazu sieht es mit der Referenz-Id an der Stelle zu gut aus.

    Die Angabe einer Variablenadresse bei den zyklischen Daten unterscheidet sich auch von dem Format, welches bei einem 'normalen' Zugriff verwendet wird. Sieht mir so aus als ob das verschiedene Abteilungen bearbeitet haben, und jeder den Teil so gestalten kann wie es ihm gerade gefällt.

  6. #216
    Registriert seit
    21.10.2014
    Beiträge
    9
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hihi,

    aah, jetzt seh ich das gerade auch mit der Cyclic Reference, dass die auch bei Antworten genau so wiedergegeben wird, du hast recht...
    Ach verdammt, dann muss ich meine Idee mit dem gemeinsamen Data Header wieder verwerfen.

    Hmm, jetzt wissen wir also, dass das UNKNOWN1 Field bei Cyclic Daten zu der Cyclic Reference gehört.
    Wir wissen auch, dass UNKNOWN1 bei nicht zyklischen Daten IMMER 0x0000 ist. Zumindestens hab ich noch nie was anderes gesehen.

    Vielleicht lässt sich ja fest halten, dass es bei nicht zyklischen Daten einfach nur ein Reserved field ist, mit dem etwas rumgepadded wird, damit der (ich nenns jetzt einfach mal so) "Data Header" bei zyklischen genauso groß ist wie bei nicht zyklischen Daten.

    VG

  7. #217
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.077
    Danke
    128
    Erhielt 1.477 Danke für 1.088 Beiträge

    Standard

    Das mit den zyklischen Daten müsste eigentlich noch eine andere Bezeichnung bekommen, mir ist dafür nur noch nichts besseres eingefallen.

    Nach Aufbau einer Session ist es möglich, dass sich die Teilnehmer Daten ohne Quittungstelegramme zuschicken. Das wird benutzt bei den zyklischen Variablendiensten eines HMIs, oder auch wenn der Baugruppenzustand beobachtet wird.
    Beim Bausteinupload kann das PG in Folge dieser Session mehrere PDUs mit dem Bausteindaten ohne Quittung (auf S7commp Ebene) an die SPS schicken.

    Da muss ich mal vergleichen, ob diese Telegramme an der von dir erwähnten Stelle auch immer die gleichen Werte haben, und ob das bei einer 1500 auch so ist.

  8. #218
    Registriert seit
    21.10.2014
    Beiträge
    9
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Huhu,

    nochmal zurück zu dem "Integritätsteil" bei den 1500er. Das hab ich heut gefunden:

    http://de.slideshare.net/AlexanderTi...for-pentesters
    http://de.slideshare.net/AlexanderTi...ity-mechanisms
    https://github.com/atimorin/scada-tools

    Der Kerl hat scheinbar rausgefunden, dass es sich bei der Authentifizierung (ich nehme an, das ist ein Teil der Kommunikation, welcher sich unter den ersten paar Paketen befinden muss) um ein Challenge Response System handelt, mit HMAC und SHA1 als Prüfsummenalgo.
    Es liegt also nahe, dass auch für den Rest SHA1 verwendet wurde. (Warum sollte man zig verschiedene Prüfsummenverfahren implementieren)
    SHA1 hat als Output 160 Bit, sprich 20 Byte. Wir haben aber 32 Byte Integritätspart am Ende. Stellt sich die Frage, wofür der Rest verwendet werden könnte.

    Ich hab meine Captures mal durchgekuckt, solche Authentication Pakete, von denen er spricht aber nicht gefunden.
    Hat jemand von euch vielleicht solche Caps?

    VG

  9. #219
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.077
    Danke
    128
    Erhielt 1.477 Danke für 1.088 Beiträge

    Standard

    Was in dem Dokument beschrieben wird, geht von einer 1200er aus. Bei einer 1200 (zumindest mit meinem FW-Stand) ist der Passwortschutz nur für PG-Funktionen relevant. HMI-Kommunikation ist immer möglich.
    Ich habe mal bei meiner 1200er ein Passwort gesetzt und einen Baustein hochgeladen (siehe Anhang).
    Das im Dokument beschriebene "7202000f32" findet man auch wieder. Die Erkennung anhand dieses Wertes ist natürlich nur zufällig richtig, weil es nur die Längenangaben des Datenteile abfragt.

    Zumindest weiß ich jetzt, dass die Funktion "0x04f2" nicht "Modify cyclic", sondern "Modify session" heißen sollte, weil damit wohl ganz allgemein der Zustand einer Session bearbeitet werden kann.

    Ob das was mit dem Anhängsel der 1500er bei der HMI-Kommunikation gemein hat weiß ich nicht, da ich bei den 1500er Logfiles die mir vorliegen nicht weiß ob dort eine und welche Schutzstufe / Login verwendet wurde.
    Angehängte Dateien Angehängte Dateien

  10. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    foo (03.11.2014)

  11. #220
    Registriert seit
    21.10.2014
    Beiträge
    9
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ah cool super, danke dir!

    Deine Challenge/Response ist:
    e8c952612362b63222c725c400c6b6c47b6204e5 // 5501bdf9a628dc618f00f9e48836ae8e8313d3be

    Und dein Passwort lautete test

    Danke für die Pakete!

Ähnliche Themen

  1. Wireshark Auszüge von Onlinebeobachtungen
    Von Jochen Kühner im Forum Simatic
    Antworten: 40
    Letzter Beitrag: 25.01.2011, 15:44
  2. Wireshark 1.2.0 ohne AMS.ADS?
    Von Neals im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 08.07.2009, 21:29
  3. Wireshark als Sender
    Von Tapio Bearking im Forum PC- und Netzwerktechnik
    Antworten: 2
    Letzter Beitrag: 08.07.2008, 11:47
  4. AK- Protokoll
    Von borromeus im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 27.02.2007, 17:30
  5. S7-Protokoll 2
    Von Zapot im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 21.08.2006, 09:37

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •