Rechner-ID und Benutzer-ID als Kopierschutz auslesen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

V7Sport
*
Beiträge: 10
Registriert: Do, 02.02.2006 19:02

Rechner-ID und Benutzer-ID als Kopierschutz auslesen

Beitrag von V7Sport »

Hallo liebe Gemeinde,

wir haben eine recht umfangreiche Anwendung - zunächst aus Entwicklungssicherheit - mit MS-Excel aufgebaut. Jetzt prüfe ich, ob ich dass ganze auf Calc migrieren kann. (Nebenbei: OpenOffice setzen wir seit 1 Jahr produktiv ein und sind soweit zufrieden.)
Dabei möchte ich einen Kopierschutz aufbauen, damit unser geistiges Eigentum nicht verloren geht.
Idee: Beim Aufruf eines Calc-Dokuments wird geprüft, ob der "erlaubte" Rechner und der "erlaubte" User korrekt ist. Ansonsten wird das Öffnen wieder abgebrochen.
Wenn der "erlaubte" User und Rechner ok ist, möchte ich Aktionen wie z.B. ganze Tabellenblätter kopieren und größere Zellbereiche unterbinden.
So stelle ich mir den Kopierschutz vor.

Frage 1: kann man aus Starbasic auf Betriebssystemebene Informationen wie Rechner-ID und User-ID auslesen? Wie lautet der Befehl?

Frage 2: ist meine Lösung überhaupt praxistauglich, oder muß ich noch mehr Funktionen programmieren?

Ich großer Freude auf hilfreiche Antworten ...

V7Sport
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Dieses Verfahren ist weder für Calc noch für Excel tauglich, weil in beiden die Ausführung von Makros jederzeit durch den Nutzer verhindert werden kann und damit jegliche Prüfung auf Makrobasis umgangen.



Gruß
Stephan
V7Sport
*
Beiträge: 10
Registriert: Do, 02.02.2006 19:02

Beitrag von V7Sport »

Hallo an alle,

eine kleine Lösung habe ich schon selbst gefunden. Offensichtlich ist es die Funktion "environ", die einige Rückgabewerte hat.
Kann ich also mit "environ" unter Win XP sowohl Rechner-Id als auch User-ID abfragen?

mfg

V7Sport
V7Sport
*
Beiträge: 10
Registriert: Do, 02.02.2006 19:02

Beitrag von V7Sport »

Hallo Stephan,
vielen Dank für die schnelle Reaktion.
Verblüffend logisch was Du sagst.
Gilt das Unterbinden von Makros auch für die "autostart"-Routinen einer Calc-Datei?
Wie würde denn eine sichere Lösung aussehen?
Wenn es keine sichere Lösung gibt (..und das befürchte ich), kann ich auch damit leben. Wenn jemand mit krimineller Energie die Anwendung knacken will, dann kann er dass auch immer irgendwie.

mfg

V7Sport
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey V7Sport,
Gilt das Unterbinden von Makros auch für die "autostart"-Routinen einer Calc-Datei?
Selbstverständlich! Sonst wärest du ja "Schadcode" hilflos ausgeliefert....

Code: Alles auswählen

Kann ich also mit "environ" unter Win XP sowohl Rechner-Id als auch User-ID abfragen?
Nein. "Environ" liefert dir nur ein paar ausgewählte Parameter. Wenn schon, dann wäre wohl das "XSystemShellExecute!"-Interface besser geeignet - da kannst du dann beliebige Befehle auf der Systemshell ausführen. Aber ob das zum Erfolg führt???
Wie würde denn eine sichere Lösung aussehen?
Dürfte es wohl für Calc kaum geben. Eventuell eine versteckte Datei schreiben, die wieder suchen und einlesen? Aber so wirklich sicher ist das wohl auch nicht.
Wenn jemand mit krimineller Energie die Anwendung knacken will, dann kann er dass auch immer irgendwie.
Na ja, also einfach die Makros "nicht ausführen" ist wohl kaum als "kriminelle Energie" zu bewerten ;-)
Im Übrigen kannst du deine Bibliotheken verschlüpsseln (mit Passwort). Die Verschlüsselung ist recht gut und wirklich nur mit "erhöhter krimineller Energie" zu knacken - also, das sollte für den Schutz ces geistigen Eigentums ausreichen. Tia, und dann - wie gesagt, eine bestimmte Schlüsseldatei schreiben, diese verstecken, und im Makro abfragen,. Abbruch, wenn Datei nicht vorhanden.
Und den Effekt, dass die Makros beim Start ausgeschaltet werden, kannst du umgehen, indem du die Tabellen komplett schützt (Blattschutz - Passwort). Im "normalen" Ablauf würde das Makro den Balattschutz aufheben - läuft das Makro nicht, sind die Tabellen zu nichts zu gebrauchen....

So würde ich es machen.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Gilt das Unterbinden von Makros auch für die "autostart"-Routinen einer Calc-Datei?


Ist die Frage ernst gemeint? Natürlich gilt es dafür, und natürlich vorrangig/ausschließlich dafür(*), denn ein Makro das nicht automatisch startet dessen Ausführung muß man doch garnicht erst stoppen, man startet es einfach nicht.

(*)
Setze in Calc die Makrosicherheit auf höchste Stufe (wo das geht ist von Version zu Version etwas unterschiedlich, im Groben Extras-Makros-Sicherheit) oder halte UMSCHALT gedrückt wenn Du die Datei öffnest.
Bei Letzterem Vorsicht, falls AddInns aktiviet sind die automatisch mit Excel starten bewirkt UMSCHALT das Blocken der ADDInns (falls Excel vorher noch nicht lief) und in Folge nicht mehr das Blocken der Makros in der Datei. Es gilt im Zweifel also erst Excel zu starten und dann wenn Excel bereits läuft, die Datei unter Festhalten von UMSCHALT.

Wie würde denn eine sichere Lösung aussehen?
Für Excel nur mittels Passwortschutz der Datei(**), in Calc indem Du die Datei mittels Passwort schützt oder indem Du die Makrobibliotheken der Datei mittels Passwort schützt und eine Makroroutine verwendest die dafür verantwortlich ist erst Zellinhalte zu erzeugen oder teilweise zu erzeugen und den Start entsprechender Makros nur mit Passwort gestattest.


(**)
Über die Sicherheit des Dateipasswortschutzes in Excel kann ich Dir nichts sagen (da MS das angewendete Verfahren nicht offenlegt), außer das er unsicher ist. Der Schutz in Calc ist nach derzeitigem Stand des Wissens sicher, die Sicherheit ist wegen des offenen Quellcodes von OOo auch jederzeit überprüfbar (Fachkenntnis vorausgesetzt).
Die Lösung in Excel könnte theoretisch auch so sein wie die zweite angeführte Lösung in Calc, allerdings scheitert das praktisch daran das Du Makros in Excel nicht hinreichend schützen kannst, da der Passwortschutz der Bibliotheken auch von Laien leicht überwunden werden kann, wenn sie die Exceldateien in Calc öffnen, dort ist der Makrocode trotz Passwortschutz sofort einsehbar, mithin auch Passworte die im Code abgefragt werden.


Wenn jemand mit krimineller Energie die Anwendung knacken will, dann kann er dass auch immer irgendwie.


Nee, darüber reden wir hier garnicht, im Moment reden wir über elementare Dinge und keinesfalls über Expertenwissen im Wortsinn. (es sei denn jeder der in Excel/Calc mehr kann als ein paar Zahlen eingeben und Berechnungen durchführen kann gälte schon als Experte)

Kann ich also mit "environ" unter Win XP sowohl Rechner-Id als auch User-ID abfragen?
Meines Wissens Nein, die Werte sollten sich jedoch aus der Registry auslesen lassen, notwendige Dinge finden sich beispielsweise bei http://www.dannenhoefer.de/faqstarbasic/contents.htm (Punkt 2.3.15) zu finden sein, aber auch in den mit OOo mitgelieferten Bibliotheken gibt es entsprechende Routinen. Einzig mußt Du die Registry-Schlüssel kennen, ich bin zu faul die jetzt rauszufinden, das sagt Dir aber wohl jedes bessere Windows-Forum.
Und den Effekt, dass die Makros beim Start ausgeschaltet werden, kannst du umgehen, indem du die Tabellen komplett schützt (Blattschutz - Passwort). Im "normalen" Ablauf würde das Makro den Balattschutz aufheben - läuft das Makro nicht, sind die Tabellen zu nichts zu gebrauchen....
Sorry, nur hier mache ich doch lieber einen Zusatz.
Klar, es stimmt natürlich was dasteht, aber der Schutz ist doch leicht dadurch zu umgehen indem man die Datei im Excel-Format speichert, diese dann in Calc öffnet und den Blattschutz ohne Passwort aufheben kann. Falls es in neueren OOo-Versionen nicht geändert ist, ist es, meines Erachtens nach, auch möglich alle Zellinhalte von geschützen Blättern mittels Makro auzulesen und in neue Datei zu schreiben ohne das man das Passwort des Blattes kennen muß.
Deshalb schrieb ich Makros (in verschlüsselten(!) Dokumentbibliotheken in Calc(!)) müßten Routinen enthalten die Blattinhalte erst nach Passwortabfrage herstellen/generieren, was je nach notwendigen konkreten Blattinhalt leicht, schwierig oder so unpraktikabel, das praktisch unmöglich sein kann.



Gruß
Stephan
Zuletzt geändert von Stephan am Sa, 03.02.2007 17:41, insgesamt 1-mal geändert.
V7Sport
*
Beiträge: 10
Registriert: Do, 02.02.2006 19:02

Beitrag von V7Sport »

Hallo Ihr beiden,

einfach Spitze die schnelle und fundierte Reaktion!

Auf jeden Fall fühle ich mich jetzt sicherer, so dass ich die Portierung von Excel auf Calc in der nächsten Woche starten werde.

Vielen Dank nochmals!

V7Sport
Antworten