SPS Kopierschutz

Mike@Automation

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich mache mir schon seit einiger Zeit Gedanken darüber, wie man sein eigenes Programm, was man erstellt hat und dem Kunden übergeben hat, vor unerlaubten Kopieren schützen kann. Es kommt immer wieder vor daß Kunden eine 2. oder 3. Anlage bauen, und das Programm einfach da hinein kopieren und fertig. Insofern wird unser Know-How (das Programm) ohne unser Wissen mehrfach kopiert. Oder es wird einfach an Dritte weitergegeben und so weiter...
Das Problem: Die Kunden wollen meistens den Quellcode. Also mit Passwortschutz is da nichts zu machen das ist zu simpel.
Es müsste was sein, wo man eine Seriennummer oder sonstwas aus der Steuerung einliest und irgendwo im Programm an versteckter Stelle überprüft, und wenns die falsche CPU ist, eben auf stop gehen.
Oder gibt es vielleicht so etwas wie einen Hardlock (Dongel) den man an die MPI- oder DP-Schnittstelle stecken kann, so wie es bei PC-Programmen auch praktiziert wird?

Kennt da jemand eine Lösung?

Wie schütze ich mich vor Raubkopiererei?

Gruß
Mike
 
Moin,

wenn Du hier im SPS-Forum nach "protect" suchst, findest Du einige Beiträge dazu.

Das aktuelle Step7 bietet keinen brauchbaren Schutz, aber die nächste Version soll eine echte Verschlüsselung von Passwörtern unterstützten.

tcp
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

wenn Du hier im SPS-Forum nach "Know-how" suchst, findest Du einige Beiträge dazu.

Das aktuelle Step7 bietet keinen brauchbaren Schutz, aber die nächste Version soll eine echte Verschlüsselung von Passwörtern unterstützten.

tcp

Wenn der Quelltext geliefert wird, wie willst du dann schützen?
Es ist erstaunlich, dass immer wieder gedacht wird ein Programm sei so einmalig, dass es kopiergeschützt werden muss.
Das Wissen kann nur dann weiter gewinnbringend verwendet werden über den Support, der gut sein muss auch nach der Lieferung.

bike
 
Die MMC der S7-300 haben eine Seriennummer die man auslesen kann. So kann man das Programm an eine bestimmte MMC binden.
Wie kann ich die Seriennummer der MMC auslesen?

Dieser "Schutz" müßte aber sehr gut im Programm versteckt sein, damit ein anderer Programmierer den nicht sofort findet.
Alle Software/technischen Lösungen sind nur Hürden, die aber das unrechtmäßige Kopieren nicht wirksam verhindern können.

So wie Mäuseklavier halte ich nur eine vertragliche Regelung als geeigneten Schutz. Gleich mit Fixierung der Vertragsstrafen.

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ Mike@Automation
hallo mike,
bei vipa gibt es einen kopierschutz, bei dem du einzelne bausteine geschütz und dauerhaft in die cpu laden kannst. Diese bausteine können vom endkunden nicht ausgelesen werden, es sind nur die bausteinrümpfe sichtbar.
Wenn du da einige "ausgetestete" interne bausteine so geschützt ablegst, dann kann auch deine maschine keiner einfach so kopieren. Die geschützten bausteine sollten für eine effektive fehlersuche nicht notwendigerweise einsehbar sein müssen (blackbox). Ähnlich ist es ja auch mit klassisch geschützten bausteinen von siemens, wenn da ein schloß dran ist kann man ja auch nicht direkt rein schauen.
Natürlich solltest du nicht direkt den OB1 oder andere für die fehlersuche wichtige bausteine schützen, damit die akzeptanz beim kunden und bei seinen instandhaltern gegeben ist.

Techinsch funktioniert dies bei vipa wie folgt:

  1. Zu schützende bausteine in eine datei "protect.wld" ablegen und auf MMC kopieren.
  2. Diese mmc in de CPU stecken und urlöschen durchführen.
  3. Dadurch werden diese bausteine in das flash filesystem der CPUübernommen und damit zum festen bestandteil der CPU, ähnlich wie SFCs.
  4. Die bausteine sind zwar sichbar, aber nur als bausteinrump und mit einer länge von 0, bzw. headerlänge.
  5. Die bausteine können zwar ausgelsen werden, dabei wird aber nur der rumpf zum PG übertragen und kein code.
Aus meiner sicht ist dies ein ziemlich perfekter schutz.

Nachteil:
Wenn die CPU kaputt ist, dann kann der kunde keine normale CPU nehmen,
weil diese natürlich erst mit den protect bausteinen geladen werden müßte.

Lösung:
Kunde bekommt eine reserve CPU, die entsprechende "kern bausteine" bereis vom maschinenbauer eingepflanzt bekommt. Evtl. so dass diese CPU
für mehrere ähnliche anlagen verwendet werden kann.

mfG. klaly
 
Nachteil:
Wenn die CPU kaputt ist, dann kann der kunde keine normale CPU nehmen,
weil diese natürlich erst mit den protect bausteinen geladen werden müßte.

Lösung:
Kunde bekommt eine reserve CPU, die entsprechende "kern bausteine" bereis vom maschinenbauer eingepflanzt bekommt. Evtl. so dass diese CPU
für mehrere ähnliche anlagen verwendet werden kann.
Nachteil für den Kunden:

Geht der Zulieferer in Konkurs, kann ich auch meine Maschine wegwerfen.

Die Lebensdauer der Maschinen sind teilweise 20 oder mehr Jahre.
Geht der Zulieferer in Konkurs oder der Programmierer ist nicht mehr greifbar dann gibt es ein Problem.

Suche doch mal hier im Forum nach "Kennwort vegessen", "Kennwort rücksetzen", Programmierer nicht erreichbar, Maschine steht . . .

Für mich wäre das ein K.O.-Kriterium.

Ich arbeite in der Instandhaltung,
mussten schon mehrfach die Steuerung tauschen oder das PLC-Programm
neu schreiben.
Wegen Konkurs oder Unfähigkeit des Zulieferers.

Thema Quellcode:
Man merkt erst, was der Quellcode taugt, wenn man ihn selbst überträgt.
Die meisten verlassen sich darauf, dass es der "richtige" ist und nicht das
Übungsprogramm des Lehrlings *ROFL*


P.S: Das wir teilweise Sondermaschinen haben, sind unsere Machinen bis zu 50 Jahre alt. (Z.b. Hohnmaschine, mehrfach umgebaut/hochgerüstet, derzeit noch eine S5-95 im inneren des Schaltschranks)
 
Nachteil für den Kunden:

Geht der Zulieferer in Konkurs, kann ich auch meine Maschine wegwerfen.

Die Lebensdauer der Maschinen sind teilweise 20 oder mehr Jahre.
Geht der Zulieferer in Konkurs oder der Programmierer ist nicht mehr greifbar dann gibt es ein Problem.

Suche doch mal hier im Forum nach "Kennwort vegessen", "Kennwort rücksetzen", Programmierer nicht erreichbar, Maschine steht . . .

Für mich wäre das ein K.O.-Kriterium.

Ich arbeite in der Instandhaltung,
mussten schon mehrfach die Steuerung tauschen oder das PLC-Programm
neu schreiben.
Wegen Konkurs oder Unfähigkeit des Zulieferers.

Thema Quellcode:
Man merkt erst, was der Quellcode taugt, wenn man ihn selbst überträgt.
Die meisten verlassen sich darauf, dass es der "richtige" ist und nicht das
Übungsprogramm des Lehrlings *ROFL*


P.S: Das wir teilweise Sondermaschinen haben, sind unsere Machinen bis zu 50 Jahre alt. (Z.b. Hohnmaschine, mehrfach umgebaut/hochgerüstet, derzeit noch eine S5-95 im inneren des Schaltschranks)

Das Problem gibt es auch mit "normaler", für Kunden erstellter Software. Abhilfe schafft da nur die Hinterlegung der offenen Software inkl. Quellen bei einem Treuhänder (Anwalt, Notar etc.), der nach einem Konkurs oder auch bei anderen vereinbarten Ereignissen die Software an den Kunden herausgibt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
SPS kennwortschutz

Hallo Leute,
erst einmal Danke für die Antworten.

Die Problematik mit den Programmen für den Service etc. ist mir natürlich bestens bekannt. Und daß ein Programm so gut geschützt ist daß niemand den Sicherungscode findet ist natürlich auch utopie. Jeder halbwegs vernünftige Programmierer findet es früher oder später, das ist mir auch klar. Es kann die Sache nur verzögern, aber nicht verhindern.

Die Sache mit den Verträgen ist ja auch schön und gut, aber, will man einen Kunden dann knallhart vor Gericht zerren wenn er mal ein Programm kopiert hat? Ich halte da nichts davon. Genau das würde ich gerne im Vorfeld verhindern.

Tja, ich dachte mir schon daß niemand eine echte Lösung kennt, ich kenne ja auch keine.

Wäre doch mal eine Idee, einen Dongel zu entwickeln den ich auf die MPI Schnittstelle stecken kann, nur mit dem läuft die CPU. Das wäre doch mal ein echter Schutz. Wäre eine Aufgabe für Siemens.

So machen wir es auch mit unseren PC-Programmen und USB-Dongel, und das geht wunderbar. Ist natürlich eine andere Welt und nicht wirklich vergleichbar.

Gruß
Mike
 
Sag mal Mike,
macht ihr wirklich so ausgefalle Software, die ein findiger Programmierer
in entsprechender Zeit nicht auch erstellen kann oder sogar besser macht
als ihr :rolleyes:

Ist das wirklich so das eure Kunden die Maschine mal eben nachbauen,
wieviele machen das wirklich, habt ihr diese erfahrung gemacht?
Lohnt es sich den Kopf darüber zu zerbrechen oder macht es mehr sinn
diese Zeit, sinnvoll zu nutzen um die Maschine so Inovativ zu machen und
den Service so zu verbessern, das euer Kunde sagt ich kaufe nur noch da.

Wenn ich mich bemühe, währe ich bestimmt auch irgendwann in der Lage
mein Brot selber zu backen, aber ich kaufe trotzdem beim Bäcker.

gruß Helmut
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sag mal Mike,
macht ihr wirklich so ausgefalle Software, die ein findiger Programmierer
in entsprechender Zeit nicht auch erstellen kann oder sogar besser macht
als ihr :rolleyes:


Wenn es wirklich oberedele Softwarelösungen sind, nehmt ne
WinAC und macht euch einen Kunden-SDB. Der ist dann
sowas von sicher :ROFLMAO:

Frank
 
Also ich sehe da einen Unterschied zwischen Softwarelizensen und gekaufter Software. Ich kenne beide Seiten, die Seite der Maschinenbauer und die Seite der Instandhalter. Da ich von einer Firma die Schaltanlagen für Sondermaschinen gebaut hat gekommen bin und jetzt in einer Firma arbeite bei der ich damals für die alte Firma die Anlagen programmiert habe. Ich verbessere jetzt quasi meine eigenen Anlagen. Und musste in den ersten Monaten die von mir Programmierten Anlagen abnehmen.

Desshalb ist meine Meiung dazu klar: Wenn du Software verkaufst und damit meine ich, du wirst dafür bezahlt eine Anlage mit X Ausgänge und x Eingänge zu Programmieren. Brauchst dazu X Stunden und die werden dir bezahlt. Dan ist das Programm am Ende deiner Arbeit und nach der Bezahlung das Programm des Kunden. Punkt. Was er damit macht und ob er es kopiert kann dir Pups sein. dafür kostet es auch ein wenig mehr.
Sollte er aber bei einer !anderen! Anlage als bei der ersten probleme haben, und hilfe brauchen, gibts den support dazu natürlich nur gegen entsprechend Geld.

Aber schreibst du ein Programm für einen Kunden der vor hat dieses Programm in X Maschinen einzusetzen und möchte für jede Anlage support von dir. Dann einigt man sich eben auf die Kosten der einmaligen erstellung der ersten Anlage + jede weitere Anlage. Alle weiteren werden dann mit einer sagen wir pauschale abgerechnet. Du wirst dann für das einspielen und die eventuelle Anpassung und natürlich für die "Lizens" des ersten Programms bezahlt. Alles vertraglich festgelegt und gut. Der support ist dann natürlich bis zu einem gewissen maße dabei.

Und egal wie du es machst, solange dein Kunde zufrieden ist und ein bisschen Hirnschmalz hat. Holt er sich sowieso lieber dich als irgendeinen anderen da dran zu lassen.

Programme so zu verschlüsseln das sie nur noch einer Firma (einem Programmierer) den Zugriff erlauben halte ich auch für sehr... naja.. scheiße :)

Aber das haben meine vorredner ja schon zahlreich begründet.

Mfg

Befree
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich schütze auch unsere Anlagen vor ungewünschtem Kopieren.

Gehe da wie folgt vor:

1.) Es wird die Seriennummer der MMC ausgelesen(+ Prefix) und damit ein Hash gebildet (4DW)
Dies sollte in einem geeigneten Baustein erfolgen.
2.) Auf dem Bedienteil (oder OB100) wird der Hash eingegeben/hinterlegt.
(Dies sollte auch in die DOKU!)
3.) alle 10 Minuten vergleiche ich beide. Bei Abweichung läuft ein Timer runter
Dieser Timer läuft ca. 21 Tage.
4.) Ist der Timer abgelaufen wird die Anlage geeignet stillgesetzt.
5.) Den Timer lege ich dreifach an und mache die Werte unkenntlich (Schieben u. Tauschen der Bytes).Die drei Werte vergleiche ich zyklisch, bei einem Unterschied wurde ein Wert manipuliert, was zum sofortigem Punkt 4 führt.
6.) Die Timerwerte liegen in einem DB der von der CPU im Ram angelegt wird.
Im Anlauf der CPU:
-Testen ob Ram-DB vorhanden:
Ja: Einen DB im Ladespeicher erzeugen (wenn noch nicht vorhanden) und Timerwerte in im Sichern.
Nein: (Urlöschen) Testen ob DB im Ladespeicher vorhanden, wenn ja Werte zurückladen in Ram-DB. Sonnst: Erzeugen der DB's und vorbelegen mit 21Tagen (Urgelöscht und MMC gelöscht und Programm neu übertragen)


Vorteile:
- Der Kunde ist über die Autorisierung informiert.
- Er kann die gesammte Hardware Tauschen und auch die Software ändern
- Bei Tausch der MMC hat der Kunde 21Tage Zeit bei mir eine neue Autorisierung anzufordern. (Natürlich im Tausch gegen die alte MMC)
- Ein Neuanlauf führt nicht zum Neustart des Timers
- Ein Urlöschen führt nicht zum Neustart des Timers
- Ein Übertragen aller Bausteine führt nicht zum Neustart des Timers

Anmerkungen:
- Erst ein Löschen der MMC und Urlöschen der CPU setzt den Timer zurück auf Anfangswert.
- DB-Zugriffe indirekt adressieren um nicht in der Queverweisliste zu erscheinen
- Ablegen des Cods in einem eh geschützten Baustein (z.B. FC72 G7) da jammert auch kein Kunde da von Siemens ja geschützt...

Ist natürlich viel Arbeit

Hoffe ich konnte helfen
 
was für ein Quatsch!

Also ich schütze auch unsere Anlagen vor ungewünschtem Kopieren.

Gehe da wie folgt vor:

1.) Es wird die Seriennummer der MMC ausgelesen(+ Prefix) und damit ein Hash gebildet (4DW)
Dies sollte in einem geeigneten Baustein erfolgen.
2.) Auf dem Bedienteil (oder OB100) wird der Hash eingegeben/hinterlegt.
(Dies sollte auch in die DOKU!)
3.) alle 10 Minuten vergleiche ich beide. Bei Abweichung läuft ein Timer runter
Dieser Timer läuft ca. 21 Tage.
4.) Ist der Timer abgelaufen wird die Anlage geeignet stillgesetzt.
5.) Den Timer lege ich dreifach an und mache die Werte unkenntlich (Schieben u. Tauschen der Bytes).Die drei Werte vergleiche ich zyklisch, bei einem Unterschied wurde ein Wert manipuliert, was zum sofortigem Punkt 4 führt.
6.) Die Timerwerte liegen in einem DB der von der CPU im Ram angelegt wird.
Im Anlauf der CPU:
-Testen ob Ram-DB vorhanden:
Ja: Einen DB im Ladespeicher erzeugen (wenn noch nicht vorhanden) und Timerwerte in im Sichern.
Nein: (Urlöschen) Testen ob DB im Ladespeicher vorhanden, wenn ja Werte zurückladen in Ram-DB. Sonnst: Erzeugen der DB's und vorbelegen mit 21Tagen (Urgelöscht und MMC gelöscht und Programm neu übertragen)


Vorteile:
- Der Kunde ist über die Autorisierung informiert.
- Er kann die gesammte Hardware Tauschen und auch die Software ändern
- Bei Tausch der MMC hat der Kunde 21Tage Zeit bei mir eine neue Autorisierung anzufordern. (Natürlich im Tausch gegen die alte MMC)
- Ein Neuanlauf führt nicht zum Neustart des Timers
- Ein Urlöschen führt nicht zum Neustart des Timers
- Ein Übertragen aller Bausteine führt nicht zum Neustart des Timers

Anmerkungen:
- Erst ein Löschen der MMC und Urlöschen der CPU setzt den Timer zurück auf Anfangswert.
- DB-Zugriffe indirekt adressieren um nicht in der Queverweisliste zu erscheinen
- Ablegen des Cods in einem eh geschützten Baustein (z.B. FC72 G7) da jammert auch kein Kunde da von Siemens ja geschützt...

Ist natürlich viel Arbeit

Hoffe ich konnte helfen

Dazu hätte ich nur zwei wünsche:
Der Kundenkreis der so einen Blödsinn kauft,
ist klein, damit sich das sich nicht zu sehr
verbreitet.
Zweitens, du schulst bald um und wirst Gärtner.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenns einmal geschrieben ist machts keine Arbeit.
Die Zykluszeit belastung in einem Zyklus alle 10Minuten ist auch vernachlässigbar.

Wenn Ihr eine Anlage geliefert habt und ein Jahr später steht neben dieser eine Zweite,Identische, was erzählst du denn dann deinen Kindern warum sie nichts zu essen bekommen? Weil der gute Tscheche; Pole... ja viel billiger bauen kann ? Mit der Doku wird ja alles offengelegt.

Warum haben wir denn den blöden Licensmanager? Warum wird denn heute alles autorisiert und registriert?

Warum sollen wir unsere Arbeit und Know-How nicht schützen?
 
Jegliche Form der Authorisierung ist bei genauer Betrachtung lediglich ein "Deppenschutz".
Das fängt beim License-Manager an und hört bei derartigem Käse auf.

Ich frag mich nur gerade wer euren Scheiß nach einer Insolvenz eurerseits,
oder deine Wenigkeit wird vom Zug überfahren ... kurzum wasauchimmer,
denn dann noch sinnvoll warten können soll, wenn ich selbst für einen brunzsimplen CPU-Tausch,
so ein Prozedere durchführen LASSEN muss.
 
Also wenns einmal geschrieben ist machts keine Arbeit.
Die Zykluszeit belastung in einem Zyklus alle 10Minuten ist auch vernachlässigbar.

Wenn Ihr eine Anlage geliefert habt und ein Jahr später steht neben dieser eine Zweite,Identische, was erzählst du denn dann deinen Kindern warum sie nichts zu essen bekommen? Weil der gute Tscheche; Pole... ja viel billiger bauen kann ? Mit der Doku wird ja alles offengelegt.

Warum haben wir denn den blöden Licensmanager? Warum wird denn heute alles autorisiert und registriert?

Warum sollen wir unsere Arbeit und Know-How nicht schützen?

Glaubst du der Pole oder Inder wäre nicht in
der Lage das selber zu Programmieren, der
saß doch in der Uni neben dir und hatte so-
gar einen besseren Abschluss als du.

Um meine Kinder mach dir mal keine sorgen
die fütter ich mit Hartz 4 und den Kindergeld
durch.
 
Zurück
Oben