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

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

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

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

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

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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Folgendes,was du geschrieben hast geht net:

Code: Alles auswählen

h=hex(255)
d=float(h)
Ansonsten Danke!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

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

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

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

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

dict anlegen und über die eingabe interieren...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Python Master 47 hat geschrieben:Wie wähle ich jetzt P von Programm aus und multipliziere den ASCII Wert von P(P=erstes Zeichen aus Name) mit 666?
Wie wärs damit?

Code: Alles auswählen

name = 'Programm'
multiplied = [ord(ch) * 666 for ch in name]
und den ersten Buchstaben von name bekommst du mit

Code: Alles auswählen

name[0]
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Also:

1.Danke für eure Hilfreichen Antworten
2.Meine Frage in meinem letzten Beitrag hätte ich, wenn ich ein bischen mehr überlegt hätte, mir auch selber beantworten können.Aber ich hab nicht richtig nachgedacht und da ist mir nix eingefallen
3.Den Rest habe ich allein ohne Probleme hinbekommen. Ich zeigs euch mal zur Info:

Serialeingabe besteht wieder aus Name+Serialnummer
Serialberechnung:

1. ErsterWert = (erstes Zeichen aus Name) * 29Ah
2. ErsterWert = ErsterWert + ((Länge des Namens) * 38E8h)
3. ZweiterWert = (erstes Zeichen aus Name) * 38E8h
4. ZweiterWert = ZweiterWert * 7Bh
5. DritterWert = (Länge des Namens) * (erstes Zeichen aus Name)
6. DritterWert = DritterWert * 19D5h
7. DritterWert = DritterWert + 38E8h
8. Alle drei Werte durch ein "-" getrennt aneinanderhängen.

und hier mein Keygen:

Code: Alles auswählen

Name=raw_input('Name:')
Serial1=[ord(x) * 666 for x in Name]
Serial2=Serial1[0]+(len(Name)*14568)
Serial3=(Serial1[0]/666.0)*14568
Serial4=Serial3*123
Serial5=len(Name)*(Serial1[0]/666.0)
Serial6=Serial5*6613
Serial7=Serial6+14568
print 'Serial:', Serial2, '-', int(Serial4), '-', int(Serial7)
ihr fragt euch sicher warum anstatt dem hier:

Code: Alles auswählen

Serial1=Serial1[0]+(len(Name)*14568)
das hier dasteht

Code: Alles auswählen

Serial2=Serial1[0]+(len(Name)*14568)
Nun ja ich musste ja wieder auf Den ersten wert von Serial1 zugreifen, aber da Serial1 schon wieder in der neuen Serial1 Variable gespeichert wurde, konnte ich es nicht mehr aufrufen. Einfach 5 mal durchlesen dann versteht ihr es :lol: :lol: :lol:

Auch fragt ihr euch warum ich Serial3 und 5 in float umwandle und dann wieder in int. Naja ich musste wieder auf den ersten Buchstaben von Name zugreifen und da der erste Wert in Serial1[0] mit 666 multipliziert wurde hab ich einfach durch 666.0 dividiert um

a)ein genaues ergebniss zu erhalten
b)um den 1.Buchstaben von Name zu erhalten.

Auch hier wiede 5 mal durchlesen um es zu verstehen :lol: :lol: :lol:

Sicher hätte ich die beiden Sachen auch anders lösen können, aber das waren die beiden leichtesten und kürzesten Lösungen. Und ehrlich gesagt, wem interessiert bei einem Keygen der Quelltext!

Wenn Ihr aber Verbesserungsvorschläge oder Meinungen dazu zusagen habt, dann postet Sie einfach!

Noch einmal Big THX
mfg

Thomas :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und wenn du noch die Variablen klein schreibst und ein paar Leerzeichen zwischen den Operatoren einfügst wird es sicherlich lesbarer.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Python Master 47 hat geschrieben:Ich möchte keine genaue Anleitung haben, weil das illegal wäre
Noch ist es _nicht_ illegal. Das kann sich aber dank EU bald ändern.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

aha naja ich crack programme nicht um den Firmen zu schaden, sondern weil es spaßt macht, und auch sehr viel mit Intelligenz zu tun hat, serials zu berechnen, und auserdem, steigere ich mit der Programmierung von Keygens auch noch meine Programmierkenntnisse, jedenfalls ein bischen!!
mfg

Thomas :-)
Antworten