Verfasst: 22.10.2004 21:38
wow ihr seid spize
wirklich cool schneller als googel
vielen dank
wirklich cool schneller als googel
vielen dank
*lol* dieser Schutz schreckt ja wohl kaum jemanden ab. Die Variationen davon auch nicht wirklich. Man braucht nur ein beliebiges Passwort mit MD5 verschlüsseln und es in die Datei schreiben, schwupps habe ich Zugriff, so einfach wäre das. Lösen könnte man das indem du das Passwort mit einem eigenen Algorythmus verschlüsselst, das würde schonmal einen Großteil abschrecken (da sie das Passwort ja ohne den Schlüssel, der im Programm steckt nicht neu erstellen können). Problem an der Sache: Wenn ich die Datei (oder auch den Registerykey) mit dem Schlüssel lösche denkt das Programm es sei der erste Start. Zack, wieder umgangenLittleFurz hat geschrieben:wenn du es wirklich sicher machen willst dann mach es so: du forderst dein kunden beim erststart auf das passwort einzuegben. das Passwort wird dann mit MD5 verschlüsselt und ganz normal in eine Datei speichern. Danach, wenn das Programm startet, forderst du dein Kunden auf das passwort einugebebn. das eingegebene passwort wird dann auch mit MD5 verschlüsselt und dann mit dem Key aus der Datei verglichen. Wenn die Keys ungleich sind, ist das Passwort falsch.
MD5 ist eine einweg verschlüsselung und damit hoch sicher. damit sollte es auf jeden fall gehen und sicher ist es odendrein auch noch.
Code: Alles auswählen
Debug PeekS(?Passwort)
Passwort:
!DB "Hallo"Code: Alles auswählen
Debug PeekS(?Passwort)
Passwort:
!DB "Hallo"Ist ein Buffer nicht normalerweise ein Bereich im Speicher welchen man mit Allocatememory() reservieren könnte? Dann wäre zwar @Variable auch der Speicherbereich der Variable (Somit der Buffer in welchem der Wert der Variablen steht), aber das macht den Buffer noch nicht zu einer Variablen selbst.Ein Buffer ist in der Regel eine Variable, wo Daten gespeichert werden. In meinem Beispiel wird eine Variable erstellt, die Passwort heißt. In der Funktion übergebe ich mittels @ die Adresse der Variable. Länge heißt in dem Fall, wie lang der Text im Buffer oder in der Variable ist. Das Ergebniss wird dann in der Variable MD5Passwort gespeichert.
Code: Alles auswählen
OpenFile(0, "Passcode.txt")
*buffer = AllocateMemory(10)
PokeS(*buffer, "123456789")
WriteString(MD5Fingerprint(*buffer, 10))
CloseFile(0)
OpenConsole()
OpenFile(0, "Passcode.txt")
String$ = Input()
*buffer = AllocateMemory(10)
PokeS(*buffer, String$)
If MD5Fingerprint(*buffer, 10) = ReadString()
Print("Jo, korrekt!!")
Else
Print("Ahh, NEIN!")
EndIf
Input()Im Nachhinein kannst du keine Daten mehr in die Exe schreiben. Zumindest hat Windows da einen Schutz welches es nicht erlaubt, in die eigene laufende Anwendung Daten zu schreiben. Somit wirst du einen weiteren Prozess brauchen der nach dem Schließen der Exe startet und in die Exe etwas hineinschreibt. Das könnte man dann eventuell wieder manipulieren. Außerdem könnte man auch diese Werte in der Exe mit einem Hexeditor ganz einfach ändern und sich somit einen neuen Schlüssel basteln.Mein Lösungsansatz (auch wenn ich nicht weiß "wie" sicher das ganze sein soll):
Es ist möglich an alle Möglichen Dateien Daten "anzuhängen". So kannst du zbs. ein Bild oder Icon an eine Exe oder DLL binden. Genauso kannst du auch (im Nachhinein) das Passwort an die Exe anhängen. Schon wäre das ganze einen Tick sicherer. Da ich aber selbst erst mit PB anfange kann ich dir kein Beispiel für eine Implentation bieten, aber die Idee
Wie wäre es, wenn beim Erwerb des Programmes eine Art Seriennummer mitgeliefert wird, welche das Passwort des Programmes ist? Dann muss man dieses zwar gut aufheben, aber hat dann, ähnlich wie bei kommerziellen Programmen, einen Key mit welchem man das Programm dann starten oder installieren kann, oder was auch immer.Problem an der Sache: Wenn ich die Datei (oder auch den Registerykey) mit dem Schlüssel lösche denkt das Programm es sei der erste Start. Zack, wieder umgange
Code: Alles auswählen
Passwort.s = "Passwort" + Str(#PB_Compiler_Date)
NeuesPasswort.s = MD5Fingerprint(@Passwort, Len(Passwort))
Ja, ein Key ist schon eine Lösung. Eine 100% Lösung gibt es ja eh nicht, es ist immer nur die Frage ob sich der Aufwand lohnt eine solche Barriere zu knacken.Sunny hat geschrieben:Wie wäre es, wenn beim Erwerb des Programmes eine Art Seriennummer mitgeliefert wird, welche das Passwort des Programmes ist? Dann muss man dieses zwar gut aufheben, aber hat dann, ähnlich wie bei kommerziellen Programmen, einen Key mit welchem man das Programm dann starten oder installieren kann, oder was auch immer.
Dann müsste man natürlich für jedes rausgehende Produkt eine einmalige Seriennummer entwerfen welcher dann irgendwie beigelegt wird.