Seite 1 von 3

Keygen in Pyhton

Verfasst: Montag 9. Januar 2006, 22:03
von Python 47
Hi Leuts,

hab mal ne frage:

Ist es möglich Keygens in Python zu programmieren??

Wie bekommt man das in ungefähr hin wenn man den Serial-Algorythmus hat??

Ich möchte keine genaue Anleitung haben, weil das illegal wäre

Ich möchte nur das ihr mir sagt ob man Keygens mit Python erstellen kann und wie es in etwa geht einen Algorythmus darzustellen!

Ist wirklich wichig!

Vielen Danke!

Re: Keygen in Pyhton

Verfasst: Montag 9. Januar 2006, 23:51
von BlackJack
Python Master 47 hat geschrieben:Ist es möglich Keygens in Python zu programmieren??
Ja klar. Das ist in so ziemlich jeder Programmiersprache möglich, die mit Zahlen und Zeichen umgehen kann.
Wie bekommt man das in ungefähr hin wenn man den Serial-Algorythmus hat??
Man setzt ihn in Python um!?
Ich möchte keine genaue Anleitung haben, weil das illegal wäre

Ich möchte nur das ihr mir sagt ob man Keygens mit Python erstellen kann und wie es in etwa geht einen Algorythmus darzustellen!
Na man setzt ihn halt einfach um. So ein Algorithmus ist eine Beschreibung einer Vorgehensweise. Bei Serials geht es wahrscheinlich darum, wie man aus einer Eingabezeichenkette, z.B. einen Namen, eine Zeichenkette erstellt, die den passenden Schlüssel dazu darstellt. Dazu wird man meistens die Eingabe als Byte-Werte also Zahlen irgendwie "mathematisch bearbeiten" und daraus am Ende wieder Zeichen gewinnen. Mit Zeichen und Zahlen kommt Python ganz gut zurecht.

Verfasst: Dienstag 10. Januar 2006, 09:27
von mr.hide
Wenn man den Algorithmus hat, hat man ja eh schon das Kochbuch zum Programmieren.

Dann musst du nur Schritt für Schritt machen was da steht...

Offtopic:
In Englisch ist die Signatur einfach besser ... Mess with the best, die like the rest
:wink:

Verfasst: Dienstag 10. Januar 2006, 14:21
von Python 47
Ok danke,

für die Antwort, ich werd mal ausprobieren, wenn ich net weiterkomm, frag ich nochmal!

Ich werde die Signatur umbennen :wink:

Verfasst: Dienstag 10. Januar 2006, 20:19
von Python 47
ja so hab jetzt die serialberechnung des Programmes, aber wie wandle ich hexadezimalzahlen in dezimalzahlen um und wie addiere/subtrahiere/multipliziere/dividiere ich hexadezimalzahlen???

Danke!

Verfasst: Dienstag 10. Januar 2006, 20:40
von Leonidas
Python Master 47 hat geschrieben:wie wandle ich hexadezimalzahlen in dezimalzahlen um und wie addiere/subtrahiere/multipliziere/dividiere ich hexadezimalzahlen???
Na, zum Beispiel so:

Code: Alles auswählen

In [5]: 0xFF
Out[5]: 255

In [6]: hex(255)
Out[6]: '0xff'

In [7]: 0xFF + 0x01
Out[7]: 256

In [8]: hex(0xFF + 0x01)
Out[8]: '0x100'

Verfasst: Dienstag 10. Januar 2006, 21:46
von Python 47
Also ich hab das noch nicht so ganz gecheckt :oops:

Das einzige was ich verstehe ist eine Hex-Zahl in eine Dezimalzahl zu wandeln

Was bedeutet das In und Out?
Wie wandle ich eine Hex-Zahl in eine Dezimalzahl um???
Wie addiere/subtrahiere/multipliziere/dividiere ich Hex-Zahlen??
Das mit 0*FF+0*4d klappt net!

Verfasst: Dienstag 10. Januar 2006, 21:58
von jens
In und Out zeigt dir nur ein Ein- und Ausgaben an ;)

Code: Alles auswählen

h = hex(255)
print h
d = float(h)
print d
d = int(h)
Ausgaben:
0xff
255.0
Traceback (most recent call last):
File "test.py", line 6, in ?
d = int(h)
ValueError: invalid literal for int(): 0xff
Warum geht denn kein int() ???

Verfasst: Dienstag 10. Januar 2006, 22:09
von Gast
Folgendes,was du geschrieben hast geht net:

Code: Alles auswählen

h=hex(255)
d=float(h)
Ansonsten Danke!

Verfasst: Mittwoch 11. Januar 2006, 18:17
von Leonidas
jens hat geschrieben:Warum geht denn kein int() ???
Warum willst du einen Int zu einem Int konvertieren?

Code: Alles auswählen

In [9]: type(0xFF)
Out[9]: <type 'int'>
In [10]: isinstance(0xFF, int)
Out[10]: True

Verfasst: Donnerstag 12. Januar 2006, 22:10
von Python 47
Also:

Ich habe jetzt die Serialberechnung, von einem Programm. Das Programm werde ich nicht sagen, weil wenn niemand das Programm kennt, dann kann er das Programm nicht cracken, da ihm die Serialberechnung alleine völlig wertlos ist. Die Serialberechnung muss ich euch senden, damit ihr mir helfen könnt!

Die Serialeingabe umfasst Namen+Serialnummer.

Serialberechnung:
1. Buchstaben zwischen a und z in Großbuchstaben umwandeln
2. alle Zeichen addieren
3. berechneten Wert von 1D4C0(h) abziehen
4. und in eine Dezimalzahl umwandeln

1.Könnte so aussehen:

Code: Alles auswählen

Name=raw_input('Name:')
Name.upper()
3.Könnte so aussehen:

Code: Alles auswählen

Endergebniss=0x1D4C0-hex(Ergebniss)
4.Könnte so aussehen:

Code: Alles auswählen

float(Endergebniss)
print 'Serial', Endergebniss
Jetzt zu meinem Problem:

zu 2.Wie bekomm ich es hin, jeden einzelnen Buschstaben von Name auszuwählen und ihm dann einen Hexwert zuzuordnen und dann in einer Variablen(Ich habe Ergebniss gewählt) zu speichern?

Und ich weiß ja nicht welchen String die Variable Name annimmt, da es dem Benutzer des Keygens ja selber überlassen ist, welchen Namen er eingibt!Also müsste ich etwas haben, das jedem Buchstaben von A-Z den entsprechenden Hex-Wert zuordnet und dann die Hexwerte für die Eingabe herausfischt und alle Hexwerte der Eingabe addiert und in eine Variable speichert.

Wie stelle ich das an??

Vielen Dank für eure Hilfe!

Verfasst: Donnerstag 12. Januar 2006, 23:50
von BlackJack
Python Master 47 hat geschrieben:Die Serialeingabe umfasst Namen+Serialnummer.

Serialberechnung:
1. Buchstaben zwischen a und z in Großbuchstaben umwandeln
2. alle Zeichen addieren
3. berechneten Wert von 1D4C0(h) abziehen
4. und in eine Dezimalzahl umwandeln
4. Ist überflüssig. Man rechnet mit ganzen Zahlen. So eine ganze Zahl kann man als Dezimalzahl, Hexadezimalzahl, Binärzahl oder in noch anderen Basen anzeigen lassen. Ein Satz wie 'Hexzahlen addieren und das Ergebnis in Dezimal umwandeln' macht keinen Sinn weil alles nur verschiedene Darstellungen von ganzen Zahlen sind.
3.Könnte so aussehen:

Code: Alles auswählen

Endergebniss=0x1D4C0-hex(Ergebniss)
Das geht nicht. ``0x1D4C0`` ist eine ganze Zahl und `hex()` ergibt eine Zeichenkette. Du kannst von einer Zahl keine Zeichenkette abziehen. Lass einfach das `hex()` weg.
4.Könnte so aussehen:

Code: Alles auswählen

float(Endergebniss)
print 'Serial', Endergebniss
`float()`!? Ich habe noch nie irgendwo eine Fliesskommazahl als Seriennummer eingeben müssen. Du meinst wohl eher `int()`. Was aber überflüssig ist, weil in Schritt 3 schon eine ganze Zahl als Ergebnis herauskommt.
Jetzt zu meinem Problem:

zu 2.Wie bekomm ich es hin, jeden einzelnen Buschstaben von Name auszuwählen und ihm dann einen Hexwert zuzuordnen und dann in einer Variablen(Ich habe Ergebniss gewählt) zu speichern?

Und ich weiß ja nicht welchen String die Variable Name annimmt, da es dem Benutzer des Keygens ja selber überlassen ist, welchen Namen er eingibt!Also müsste ich etwas haben, das jedem Buchstaben von A-Z den entsprechenden Hex-Wert zuordnet und dann die Hexwerte für die Eingabe herausfischt und alle Hexwerte der Eingabe addiert und in eine Variable speichert.
Wie gesagt: Du addierst keine Hexwerte sondern Zahlen. Und den ASCII- bzw. Bytewert für ein Zeichen bekommst Du mit `ord()`.

Ungetestet:

Code: Alles auswählen

schluessel = 0x1D4C0 - sum(map(ord, eingabe.upper()))

Verfasst: Freitag 13. Januar 2006, 00:01
von Gast
Ja ich meinte int und nicht float.

Danke!Ich werde es mal ausprobieren!

Verfasst: Freitag 13. Januar 2006, 15:32
von Python 47
So ich bins nochmal!

Dein Code hat einwandfrei funktioniert! Big THX!

Jetzt brauche noch einen Befehl für einen neuen Keygen!

Wenn die Eingabe des Namen Programm ist, wie stelle ich es an, einen bestimmten Buchstaben aus, dem Namen der Eingabe herrauszufischen und dann den Wert dieses Buchstaben mit einem gewissen wert zu multiplizieren?

Also ein Teil der Serialberechnung ist:

ErsterWert = (erstes Zeichen aus Name) * 29A(Hex-Wert

Code: Alles auswählen

Name=raw_input('Name:`)
Jetzt tippe ich als Namen Programm ein.Wie wähle ich jetzt P von Programm aus und multipliziere den ASCII Wert von P(P=erstes Zeichen aus Name) mit 666?

Danke!

Verfasst: Freitag 13. Januar 2006, 15:33
von jens
dict anlegen und über die eingabe interieren...