- -+-++ SUICIDE HACK ++-+- - Interner Aufbau der Texte aus dem Diskmag Suicide Issue #1 bis #11 -----------+----+--+-++-+++-++++++++++-+++-++-+--+----+----------- - -+-++ Mad/OS ++-+- - Diese Dokumentation ist entstanden, als ich verzweifelt versucht habe, einen Text aus dem Suicide zu drucken. Kurz gesagt: Das geht nicht! Also setzte ich mich hin und zerlegte die einzelnen Dateien. Das Ergebnis kann hier in Textform nachgeschlagen werden. Die im Suicide Issue #1 enthaltenen Texte sind folgendermaáen codiert: Offset L„nge Beschreibung 00 18 Signatur "SUICIDE TEXT-FILE" sowie das Zeichen 1Ah 18 1 Versionsnummer 01h 19 1 Typ der folgenden Daten (normalerweise 00h fr einfachen Text) 20 n Daten Die ersten 18 Bytes sind bei jeder Datei gleich. Sie dienen lediglich dazu, eine gltige Datei zu erkennen. Das Zeichen "1A" hat dabei eine besondere Bedeutung, da es in Textdateien zum Markieren des Dateiendes verwendet wird. Versucht man z.B. mit dem Befehl TYPE einen Suicide-Text anzuzeigen, so wird die Ausgabe nach der Signatur abgebrochen. Dies ist durchaus sinnvoll und beabsichtigt. Je nach Versionsnummer sind der Text und die darin enthaltenen Bilder anders codiert. Ich werde jede Version getrennt beschreiben, da sie sich teilweise sehr stark unterscheiden. Wenn die Typmarkierung bei Offset 19 den Wert 00h zeigt, so enth„lt die Datei nur einen einfachen Text, der sehr simpel verschlsselt ist. Jedes Byte wird um 128 erh”ht oder verkleinert, je nachdem. In Basic l„át sich das z.B. mit der Formel ((Byte+128) mod 256) ausdrcken. Zeilenumbrche sind als ein einzelnes Byte 13h abgespeichert. Wenn die Datei ein Bild enth„lt, dann gilt ein erweiterter Dateiaufbau: Offset L„nge Beschreibung 19 1 Typ 01h fr ein nun folgendes Bild 20 2 L„nge der folgenden PCX-Daten in Byte 22 n Ein ganz normales PCX-Bild mit 16 Farben inclusive Header n n Text Der Text ist wiederum einfach verschlsselt. Zus„tzlich enth„lt er an einer beliebigen Stelle vier besondere Bytes mit den Werten 70 81 70 8Ah (oder in entschlsselter Form AE 01h AE 04h). An dieser Stelle wird sp„ter das Bild eingefgt. Manchmal gibt es auch Dateien, die als Typ den Wert 03h oder 09h enthalten. Vermutlich handelt es sich dabei um eine spezielle Textsorte mit mehreren integrierten Bildern. ------------------------------------------------------------------------------ Fr das Suicide Issue #9 wurde der Dateiaufbau geringfgig ver„ndert. Auf die Versionsnummer 02h folgt nun vor dem eigentlichen Text ein Titel, der im Diskmag an Stelle des Dateinamens angezeigt wird. Offset L„nge Beschreibung 00 18 Signatur "SUICIDE TEXT-FILE" sowie das Zeichen 1Ah 18 1 Versionsnummer 02h 19 1 L„nge des Titels (Zahl von Null bis maximal 40) 20 40 Titel (berz„hlige Bytes enthalten undefinierte Zeichen) 60 1 Typ der folgenden Daten (normalerweise 00h fr Textdaten) 61 n Daten Die Typmarkierung bei Offset 60 enth„lt normalerweise den Wert 00h. Darauf folgt eine beliebige Anzahl Text, der erst am Dateiende endet. Der Text selbst ist sehr einfach verschlsselt. Von jedem ASCII-Wert werden 128 abgezogen bzw. addiert. So ergibt beispielsweise das Leerzeichen den Wert 160, aus einem A wird der Wert 193 und aus einem á wird der Wert 97. Zeilenumbrche werden durch ein einzelnes "Return" markiert, das verschlsselt als Zeichen 141 er- scheint. Wenn jedoch beim Offset 60 der Wert 01h erscheint, so folgt vor dem Text ein normales PCX-Bild mit 16 Farben. Offset L„nge Beschreibung 60 1 Typ 01h fr ein nun folgendes PCX-Bild 61 2 L„nge der folgenden PCX-Datei in Byte 63 n ein ganz normales PCX-Bild mit 16 Farben n n Text Der Text enth„lt auáerdem an einer beliebigen Stelle (oft gleich am Anfang) vier Bytes mit den Werten 70 81 70 8Ah. Diese dienen als Platzhalter fr die Stelle, an der das Bild eingefgt wird. Das Suicide Issue #9 enth„lt insgesamt sieben Texte mit integrierten Bildern: ASM95.SUI, DBASE.SUI, GEBABBEL.SUI, OCR.SUI, PANTASIE.SUI, SIMON2.SUI und TURBKURS.SUI ------------------------------------------------------------------------------ Die Textversion 03h wird ausschlieálich beim Suicide Issue #10 und #11 verwendet. Der Sinn dieser Žnderung ist mir nicht ganz klar, vermutlich hat es etwas mit der Decodierungs-Geschwindigkeit zu tun. Offset L„nge Beschreibung 00 18 Signatur "SUICIDE TEXT-FILE" sowie das Zeichen 1Ah 18 1 Versionsnummer 03h 19 2 Zwei Nullbytes 21 40 Irgendwelcher Schrott (kann ignoriert werden) 61 1 Ein Nullbyte 62 n Textdaten Die Textdaten sind „hnlich simpel kodiert wie bei der letzten Version. Auch hier muá zu jedem Byte der Betrag 128 addiert oder subtrahiert werden. Nur die Zeilenumbrche werden anders gespeichert. Das ASCII-Zeichen 20 (kodiert als 94h) muá in Leerzeichen umgewandelt werden. Nach genau 80 Zeichen sollte ein Zeilenumbruch erfolgen. Man kann immer gleich 80 Zeichen aus der Datei lesen und umwandeln. Das letzte Zeichen in einer solchen Zeile ist immer ein Leer- zeichen - nach der letzten Zeile folgen keine weiteren Daten. Eine weitere Žnderung: S„mtliche Umlaute sind im ANSI-Format (Windows) gespei- chert. Suicide Issue #10 enth„lt kein einziges Bild. Das Suicide Issue #11 enth„lt wieder sechs Texte mit Bildern: atomtest.sui, descent2.sui, dinfo2.sui, hexen.sui, italien.sui und telekom.sui ------------------------------------------------------------------------------ Das Suicide Issue #12 ist die einzige Ausgabe, in der die Textdateien nach Version 4 codiert sind. Mir ist es bisher nicht gelungen, die eigentliche Textverschlsselung zu durchschauen. Aber ich arbeite daran. Der Header besitzt in etwa folgenden Aufbau: Offset L„nge Beschreibung 00 18 Signatur "SUICIDE TEXT-FILE" sowie das Zeichen 1Ah 18 1 Versionsnummer 04h 19 1 00h 20 1 Beim Text Adressen.Sui steht hier 0Fh, bei allen anderen 00h ------------------------------------------------------------------------------ Die letzte Ausgabe Suicide Issue #13 verwendet wiederum eine anders kodierte Textverschlsselung mit der Versionsnummer 5. Diese weist vermutlich keine groáen Unterschiede zur Version 4 auf. Scheinbar wird eine Art Zufallszahlen- generator verwendet, oder die einzelnen Zeichen werden miteinander verrechnet. An der Dekodierung arbeite ich noch. - -+-++ Mad/OS ++-+- - - -+-++ Dezember 1998 ++-+- -