Der Knobelthread

Diskutiere Der Knobelthread im Smalltalk und Offtopic Forum im Bereich Community; Cliffhanger Cafe
Ziegenpeter

Ziegenpeter

Dabei seit
13.04.2019
Beiträge
1.421
Ort
In Baden, wo die Sonne lacht, über die Schwaben :)
Modell
R1250GS
Mit schweren Beinen und durstig oben angekommen sticht Achim sofort eine etwas heruntergekommener Kiosk, der sich selbstbewußt “Cliffhanger Cafe” nennt, ins Auge. Zielstrebig steuert er ihn an und bestellt sich erstmal eine eiskalte Dose Cola für 5$. Unter all den vielen Leuten, die den Gleitschirmfliegern zuschauen, findet er jedoch niemanden, den er sich als die gesuchte Dame vorstellen könnte.

84FE6F94-4AE2-4C9A-981E-272DF1AADF2B.jpeg
F84AA7A7-462B-407F-97AA-B8F843C6BC9E.jpeg


Es war ja auch kein Zeitpunkt ausgemacht oder in den Hinweisen enthalten. Vielleicht hat jemand eine Nachricht hinterlegt? Er fragt beim Kioskpersonal nach.

Oh, ok, you are Achim from Germany, wait a second, I think someone left something for you... ... .... .... ... ... ... ... yeah, here it is...

Er gibt Achim einen kleinen Memorystick.

Zum Glück hat Achim seinen Laptop im Rucksack und kann den Memorystick auslesen.
 
Zuletzt bearbeitet:
Ziegenpeter

Ziegenpeter

Dabei seit
13.04.2019
Beiträge
1.421
Ort
In Baden, wo die Sonne lacht, über die Schwaben :)
Modell
R1250GS
Achim hat den Memorystick ausgelesen und genau eine Datei gefunden, die ein Programm in einer seltsamen Programmiersprache enthält:
Code:
           ;Hint: ZX SPECTRUM, Z80"
CHAN_OPEN   equ  5633 ;open input
PRINT       equ  8252 ;print string

            org  0x5ccb

            ld   a, 2             
            call CHAN_OPEN 
            ld   ix, l7
            ld   iy, l8
 l6         ld   a, (ix)
            sub  a, 48
            jp   z, l1
            ld   a, 81
 l1         ld   (iy), a
            inc  ix
            ld   a, (ix)
            sub  a, 48
            ld   b, a
            jp   z, l3
            xor  a, a
 l4         add  a, 9
            dec  b
            jp   nz, l4
 l3         add  (iy)
            ld   (iy), a
            inc  ix
            ld   a, (ix)
            sub  a, 48
            add  a, (iy)
            jp   z, l5
            ld   (iy), a
            inc  ix
            inc  iy
            jp   l6
            
 l5         ld   de, l8
            ld   bc, l9-l8
            call PRINT
            halt   
 
 l7         defb "103136122123123"
            defb "122132035140132"
            defb "137035077136122"
            defb "126138117124035"
            defb "140131035054062"
            defb "064053053035118"
            defb "122126035073117"
            defb "138131117132000"
 l8         defs 39
 l9         defb 0
        org  0xff57
            defb 00h
 
Ziegenpeter

Ziegenpeter

Dabei seit
13.04.2019
Beiträge
1.421
Ort
In Baden, wo die Sonne lacht, über die Schwaben :)
Modell
R1250GS
Achim hat leider keinen ZX Spektrum zur Hand. Er überlegt seine Optionen. Er weiß, daß der ZX Spektrum eine Z80 CPU hatte und diese sehr populär war und selbst heute noch Verwendung findet und Unmengen an Dokumentation existiert.

Das Program scheint Assembler zu sein. Es sieht eigentlich nicht allzu kompliziert aus. Vielleicht kann man die Funktion einfach so grob erfassen und die Information manuell entlocken?

Vielleicht gibt es auch irgendwo versteckt einen Emulator, der das Programm ausführen könnte?

Vielleicht gibt es auch jemanden, der sich mit Programmierung auskennt und der weiterhelfen könnte?

Achim schaut sich das Program an und überlegt wo die gesuchte Information abgelegt sein könnte. Am Ende des Programmes scheinen sich Daten zu befinden. Die sind aber leider nicht auf Anhieb verständlich. Da es sich um ein sehr simples Program handelt, kann es aber keine komplexe Verschlüsselung sein.
 
Ziegenpeter

Ziegenpeter

Dabei seit
13.04.2019
Beiträge
1.421
Ort
In Baden, wo die Sonne lacht, über die Schwaben :)
Modell
R1250GS
Achim schaut sich die Daten genauer an. Er stellt fest, daß es 8 Reihen á 15 Ziffern sind. Kurz vor dem ‘HALT’ Befehl, der das Program wohl stoppt, findet er den Aufruf einer Subroutine ‘PRINT’. Diese ist nicht im Programm enthalten, muß also Teil des ZX Spektrum ROMs sein. Da dieses bestimmt Zeichen auf dem Bildschirm ausgibt, wird das Program also aus den Daten eine lesbare Zeichenfolge generieren.
 
Ziegenpeter

Ziegenpeter

Dabei seit
13.04.2019
Beiträge
1.421
Ort
In Baden, wo die Sonne lacht, über die Schwaben :)
Modell
R1250GS
Mein Gott, sie hätte doch auch einfach sagen können, dass sie mich gar nicht treffen will...
Achim ist etwas verärgert und überlegt ob er nicht vielleicht aufgeben will, aber dann packt ihn doch der Ehrgeiz. Er schickt das Programm an die WI Kollegen der FOM, bekommt aber nur Out Of Office Antworten.

Er schaut sich die Daten noch einmal genauer an. Sie sind in Anführungszeichen als String (Zeichenfolge) abgelegt. Zeichenfolgen werden im Speicher ASCII codiert abgelegt, jedem Zeichen (0, 1, 2, ... A, B, C, ... a, b, c, ...) entspricht genau ein ASCII code. Vielleicht sind die Daten ja eine Reihe von ASCII codes die Zeichen repräsentieren?

Ihm fällt auf, daß in jeder Reihe genau 15 Ziffern stehen. Es sind 8 Reihen á 15 Ziffern, insgesamt also 120 Ziffern, wobei die letzten 3 ‘0’ sind. Wenn das eine Markierung für das Ende der Nachricht wäre, dann würden die anderen 117 Ziffern die Nachricht beinhalten. 117 ist durch 3 teilbar, 15 ist durch 3 teilbar. Es erscheint ihm wahrscheinlich, daß die kleinste sinnvolle Informationseinheit also aus 3 Ziffern besteht.

Er nimmt also die 5 Tripel der ersten Spalte, 103 136 122 123 123 und schlägt diese in einer ASCII Tabelle nach. Irgendwie kommt dabei aber nichts sinnvolles heraus. Es muß noch eine zusätzliche Kodierung enthalten sein.

Jetzt schaut sich Achim nochmal das Programm genauer an. Ihm fallen seltsame Konstanten auf (9,81) ...
 
Thema:

Der Knobelthread

Oben