Keygen in Pyhton

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Montag 9. Januar 2006, 22:03

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!
mfg

Thomas :-)
BlackJack

Montag 9. Januar 2006, 23:51

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.
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Dienstag 10. Januar 2006, 09:27

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:
Grüße
Matthias

- Fluchen befreit von Kummer und Leid -
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Dienstag 10. Januar 2006, 14:21

Ok danke,

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

Ich werde die Signatur umbennen :wink:
mfg

Thomas :-)
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Dienstag 10. Januar 2006, 20:19

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!
mfg

Thomas :-)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 10. Januar 2006, 20:40

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'
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Dienstag 10. Januar 2006, 21:46

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!
mfg

Thomas :-)
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 10. Januar 2006, 21:58

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() ???

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Dienstag 10. Januar 2006, 22:09

Folgendes,was du geschrieben hast geht net:

Code: Alles auswählen

h=hex(255)
d=float(h)
Ansonsten Danke!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 11. Januar 2006, 18:17

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
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Donnerstag 12. Januar 2006, 22:10

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!
mfg

Thomas :-)
BlackJack

Donnerstag 12. Januar 2006, 23:50

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()))
Gast

Freitag 13. Januar 2006, 00:01

Ja ich meinte int und nicht float.

Danke!Ich werde es mal ausprobieren!
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Freitag 13. Januar 2006, 15:32

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!
mfg

Thomas :-)
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 13. Januar 2006, 15:33

dict anlegen und über die eingabe interieren...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten