Wireshark Plugin für S7-Protokoll

Zuviel Werbung?
-> Hier kostenlos registrieren
Man sollte ja nicht mit was neuem anfangen wenn das alte noch nicht fertig ist, aber ich war grad neugierig :)

Ich habe in das Plugin auf die Schnelle eine Weiche eingebaut damit die symbolischen Adressangaben der 1200 zumindest grundsätzlich aufgeschlüsselt werden.
Der Telegrammaufbau bei der Kommunikation der 1200 mit dem integrierten TIA HMI ist grundsätzlich identisch einer 300/400er Steuerung (Kopf-, Parameter- und Datenteil). Nur die Variablenspezifikation ist eben anders.
Die magische Zahl die dem SPS-Symbol zugeordnet scheint auf jeden Fall 12 Byte lang zu sein.

Hat sich das schonmal jemand näher angesehen ob man aus der Zahl an sich noch weitere Informationen extrahieren kann? Und gibt es schon einen Mitschnitt der Kommunikation mit der neuen 1500er?

Anhang anzeigen 19579
Kannst du denn mal das Projekt mit welchem du diesen Ausug erstellt hast zur Verfügung stellen? Mich würd mal Interessieren ob ich es schaffe diesen Code für die Variablen aus dem Projektfile zu extrahieren!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe nur einen "optimierten" DB angelegt in dem Variablen verschiedenen Datentyps liegen, und ein Merkerwort als Integer und ein Merkerdoppelwort als Real. Es wird auch auf die Merker symbolisch zugegriffen.

Einen Teil im Protokoll konnte ich schonmal zuordnen. In der Projekt plf gibt es zu jeder Variable eine LID, und dieser Wert entspricht schonmal den letzten 2 Bytes in der 12-Byte Anfrage - zumindest bei Variablen aus einem DB. Ob und wie die RID da hineinverwurstet wird habe ich noch nicht herausgefunden.
 
Hier mal eine Tabelle:
Code:
	Member ID	RID	Type	Version	LID	S7Proto
intVar1	 51	0x02000005	Int	2	10	8a0e 0001 2413 4d05 4000 000a

intVar2	 52	0x02000005	Int		11	8a0e 0001 cd4a bb23 4000 000b

dintVar1 53	0x02000007	Dint	2	13	8a0e 0001 11c2 1437 4000 000d

dwordVar1 54	0x02000006	Dword	2	15	8a0e 0001 9544 bf6e 4000 000f

realVal	 55	0x02000008	Real	2	17	8a0e 0001 a796 82be 4000 0011

MW100							0000 0052 cc45 a2c8 4000 0009
MW100int
MD160							0000 0052 a767 ab4f 4000 000c
MD160real
Die LID und RID stehen in einer Art XML-Datei die sich in der Projektdatei verbirgt.
Zur Zeit mach ich das mittels meditieren über einem Hex-Editor, das ist nicht sonderlich effektiv ;-)
 
Könnte ja sein, das die mittleren 4 bytes der crc sind welcher in dem Patent beschrieben ist? Die ersten 4 Bytes Speicherbereich? Oder etwas in die Richtung und die letzten 4 Bytes die laufende ID... Sind aber alles nur Ideen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die letzten 4 Bytes sind auf jeden Fall diese LID. In das Nibble dieser 4 Bytes ganz links werden noch irgendwelche Statusbits gespeichert, vielleicht für Arrays oder sowas. Für "flache" Variablen ist dort wohl immer eine 4.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das nicht ein heißes Eisen?

Ich mach mir auch schon so meine Gedanken...
Aber ich hoffe mal herauszufinden wie etwas funktioniert ist noch erlaubt. Was anderes wird es sein das Patent wirklich anzuwenden.
Und um den CRC zu berechnen muss einem so wie es scheint das komplette SPS Projekt vorliegen.

Was nur blöd ist dass sich aus dem TIA Portal die magischen Nummern für die Symbole nicht exportieren lassen. Denn mit diesen Nummern ließe sich ja durchaus eine Visualisierung erstellen die von den Details im Patent garnichts wissen muss und trotzdem damit Daten aus der SPS lesen kann. Im HMI-Projekt des TIA Portal sind auch nur noch die kompletten Nummern hinterlegt.
 
Habe mal gesucht (ohne rechtliche Gewähr):
"Eine Patentverletzung ist gegeben, wenn eine durch ein Patent geschützte Technologie - ohne die Zustimmung des Patentinhabers - gewerblich hergestellt, angeboten, verkauft, gebraucht oder zu einem dieser Zwecke importiert oder auch nur besessen wird."
 
Da bin ich ja aus dem Schneider - ist ja nicht gewerblich. Zur Not mach ich eine Version die gewerbliche Zwecke ausschließt.

Aber Teile dieses Patents sind echt ein schlechter Witz:
"Verfahren zur Adressierung nach einem der vorangegangenen Ansprüche, mit einer Integerzahl als eindeutiger Kennwert (ID1) der Variablen (ANNA)."

Bestärkt mal wieder meine Einstellung gegenüber Softwarepatenten.
 
Naja, sich da mal ein paar Gedanken drum zu machen ist sicher nicht verkehrt. Die Siemens-Anwalts-Keule haben ja schon andere zu spüren bekommen.

Hab den grundlegenden Aufbau so ziemlich raus.
Syntax Id, 0xff, 2 Byte Bereichs-Identifier, 2 Byte DB Nummer, 4 Byte super-wichtig-patentierte-Spezialnummer, und dann pro Schachtelungstiefe 4 Byte mit 4 Bits Flags und rest super-wichtig-spezial-patentierte-Zahl-für-einen-Namen.

Hab mir grade einen Kaffee gekocht. 7 Löffel Pulver rein, glaub das lass ich mir mal schnell patentieren.
 
Es gibt ja immer noch dieses unsägliche FAT Patent von Microsoft. Wie das funktioniert ist natürlich schon seit Ewigkeiten dokumentiert.
Wenn man das prinzipiell auf diese Geschichte hier anwendet würde ich ja sagen, wir dürfen hier reinschreiben wie das Telegramm aufgebaut ist, aber ich darf es nicht in das Wireshark Plugin einbauen - oder wenn dann nur für den Eigengebrauch.

Verzwickte Sache. Kennt nicht jemand einen Anwalt der einem da Klarheit verschaffen könnte?
 
jetzt fehlt noch das 0x72 Protokoll und ein Profinet-Stack...

jetzt fehlt noch das 0x72 Protokoll: fuer Beobachtungstabellen Lesen/Schreiben

und ein kleiner Profinet-Stack: für so Blinken-Lassen, IP-Setzen, Gerät-Erkennen

dann sieht es ja schon ganz gut aus - mit der Hoffnung das die 1500er nicht wieder alles über Bord schmeisst
 
@Thomas:

Hats du denn auch was Rausgefunden wie das ganze begrenzt ist? Gibts bei der 1200er wieder eine maximale PDU Größe? Anfragen an verschachtelte Variablen in DBs werden durch diese Aneinanderreihung ja schon ziemlich lang...
 
Zurück
Oben