*HOT* Packet Encryption - Decrypt/ReEncrypt HowTo

01/11/2005 19:12 Lowfyr#1
Click for quickjump for english translation:
[Only registered and activated users can see links. Click Here To Register...]5



all lvl2 epvp Members quitted playing Conquer Online, so we release our Packet Encryption Guide, I hope it is usefull for all AGH's out there

Urheberrechte und Copyright dieser Guide liegen bei elitepvpers.com

You will not use any information obtained from this guide for malicious purposes.
All information from this guide is for intellectual purposes only, and you are responsible for how you use it.

This guide may only be posted on the elitepvpers network, so if you see it anywhere else, please let me know about it.

Posted on: Nov 8 2004

Contact me for copy & paste permission
DO NOT PM ME, if you want to know how to make hacks with these informations


Update:

&#60;!--QuoteBegin--Ultima+--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (Ultima)</td></tr><tr><td id='QUOTE'>&#60;!--QuoteEBegin--> one month after the guide came out they made litle change in the firs packet you recive its now 32 bytes long not 28 like in the guide and for the key you have to start taking the keys now at the 5th position not the 4th thats all they won`t patch anything cause its most likeley to complex and they don`t even make money with conquer only with the dbs so i dont think the ll make anything[/QUOTE]

Guide zur Conqueronline packet Ver- und Entschlüsselung

Inhalt:

1. Die Schlüssel
a. Allgemein
b. Die beiden ersten Schlüssel
c. Erstellen des 3. und 4. Schlüssels

2. Entschlüsseln von Paketen
a. Die Zähler
b. Das entschlüsseln von Empfangenen Paketen
c. Das entschlüsseln von "vom Client gesendeten Paketen"

3. Das Ver- und Entschlüsseln als Server


Die Schlüssel

Allgemein

Es werden 4 Schlüssel für die Conquer Verschlüsselung benutzt. Eigentlich sind es nur zwei. Diese zwei werden jedoch, nach dem Anmelden am Login Server, durch 2, vom Server gesendete Schlüssel, Verschlüsselt und als neue Schlüssel für die ausgehenden Pakete benutzt. So entstehen 4 Schlüssel.

Die beiden ersten Schlüssel:

1. Schlüssel

Code:
9D 90 83 8A D1 8C E7 F6 25 28 EB 82 99 64 8F 2E
2D 40 D3 FA E1 BC B7 E6 B5 D8 3B F2 A9 94 5F 1E
BD F0 23 6A F1 EC 87 D6 45 88 8B 62 B9 C4 2F 0E
4D A0 73 DA 01 1C 57 C6 D5 38 DB D2 C9 F4 FF FE
DD 50 C3 4A 11 4C 27 B6 65 E8 2B 42 D9 24 CF EE
6D 00 13 BA 21 7C F7 A6 F5 98 7B B2 E9 54 9F DE
FD B0 63 2A 31 AC C7 96 85 48 CB 22 F9 84 6F CE
8D 60 B3 9A 41 DC 97 86 15 F8 1B 92 09 B4 3F BE
1D 10 03 0A 51 0C 67 76 A5 A8 6B 02 19 E4 0F AE
AD C0 53 7A 61 3C 37 66 35 58 BB 72 29 14 DF 9E
3D 70 A3 EA 71 6C 07 56 C5 08 0B E2 39 44 AF 8E
CD 20 F3 5A 81 9C D7 46 55 B8 5B 52 49 74 7F 7E
5D D0 43 CA 91 CC A7 36 E5 68 AB C2 59 A4 4F 6E
ED 80 93 3A A1 FC 77 26 75 18 FB 32 69 D4 1F 5E
7D 30 E3 AA B1 2C 47 16 05 C8 4B A2 79 04 EF 4E
0D E0 33 1A C1 5C 17 06 95 78 9B 12 89 34 BF 3E

2. Schlüssel

Code:
62 4F E8 15 DE EB 04 91 1A C7 E0 4D 16 E3 7C 49
D2 3F D8 85 4E DB F4 01 8A B7 D0 BD 86 D3 6C B9
42 2F C8 F5 BE CB E4 71 FA A7 C0 2D F6 C3 5C 29 
B2 1F B8 65 2E BB D4 E1 6A 97 B0 9D 66 B3 4C 99
22 0F A8 D5 9E AB C4 51 DA 87 A0 0D D6 A3 3C 09
92 FF 98 45 0E 9B B4 C1 4A 77 90 7D 46 93 2C 79
02 EF 88 B5 7E 8B A4 31 BA 67 80 ED B6 83 1C E9
72 DF 78 25 EE 7B 94 A1 2A 57 70 5D 26 73 0C 59
E2 CF 68 95 5E 6B 84 11 9A 47 60 CD 96 63 FC C9
52 BF 58 05 CE 5B 74 81 0A 37 50 3D 06 53 EC 39
C2 AF 48 75 3E 4B 64 F1 7A 27 40 AD 76 43 DC A9
32 9F 38 E5 AE 3B 54 61 EA 17 30 1D E6 33 CC 19
A2 8F 28 55 1E 2B 44 D1 5A 07 20 8D 56 23 BC 89
12 7F 18 C5 8E 1B 34 41 CA F7 10 FD C6 13 AC F9
82 6F 08 35 FE 0B 24 B1 3A E7 00 6D 36 03 9C 69
F2 5F F8 A5 6E FB 14 21 AA D7 F0 DD A6 F3 8C D9

Erstellen des 3. und 4. Schlüssels:

Den dritten und vierten Schlüssel erhält man indem man den ersten und zweiten Schlüssel, mit dem vom Server gesendeten Schlüsseln, Verschlüsselt.
Der Schlüssel dafür ist im ersten Packet das man nach dem Senden des Login Paketes erhält. Also genau das 2. Paket überhaupt.

Das Packet mit dem Schlüssel sieht wie folgt aus:

Code:
*** RECV - size&#58; 28
1C 00 1C 04 2E A6 44 00 F4 48 5C 20 36 34 2E 31 * * . ..¦D.ôH&#092; 64.1
35 31 2E 38 31 2E 32 30 34 00 00 00 * * * * * * * * * * 51.81.204...
Key im Empfangenen packet sind das 11. + 10. + 9. + 8. byte vom start aus.
Hier also: 20 5C 48 F4

Der 2. Key sind das 7. + 6. + 5. + 4. byte im packet.
Hier also: 00 44 A6 2E

Um nun den dritten und vierten Schlüssel zu erhalten muss folgendes getan werden

1. Man addiere Key 1 und 2 205C48F4 + 0044A62E = 20A0EF22
2. XOR Ergebnis aus 1. mit 4321 XOR 20A0EF22, 4321 = 20A0AC03
3. XOR Key 1 mit Ergebnis aus 2. XOR 205C48F4, 20A0AC03 = 00FCE4F7
4. IMUL Ergebnis 3 mit Ergebnis 3 IMUL FCE4F7, FCE4F7 = F9D39310E651
(Logische Multiplikation // Ergebnis nur 4 byte lang also 9310E651)

Um nun den 3. und 4. Schlüssel richtig zu erzeugen muss noch folgendes getan werden
Immer 4 byte des 1. Schlüssels mit dem Ergebnis aus 3. per XOR erzeugen also:

Die ersten 4 byte des 1. Schlüssels (verkehrt herum Original: 9D 90 83 8A):
8A 83 90 9D

Mit dem Ergebnis aus 3.
00 FC E4 F7

Das Ergebnis
8A 7F 74 6A

Das Ergebnis muss auch Falschrum gewertet werden. Also die ersten 4 byte des Schlüssels lauten nun:

6A 74 7F 8A

Das wiederholt man bis das erste Schlüssel komplett umgewandelt ist.

Den 2. Schlüssel muss man nach dem gleichen Muster umwandeln nur mit dem Unterschied das als schlüssel nicht das Ergebnis aus 3. benutzt wird sondern das aus 4.

Die ersten 4 byte des 2. Schlüssels (verkehrt herum Original: 62 4F E8 15):
15 E8 4F 62

Mit dem Ergebnis aus 4.
93 10 E6 51

Das Ergebnis
86 F8 A9 33
Das Ergebnis muss auch Falschrum gewertet werden. Also die ersten 4 byte des Schlüssels lauten nun:

33 A9 F8 86

Nun hat man den 3. und 4. Schlüssel die für das Versenden von Paketen benötigt werden.


Entschlüsseln von Paketen:

Die Zähler

Um die Verschlüsselten Pakete zu entschlüsseln benötigt man die vier 256 byte Schlüssel die ich eben vorgestellt habe.
Um Pakete zu entschlüsseln die man vom Server zugesandt bekommt braucht man den 1. und 2. Schlüssel. Für Pakete die der Client zum Server Sendet benötigt man den 3. und 4. Schlüssel.
Es muss zwischen Login und Spiele Server unterschieden werden. Nicht aber weil die art der Entschlüsselung unterschiedlich ist sondern weil es Insgesamt 4 Zähler gibt. 2 für die Gesendeten Pakete und 2 für die Empfangenen Pakete. Diese 4 Zähler werden zu beginn alle auf 00 gesetzt. Die Pakete werden immer byte weise ver- und entschlüsselt. Nach jedem byte das ver- oder entschlüsselt wird wird der entsprechend erste Zähler um 1 erhöht. Erreicht einer der ersten beiden Zähler FF und wird um 1 erhöht so wird dieser auf 00 gesetzt und der entsprechend 2. Zähler um 1 erhöht. Hat auch dieser den Wert FF und wird erhöht so werden beide Zähler auf 00 gesetzt.
Es gibt für Login und Spiele Server jeweils 4 Zähler.

Wofür man die Zähler eigentlich braucht? Wartet es ab das folgt nun.


Das Entschlüsseln von Empfangenen Paketen

So nun zum verschlüsseln an sich. Es läuft in 4 schritten ab.

Als Beispiel nehmen wir das Login Paket das der Client an den Login Server sendet.

Unverschlüsseltes Paket:
Code:
34 00 1B 04 54 65 73 74 54 65 73 74 00 00 00 00 00 00 00 00 51 15 EE 1B 19 45 2C 6E 5C 01 5C 41 56 25 F6 D7 45 61 67 6C 65 00 00 00 00 00 00 00 00 00 00 00
Verschlüsseltes Paket:
Code:
17 84 04 65 D5 13 C4 A5 9A 59 04 E2 14 CB 75 6F 5F 89 B0 22 86 17 18 52 47 54 FC 44 D2 D4 BD 78 33 D0 D0 56 C6 55 83 26 8F 05 35 AB 16 C1 7F 6D 59 87 BA 20
1. XOR von zu verschlüsselnden byte und dem X-ten byte des schlüssels (x = 1. Zähler)

XOR 34, 9D ---> A9

2. Das Ergebnis von eben wird mit dem N-ten byte des 2. schlüssels per XOR verschlüsselt
(N = 2. Zähler)

XOR A9, 62 ---> CB


3. Das Ergebnis wird nun umgedreht.

CB wird zu BC (CB -> BC)


4. Das Ergebnis von 3. wird nun per XOR mit AB verschlüsselt und fertig.

XOR ESI, 0AB ---> 17

Dies wird nun für das gesamte Paket wiederholt. Nach jedem byte das verschlüsselt wurde wird der erste Zähler erhöht. Nach 256 byte wird der 2. Zähler um 1 erhöht. Nach 65536 byte werden beide Zähler auf Null gesetzt und der Spaß fängt von vorne an. Nach dem Anmelden Am Login Server beginnt das Zählen bei 00 sobald die Kommunikation mit dem Spiele Server beginnt.

Das Entschlüsseln von ?Vom Client Gesendeten Paketen?

Um Pakete die der Client an den Server sendet entschlüsseln zu können muss dasselbe Verfahren angewendet werden wie zum Entschlüsseln von Empfangenen Paketen nur Andersrum.

Also:

1. XOR byte Packet, AB

2. E1 umkehren

3. XOR E2, 62

4. XOR E3, 9D

(E1, E2, E3 = Ergebnis von 1., 2. und 3.)


Ver- und Entschlüsselung als Server

Wenn wir einen Server aufsetzen wollen, müssen wir dieselben Ver- und Entschlüsselungsprozeduren benutzen wie für den Client jedoch jeweils andersrum. Die Schlüssel bleiben alle gleich. Jeder Spieler erhält vom Server einen Individuellen Schlüssel mit dem der Client seine Pakete verschlüsselt ehe er sie an den Server Sendet.
01/12/2005 03:35 wondersven#2
totally awesome.

I have one question though,

how did you learn to decrypt it? I am looking for a way to do this with other games.
01/12/2005 04:27 razorwolf#3
Yeah! Jetzt kann jemand einen HitHack programieren! wer kann programieren?
-------------------------------------------------------------
Yeah! Now we can program a HitHack! Who can write the program? =&#092;
--------------------------------------------------------------
Yeah! Ora possiamo programmare un HitHack! Chi può scrivere il programma?
---------------------------------------------------------------
Yeah ! Maintenant on peut un HitHack programer peut ! qui peut programmer ?
-----------------------------------------------------------
01/12/2005 04:28 razorwolf#4
Quote:
Originally posted by wondersven@Jan 12 2005, 03:35 AM
totally awesome.

I have one question though,

how did you learn to decrypt it? I am looking for a way to do this with other games.
Reverse engineering
01/12/2005 06:57 pietrosu#5
ya...sounds good....i didn't understand anything thou...lol....we can't wait for english versions
01/12/2005 09:09 wondersven#6
Quote:
Originally posted by razorwolf@Jan 12 2005, 04:28 AM

Reverse engineering
ya, I know that.

but what indicates the algorythm?
01/12/2005 19:10 razorwolf#7
Ich habe den source code von muhack. Vielleicht kann er ja umprogramiert werden?
=============================
I have the muhack source code -maybe it can be re-programmed?
01/12/2005 19:16 djpromo#8
Einsame Klasse was ihr da geleistet habt Jungs , respekt. Weiter so ;)
01/13/2005 15:31 Lowfyr#9
Quote:
Originally posted by wondersven@Jan 12 2005, 03:35 AM
totally awesome.

I have one question though,

how did you learn to decrypt it? I am looking for a way to do this with other games.
I don't wrote this guide, it's from another epvp member.

afaik he will be anonymous

Quote:
Ich habe den source code von muhack. Vielleicht kann er ja umprogramiert werden?
=============================
I have the muhack source code -maybe it can be re-programmed?
kannst die source ma uppen? würd mich mal interessieren :p

ansonsten pm mich an

Quote:
ya...sounds good....i didn't understand anything thou...lol....we can't wait for english versions
new status: 90% ;)
01/13/2005 15:34 pietrosu#10
k k...waiting...:)
01/13/2005 15:36 koji#11
ich krigs immer noch nich inen kopp was bringt son proggie ? bin ja kein uber 1337 hax0r oder so was deshalb versteh ich das auch nich ^^
01/13/2005 16:03 Lowfyr#12
um für online games hacks zu erstellen musst du meistens den "Datenstrom" zwischen Client und Server kontrollieren, sprich abändern.

Das Problem hierbei ist das die meisten Online Games den Datenstrom verschlüsseln, womit das abändern unmöglich gemacht wird.

Demnach muss man ein Programm erstellen das wie folgt vorgeht:

-decrypten der packets
-abändern der packets
-encrypten der packets
-weiterschicken

und das (wenn möglich) on the fly..

btw. ne encryption zu knacken finde ich persönlich ne ziemlich schwierige sache, da alles ziemlich individuell ausfallen kann, wenn du das packst hast dir den titel advanced game hacker verdient.
01/13/2005 17:22 razorwolf#13
den source code und binary kannste [Only registered and activated users can see links. Click Here To Register...]
runterladen. Die Routine 'GSOCKLIB' ist sehr interessant da hier packets
erzeugt werden koennen. Ich versuche nun C zu lernen, denke aber
das dies zeitlich kaum machbar ist. Ich weiss nicht wie lange er noch
dort sein wird da eine andere Gruppe nun die Weiterentwicklung ueber-
nommen hat.

Viel Spass

p.s. hoffe dass ich einen hit hack bekomme :D
01/14/2005 12:28 Ultima#14
Um packete unverschlüsselt lesen und abändern zu können muss man nicht die verschlüsselung geknackt haben. Wenn man nur soetwas will kann man auch das programm unterbrechen bevor es das packet verschlüsselt und dann es ändern und anschließend das programm fortsetzen.

Wenn du jedoch die verschlüsselung kennst kannst du eigene programme schreiben die packete schreiben und so nen kompletten client emulieren

sprich es ist möglich einen server emulator zu schreiben oder einen bot der viel besser ist als ein pixel bot wie sie hier im forum sind
01/14/2005 14:32 Lowfyr#15
finally the english translation is done, I know that there are some spelling errors, perhaps someone can fix this paper with proper english ^^