Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 18:17

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Serial Algorithmus

Discussion on Serial Algorithmus within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Serial Algorithmus

ich bin letztens auf diesen thread gestoßen:


jetzt frage ich mich, wie werden serials genau generiert?
ich habe ein wenig gegoogelt, habe allerdings nichts sinnvolles gefunden
Code:
if(key == "1337-1337-1337-1337") return true;
was allerdings nicht so wirklich sinnvoll ist.

irgendwie müssen die random generierten serials doch auch wieder verifiziert werden. und mit purem random zeug kann man in dem fall natürlich nichts anfangen.

wie genau ist also ein solcher algo aufgebaut? (beide seiten, generator und verifier)
Tyrar is offline  
Old 09/07/2012, 18:30   #2


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Sieh dir mal das Epvp HWID System an, das ist ein ähnliches Konzept.

Bei hardware gebundenen Serials werden halt Hardware Informationen gehasht und dann wird damit ein bisschen rumgerechnet.
Der Verifizierer nimmt die Informationen, berechnet selbst den validen Key und checkt den übergebenen.

Nicht gebundene Serials werden halt von nem Algorithmus ausgespuckt, der keinerlei Input entgegennimmt oder einen, der letztendlich auch im Key enthalten ist (sodass der Verifizierer ihn nachvollziehen kann). Der verifizierende Algorithmus ist dementsprechend die Umkehrfunktion, die daraus wieder den Startwert macht (könnte zb. ne Prüfziffer am Ende des Keys sein oder eine festgeschriebene Menge von Startwerten).

Es geht halt generall darum, dass der Key gewisse mathematische Eigenschaften hat, die sich immer eindeutig nachprüfen lassen (zb. kommt halt bei einer bestimmten Berechnung darauf ein vorgeschriebener Wert raus und jedes andere Ergebnis deutet auf einen falschen Key hin).

Konkrete Algorithmen kann ich dir leider nicht zeigen, so viel Ahnung habe ich da leider auch nicht.
MrSm!th is offline  
Thanks
1 User
Old 09/07/2012, 19:25   #3
 
elite*gold: 0
Join Date: Jul 2010
Posts: 388
Received Thanks: 196
Schau dir ein paar KeygenMe's an.
SmackJew is offline  
Thanks
1 User
Old 09/08/2012, 15:09   #4


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Am besten ist es eigentlich immer, wenn du die Serials vollständig random auf einem Server generierst und dann auch dort verifizierst - am besten so, dass sie sich bei der ersten Eingabe auf eine HWID locken. Du kannst natürlich auch eine Serial für mehrere HWIDs erlauben, solltest dabei allerdings die Anzahl der erlaubten HWIDs für eine Serial beschränken, da diese sonst einfach irgendwo shared werden. Die Packets der Serverseite sollten mit einem asynchronen Crypto-Verfahren wie RSA signiert werden, sodass MITM Angriffe nicht so leicht fallen. Der public Key im Binary sollte selbstverständlich möglichst gut gegen Ersetzung geschützt werden.

Im Übrigen kann ich zur HWID-Generierung nicht den Algorithmus empfehlen, der beim e*pvp HWID System Verwendung findet. Dieser ist NICHT praxisreif und generiert auch nicht zwangsläufig eindeutige HWIDs. Bei dem System in der aktuellen Implementierung handelte es sicher eher um einen ersten Testlauf, der mangels Lowfyr bisher nicht weitergeführt wurde.
Ende! is offline  
Thanks
1 User
Old 09/08/2012, 19:23   #5
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by MrSm!th View Post
Sieh dir mal das Epvp HWID System an, das ist ein ähnliches Konzept.

Bei hardware gebundenen Serials werden halt Hardware Informationen gehasht und dann wird damit ein bisschen rumgerechnet.
Der Verifizierer nimmt die Informationen, berechnet selbst den validen Key und checkt den übergebenen.

Nicht gebundene Serials werden halt von nem Algorithmus ausgespuckt, der keinerlei Input entgegennimmt oder einen, der letztendlich auch im Key enthalten ist (sodass der Verifizierer ihn nachvollziehen kann). Der verifizierende Algorithmus ist dementsprechend die Umkehrfunktion, die daraus wieder den Startwert macht (könnte zb. ne Prüfziffer am Ende des Keys sein oder eine festgeschriebene Menge von Startwerten).

Es geht halt generall darum, dass der Key gewisse mathematische Eigenschaften hat, die sich immer eindeutig nachprüfen lassen (zb. kommt halt bei einer bestimmten Berechnung darauf ein vorgeschriebener Wert raus und jedes andere Ergebnis deutet auf einen falschen Key hin).

Konkrete Algorithmen kann ich dir leider nicht zeigen, so viel Ahnung habe ich da leider auch nicht.
Quote:
Originally Posted by SmackJew View Post
Schau dir ein paar KeygenMe's an.
hab inzwischen etwas simples zusammengebastelt. ty

Quote:
Originally Posted by Ende! View Post
Am besten ist es eigentlich immer, wenn du die Serials vollständig random auf einem Server generierst und dann auch dort verifizierst - am besten so, dass sie sich bei der ersten Eingabe auf eine HWID locken. Du kannst natürlich auch eine Serial für mehrere HWIDs erlauben, solltest dabei allerdings die Anzahl der erlaubten HWIDs für eine Serial beschränken, da diese sonst einfach irgendwo shared werden. Die Packets der Serverseite sollten mit einem asynchronen Crypto-Verfahren wie RSA signiert werden, sodass MITM Angriffe nicht so leicht fallen. Der public Key im Binary sollte selbstverständlich möglichst gut gegen Ersetzung geschützt werden.

Im Übrigen kann ich zur HWID-Generierung nicht den Algorithmus empfehlen, der beim e*pvp HWID System Verwendung findet. Dieser ist NICHT praxisreif und generiert auch nicht zwangsläufig eindeutige HWIDs. Bei dem System in der aktuellen Implementierung handelte es sicher eher um einen ersten Testlauf, der mangels Lowfyr bisher nicht weitergeführt wurde.
komm ich glaube ich sowieso nich drum rum, das alles auf nem server zu verifizieren.
das problem is, ich versuche den ganzen code hinterher an nen programm zu binden, was bei cryptopp allerdings nicht so sehr einfach sein wird. muss das ganze wohl nochma selbst in c implementieren.
Tyrar is offline  
Reply




All times are GMT +2. The time now is 18:17.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.