AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie kommen Buchstaben in eine Seriennummer?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kommen Buchstaben in eine Seriennummer?

Ein Thema von TheMiller · begonnen am 17. Dez 2009 · letzter Beitrag vom 28. Dez 2009
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 18:51
Hallo,

ich bin gerade dabei, einen Seriennummernschutz mit aktivierung zu programmieren. Ich habe jetzt mein erstes Projekt, was ich nicht einfach so für lau rausgeben will.

Nun würde ich gerne eine Seriennummer (Prinzip soweit klar und schon umgesetzt) mit Buchstaben und Zahlen erstellen. Und jetzt frage ich mich, wie die Buchstaben in der Seriennummer "errechnet", ausgewählt oder eingefügt werden. Also nach welchem Schema?

Wird zB eine Zahl errechnet, zB. 6 und dies ist dann der (26-6).Buchstabe des Alphabeten-Arrays oder so?

Wäre um ein paar Vorschläge dankbar!

Danke!
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 19:15
Vorschlag: Ein Array of Char ['0'..'9', 'A'..'Z'].
Dann immer zufällig ein Zeichen aus diesem Array "ziehen" und in deine Seriennummer einfügen.
Man kann dieses Array auch "durcheinanderwirbeln".
Ich habe das mal so gemacht, dass ich eine "Quersumme" über die Seriennummer errechnet habe, die aus der Summe von (Ord(Char) + Position im Array) bestand. Dann hab ich das 1000 mal durchlaufen lassen um die am meisten vorkommende "Quersumme" zu ermitteln.
Die habe ich dann zu Grunde gelegt, um aus einer Million "Ziehungen" nur die zu speichern, die diese "Quersumme" haben. So wurde die Prüfung auf Echtheit der Seriennummer garantiert. Es ergaben sich dann meist mehrere Tausend solcher Keys.
Wenn man das Quell-Array mit den Ursprungszeichen immer anders "durcheinanderbringt" hat man mit diesem Verfahren sehr viele Möglichkeiten, immer neue Keys (für z.B. andere Anwendungen) zu erstellen.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#3

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 20:07
Kleiner Tipp:

Wenn du einen solchen Schutz realisieren willst, würde ich dein "Vorhaben" NICHT hier öffentlich schreiben.
Ebenso würde ich keine Tipps aus dem Forum 1zu1 übernehmen.

Dann kannst du genau so gut einen Verschiebealgorythmus nehmen, der bringt genau soviel, und viel ist in diesem Sinne "nix".
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 20:11
Also, ich habe jetzt einen Algorithmus mit mathematischen Spielereien entwickelt. Die entstandene Serien-NUMMER überlagere ich dann quasi per Zufall mit Buchstaben aus einen indexierten Array.

Zum Beispiel:

Code:
1 = A, K, U
2 = B, L, V
3 = C, M, W
4 = ........
So kann ich dann, bevor ich die Seriennummer auf Korrektheit prüfe, die Buchstaben intern wieder in Zahlen umwandeln. Sollte doch so reichen, oder?

Blöd ist nur, dass die Buchstaben dann keinen eigentlichen Sinn haben, oder?

@MichaelLinden: Keiner kennt mein Programm Außerdem verrate ich ja die mathematischen Berechnungen nicht.
  Mit Zitat antworten Zitat
-=Breeze=-

Registriert seit: 14. Apr 2008
Ort: Köln
29 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 20:23
BtW:
Dir bringt der komplizierteste Algorithmus nichts, wenn du nachher schreibst
if check(serial)=True then Starte_Programm; Denn das kann jeder überspringen, der sich ein wenig auskennt
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#6

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 20:33
Zitat:
Denn das kann jeder überspringen, der sich ein wenig auskennt Wink
Stichwort: u.a. disassembler

- Umgehe direkte Vergleiche: if key then starte..;
- Umgehe Variablennamen wie: key, serial, seriennummer, generatedkey , usw
- Versuche den Key wenn schon in Form von char(65) + char(66) + char(67); (ABC) zu schreiben
statt ABC:
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 20:40
Zitat von MichaelLinden:
Zitat:
Denn das kann jeder überspringen, der sich ein wenig auskennt Wink
Stichwort: u.a. disassembler

...
- Versuche den Key wenn schon in Form von char(65) + char(66) + char(67); (ABC) zu schreiben
statt ABC:
ähm....da macht aber der Compiler trotzdem "ABC" draus
Am Besten ist es, den Key gar nicht im Programm zu haben, sondern nach der Eingabe mit einer speziellen Berechnung (die auch recht kompliziert sein kann) auf Echtheit zu prüfen.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 20:42
Zitat von MichaelLinden:
- Versuche den Key wenn schon in Form von char(65) + char(66) + char(67); (ABC) zu schreiben
Das habe ich neulich in einem anderen Thread auch vorgeschlagen, es hat sich aber als wirkungslos herausgestellt, weil der Compiler dieses Konstrukt schon vor dem Compilieren evaluiert, sodass der Text am ende doch wieder im Klartext in der Exe steht. Da muss man shcon etwas kreativer werden.

Der einzige wirkliche Schutz wäre eh, die komplette Datei zu verschlüsseln und erst stückchenweise bei der Ausführung zu entschlüsseln. Auch das ließe sich zwar theoretisch umgehen, allerdings macht es afaik auch Skype so, das bisher immer noch als ungeknackt gilt. So ein Aufwand ist aber eigentlich immer unnötig.

Ich sehe schon wie wir hier wieder in die übliche Debatte zum Sinn und Unsinn von Kopierschutz hineinschlittern...
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#9

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 17. Dez 2009, 20:51
Vielen Dank für die Tipps...

Das mit dem Disassembler ist mir klar - kenne mich damit auch ein bissl aus. Nur ich weis nicht so recht, wie ich es sonst umgehen kann.

Die Aussage

Zitat:
Am Besten ist es, den Key gar nicht im Programm zu haben, sondern nach der Eingabe mit einer speziellen Berechnung (die auch recht kompliziert sein kann) auf Echtheit zu prüfen.
habe ich nicht ganz verstanden...
Wenn ich doch Seriennummern nach einem Algorithmus erstelle, kann ich sie doch auch wieder zurückrechnen. Jeder User soll seine persönliche Seriennummer bekommen. Wieso sollte ich jede persönliche Seriennummer im Programm speichern?
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#10

Re: Wie kommen Buchstaben in eine Seriennummer?

  Alt 18. Dez 2009, 10:27
Zitat:
mit einer speziellen Berechnung (die auch recht kompliziert sein kann) auf Echtheit zu prüfen.
So macht es Office 2007 bei Eingabe des Keys/Serials z.B.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz