Decryption von Files

Von Fragen zum Editor über die Landschaftsgestaltung und das Einfügen komplexer Mechanismen, RPCs oder Ähnlichem bis zur kompletten Projektplanung ist hier alles willkommen, was mit der Veränderung von Ja 2 und UB zu tun hat...

Moderator: Flashy

Antworten
Snej
Kanonenfutter
Beiträge: 31
Registriert: 03 Jun 2003, 07:13

Decryption von Files

Beitrag von Snej » 11 Jun 2005, 14:18

Fangen wir mit etwas Einfachem an

Mit den Dateien aus MercEdt welche die gesprochenen Quotes der Söldner als Text enthalten

Wählen wir Barry als Beispiel mit 000.edt
Die Datei ist in Blöcke zu je 480 Bytes zu zerlegen (je 2 Bytes stehen für einen Buchstaben)
was also in einer maximalen Textlänge von 240 Zeichen entspricht.

Haben wir einen solchen Block in Byteform vorliegen reduzieren wir alle Bytes die größer sind als dezimal 32 (bzw. 33 - da dez. 33 beim encrypten auf 34 erhöht wurde) um 1.
Wir in Deutschland haben Glück das unsere Zeichen im ASCII Code auftauchen, so ist das zweite Byte in der Regel immer 0.

Beginnend mit dem ersten Byte braucht also nur jedes zweite Byte in eine Datei kopiert zu werden, bis wir beim Ende der 480 Bytes anlangen oder auf eine Doppel 0 (00 00 im Hex Editor) treffen.
In diesem Fall schreiben wir dezimal 13 und dezimal 10 in die Datei hinterher (als char) für einen Zeilenumbruch.

Im Beispiel erhalten wir: "Hab' Gesellschaft!"
Der Rest der 480 Bytes ist Datenmüll.

Dann folgt der nächste Block mit "Es gibt Ärger!" usw...

Ich hab mir so eine Übersicht in Excel erstellt, indem ich die entstandenen txt Dateien kopiert und eingefügt habe.

Zu beachten ist, das die Doppel 0 bei langen Texten nicht aufzutauchen braucht - der Text ist dann genau 240 Zeichen lang.
Zu beobachten bei

011 069
014 084 Fox
019 081
019 084 Spider
019 099
031 084 Scully
044 017
050 069
067 069.

Wer will kann nun noch in der ExcelTabelle Links zu den entsprechenden SoundFiles erstellen ca. 75*116 = 8700 Links ;)
Na gut etwas weniger da nicht alle Ziffernkombinationen mit Sprachfiles ausgestattet sind.
Trotzdem sollte man sich dazu entsprechendes in Visual Basic schreiben - oder man hat viel Zeit ;).

Viel Spaß

Snej

Snej
Kanonenfutter
Beiträge: 31
Registriert: 03 Jun 2003, 07:13

Beitrag von Snej » 11 Jun 2005, 15:06

Auf den ersten folgt der zweite Streich: prof.dat

Achtung: die Zuordnung des Structs MercProfileStruct zu den einzelnen Bytes ist noch nicht eindeutig geklärt (siehe auch den Thread MercProfileStruct im SOURCE FORUM).

Das Profil eines Söldners ist abgespeichert 716 Bytes groß.
Es gibt 170 Profile. (Das erste ist wieder das von Barry)

Decryption findet in diesen Blöcken zu 716 Bytes statt. (Also nicht das ganze File auf einmal)

Man braucht folgendes Array:

const int ROTATION_ARRAY_SIZE = 46;
unsigned char ubRotationArray[ROTATION_ARRAY_SIZE] =
{ 132, 235, 125, 99, 15, 220, 140, 89, 205, 132,
254, 144, 217, 78, 156, 58, 215, 76, 163, 187,
55, 49, 65, 48, 156, 140, 201, 68, 184, 13,
45, 69, 102, 185, 122, 225, 23, 250, 160, 220,
114, 240, 64, 175, 57, 233 };

Das Array kann man nun auf 716 Bytes vergrößern, indem man es immer wieder anneinander hängt oder einfacher wenn das Ende des Arrays erreicht ist das Array wieder von vorn durchlaufen.

Das erste Profil fängt mit
198 177 143 242 115 79... 4D A6 EC 70 8E 1E 4C 9A A4 DE
(das sind der Einfachheit halber dezimale Werte) an.
Wir "denken" uns das das letzte Zeichen vor dem Beginn 0 war.

Jetzt kommt die Decryption:

198_177_143_242_115__79...
132_235_125__99__15_220...
__0_198_177_143_242_115...

Die unteren beiden Zeilen werden von der oberen abgezogen. Danach wird solange 256 addiert bis wir einen Wert zwischen 0 und 255 haben. Was folgendes ergibt

_66___0__97___0_114___0...

also die dezimalen ASCII Codes der ersten 3 Buchstaben von Barrys Namen.

Have Fun

Snej

Edit: Die Encryption ist zwar der umgekehrte Prozeß allerdings ist bei Änderungen die eingebaute Checksumme zu beachten.

Snej
Kanonenfutter
Beiträge: 31
Registriert: 03 Jun 2003, 07:13

Beitrag von Snej » 12 Jun 2005, 13:29

Oops, da hab ich doch glatt beim Beitrag verfassen die 0 vor der 57 gelöscht.
Die bedeutete nämlich, das die Zahl als Oktalzahl zu lesen ist: 5*8+7=47.
Also bitte die vorletzte Zahl (57) im Array durch 47 ersetzen.

Auch haben sich jetzt die überschüssigen Bytes gefunden. Wenn man die Bytes von 0 bis 715 durchnumeriert so sind dies Bytes 241, 270, 271, 309, 407, 415, 539, 551 und 573.

shadow the deat
Alpha-Squad
Beiträge: 1593
Registriert: 01 Feb 2002, 19:22
Kontaktdaten:

Beitrag von shadow the deat » 12 Jun 2005, 16:54

:k: gut gemacht jetzt muss ich nur noch Zeit finden zum testen :erdbeerteechug:
:lhdevil: :uriel: Führer der SoS :lhdevil: (soldiers of shadow)

:lhdevil: Enominis Satanis :lhdevil:

Die Your God is Dead
Behold Satans Rise :hail:


(Action)Gamer für Gewalt und Terror :k:

Gunny
Evil Mod
Beiträge: 3028
Registriert: 01 Jul 2001, 17:08

Beitrag von Gunny » 12 Jun 2005, 20:38

hm, tolle Sache das, aber mit ProEdit und den diversen Edt-Editoren krieg ich das einfacher und schneller hin,
Ten thousand gobs lay down their swabs to fight one sick marine -
Ten thousand more stood up and swore,
'Twas the damndest fight they'd ever seen

Zivi-Animateur im RdGE

RIP Möhre

Snej
Kanonenfutter
Beiträge: 31
Registriert: 03 Jun 2003, 07:13

Beitrag von Snej » 13 Jun 2005, 00:24

Ich kann mich irren, aber ProEdit hat nur 15 statt 19 Felder für das Inventar und Opinions ändern (gehen übrigens nur bis 75) wär doch auch was Feines. :D

shadow the deat
Alpha-Squad
Beiträge: 1593
Registriert: 01 Feb 2002, 19:22
Kontaktdaten:

Beitrag von shadow the deat » 13 Jun 2005, 20:51

das in ne csv wär noch genialer
das würde allen weiter helfen denn damit könnte man auch bessere Editoren schaffen :D
:lhdevil: :uriel: Führer der SoS :lhdevil: (soldiers of shadow)

:lhdevil: Enominis Satanis :lhdevil:

Die Your God is Dead
Behold Satans Rise :hail:


(Action)Gamer für Gewalt und Terror :k:

Nitrat
Schrecken der Tyrannen
Beiträge: 19301
Registriert: 24 Jul 2000, 11:00

Beitrag von Nitrat » 01 Jul 2005, 19:17

falls überhaupt noch ein ExProgger sich an sowas wagt. Die szene rund um JA2 ist ausgeluscht !

PS: ich kann mit den ganzen informationen rein garnichts anfangen :keinpeil:
MFG....

Antworten