Seite 1 von 1

Decryption von Files

Verfasst: 11 Jun 2005, 14:18
von Snej
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

Verfasst: 11 Jun 2005, 15:06
von Snej
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.

Verfasst: 12 Jun 2005, 13:29
von Snej
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.

Verfasst: 12 Jun 2005, 16:54
von shadow the deat
:k: gut gemacht jetzt muss ich nur noch Zeit finden zum testen :erdbeerteechug:

Verfasst: 12 Jun 2005, 20:38
von Gunny
hm, tolle Sache das, aber mit ProEdit und den diversen Edt-Editoren krieg ich das einfacher und schneller hin,

Verfasst: 13 Jun 2005, 00:24
von Snej
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

Verfasst: 13 Jun 2005, 20:51
von shadow the deat
das in ne csv wär noch genialer
das würde allen weiter helfen denn damit könnte man auch bessere Editoren schaffen :D

Verfasst: 01 Jul 2005, 19:17
von Nitrat
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....