binäres Rätsel |
09.07.2009, 01:04 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
binäres Rätsel könnt ihr euch bitte einmal den binären Lindwurm im Anhang anschauen und mir sagen, was das sein könnte bzw. welcher Text dahinter steckt? Mein erster Gedanke war ASCII-Code, da in jeder Zeile 80 Bits stehen. Demnach wäre der erste 8er-Block ein P, der nächste ein K, dann der Code für Textende und Ende Übertrag. Aber dann weiß ich nicht mehr weiter, weil 27 Bits nur aus Nullen bestehen, und das macht ASCII-mäßig keinen Sinn. Auch alle anderen mir bekannten Binär-Codes haben keine so immense Häufung von Nullen. Diese Häufung kommt in den insgesamt 34 Zeilen mehrmals vor. Besten Dank schonmal und Gruß honeybye |
||||||||||||
09.07.2009, 08:57 | AD | Auf diesen Beitrag antworten » | ||||||||||
Ach ja, diese Geocacher ... Das ist ein ganz ordinärer ZIP-File, in dessem Inneren sich ein netter 8086-Assembler-Quellfile für ein MS-DOS-Programm (liebe Grüße aus der Steinzeit ) befindet, der dir wohl die nächste Position verraten soll... |
||||||||||||
09.07.2009, 19:17 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
binäres Rätsel Hallo Arthur, Du siehst mich ehrfürchtig erstaunt, darauf wäre ich niemals gekommen, besten Dank. Da ich leider kein Programmierer bin, ist mir der weitere Werdegang nicht klar. Komme ich so weiter: das file Rätsel.txt umbenenne ich einfach in z.B. Rätsel.zip und entpacke es. Dann müßte im Entpacker irgendwas stehen wie r*.bat, exe oder com. Das rufe ich einfach auf und erfahre den Text. Kommt das so hin? Viele Grüße honeybye |
||||||||||||
09.07.2009, 19:20 | AD | Auf diesen Beitrag antworten » | ||||||||||
Hast du denn schon den ZIP-File ausgepackt? Da steht eine Datei namens 80x86.asm drin. Dann wird's ja erst richtig spannend. |
||||||||||||
09.07.2009, 20:03 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
Leider habe ich davon so gut wie keine Ahnung. Wie oder womit soll ich denn das zip-file entpacken, wenn ich nur binäre Daten habe? Ich habe mir mal ein "richtiges" zip-file mit dem Editor angesehen, und es beginnt mit PK geschrieben in ASCII, umgewandelt in binär ist es 01010000. Muß ich jetzt alle binären Bytes händisch in ASCII übersetzen, dann diese Datei z.B. bbb.zip nennen, und beim entpacken erscheint diese Assembler-Datei? |
||||||||||||
09.07.2009, 20:04 | AD | Auf diesen Beitrag antworten » | ||||||||||
Das muss ja nicht händisch sein - schreib ein kleines Programm! Ich dachte, Geocacher sind beweglicher... |
||||||||||||
Anzeige | ||||||||||||
|
||||||||||||
09.07.2009, 20:17 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
Wie schon erwähnt bin ich kein Programmierer und habe von dieser Materie keine Ahnung. Da nutzt leider die ganze Beweglichkeit nix, wenn das erforderliche Wissen nicht vorhanden ist ;-) Nun gut, wenn es mit händisch übersetzen auch geht, nehme ich das gerne auf mich, auch wenn's ne Weile dauert. |
||||||||||||
10.07.2009, 14:12 | Gualtiero | Auf diesen Beitrag antworten » | ||||||||||
@Honeybye Zum Vergleichen: das habe ich herausbekommen, allerdings mit einem kleinen, schnell geschriebnenen Progrämmchen. Die Datei 80x86.asm kann ich hier nicht hochladen, deshalb nur der Inhalt. stack segment dw 128 dup(0) ends code segment start: mov ax, data mov ds, ax mov es, ax mov cx, 100b mov dx, 0 mov si, 03h mov ax, 117735O mov bx, 10h mx: div bx mov east_minutes[si], dl dec si loop mx mov si, 03h mov ax, 104644O mov cx, 100b my: div bx mov north_minutes[si], dl dec si loop my mov ax, 4c00h int 21h ends end start |
||||||||||||
10.07.2009, 14:40 | AD | Auf diesen Beitrag antworten » | ||||||||||
Wenn schon, dann bitte vollständig: Da fehlt der Anfang, das zugehörige Datensegment:
Das muss ein 40+Programmierer gewesen sein, der sowas gemeines verpacken konnte. Übrigens nützt auch das Kompilieren und reines Ausführen als DOS-Programm herzlich wenig: Die Ergebnisse werden zwar in den beiden enthaltenen Schleifen in den Variablen north_minutes und east_minutes abgelegt, aber nirgends brauchbar ausgegeben (auf Bildschirm oder in Datei). Nur mit einem Debugger oder durch "Nachvollziehen" der Rechnung bekommt man die Resultate - ich empfehle den zweiten Weg. |
||||||||||||
10.07.2009, 17:40 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
Hallo Gualtiero, hallo Arthur, wow, besten Dank für die Übersetzung. Meine bisherigen Versuche, die Binärdaten in ASCII zu überführen und dann zu entzippen, waren leider erfolglos; angeblich war immer das zip-file defekt. Die Frage für mich als Laie ist, wie mache ich weiter? Wenn ich Arthur richtig verstehe, kann ich das asm-file mit einem Debugger dazu bewegen, die Koordinaten auszugeben. Wenn ich mich recht erinnere, gab's bei den MSDOS-Versionen den debug- Befehl. Ich werde meine alten MSDOS5-Disketten mal auskramen und probieren, wie weit ich komme. Die Rechnung nachvollziehen kann ich mangels des erforderlichenWissens sicher nicht, aber ich werde versuchen die Assemblerbefehle zu verstehen. Vielleicht hilft mir das auch ein wenig weiter. Besten Dank nochmal an euch beide und viele Grüße honeybye |
||||||||||||
10.07.2009, 17:47 | AD | Auf diesen Beitrag antworten » | ||||||||||
Wenn man's einmal hat, ist es gar nicht so schwer. Kernstück sind die beiden Schleifen
die beide jeweils 100b = 4-mal durchlaufen werden. Die Suffixe hinter den Zahlen im Assemblercode verrate ich mal noch, dann lasse ich dich allein rätseln - viel Spaß mit dem Prozessor 8086, dessen Urenkel heute immer noch die PC-Landschaft dominieren. b ... binär (Basis 2) O ... oktal (Basis 8) h ... hexadezimal (Basis 16) ohne Suffix ... dezimal (Basis 10, also "normal") |
||||||||||||
10.07.2009, 22:32 | Gualtiero | Auf diesen Beitrag antworten » | ||||||||||
RE: binäres Rätsel
Sorry, ich Doofkopp hab beim Markieren nicht bis an den Dateianfang gescrollt. |
||||||||||||
11.07.2009, 12:41 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
Das asm-file habe ich nun in einen 8086-Emulator geladern und im debug-mode single-step ablaufen lassen. Leider wurden dabei die Inhalte der beiden Variablen north- und east-minutes nicht angezeigt. Dann habe ich versucht die Assemblerbefehle zu übersetzen und zu verstehen, aber das hat mir auch nicht weitergeholfen. Es werden zwar verschiedene Hex- und Dez-werte in verschiedene Register geschrieben, aber was sagt das dem Laien? Meine rechnerischen Versuche (z.B. 1177350/4) ergaben natürlich auch nur Müll. Als letztes habe ich das Programm versucht mit im web gefundenen Codeschnipseln so umzuschreiben, das die Ergebnisse der beiden Variablen am Bildschirm ausgegeben werden: nach Zeile loop,my mov bx,1 Ausgabe am Bildschirm mov dx, offset north_minutes Inhalt der Variablen anzeigen mov ah,40 Zeichen ausgeben mov ax,4c00h Programm beenden int 21,h Natürlich funktionierte das auch nicht. Welche Befehle müßte ich denn eingeben, daß nach dem compilieren des asm-files die Ergebnisse am Bildschirm im DOS-Mode angezeigt werden? |
||||||||||||
11.07.2009, 12:48 | AD | Auf diesen Beitrag antworten » | ||||||||||
Das Problem ist, dass die Werte, die in die Felder eingetragen werden, keine ASCII-Codes sind, sondern nur Werte zwischen 00h ... 0Fh - das sind keine druckbaren Zeichen. Der Autor des ASM-Files ist wirklich ziemlich fies. |
||||||||||||
11.07.2009, 15:09 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
Es ist zum Mäusemelken, in den Datenfeldern stehen nur Nullen. Bei der Umwandlung in ein bin-file steht in Zeile 35 für Nord 0000: 00 00 00 00, in Zeile 36 für Ost dasselbe. Wenn auch die ASCII-Zeichen 0 - 0Fh nicht druckbar sind, sichtbar am Bildfschirm müßten sie doch sein. |
||||||||||||
11.07.2009, 15:34 | AD | Auf diesen Beitrag antworten » | ||||||||||
Du nimmst mich allzu wörtlich: Mit "druckbar" meine ich nicht nur auf Papier, sondern auch auf den Bildschirm. Was soll's, des Rätsels Lösung (?): Es ist 117735O = 9FDDh und 104644O = 89A4h, und genau diese Hexziffern werden durch diese Divisionsschleifen dann in die Variablen eingetragen, wo dann im Endeffekt folgendes steht
Damit bin ich am Ende - inwieweit das nun geografische Koordinaten sind, vermag ich nicht zu erkennen, das ist dann wirklich dein Part. |
||||||||||||
11.07.2009, 20:57 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
danke, Arthur, das hilft mir schon mal sehr weiter. Koordinaten sind das ganz sicher nicht; vermutlich ist noch irgendwo eine Gemeinheit eingebaut. Man muß sicher noch irgendwie umrechnen. Noch eine Frage: was hat es mit dem stack-segment in diesem file auf sich? Warum wird da ein word definiert (dw), das aus 128 Nullen besteht? |
||||||||||||
11.07.2009, 23:31 | AD | Auf diesen Beitrag antworten » | ||||||||||
Dann willst du wohl doch noch Programmieren lernen. Sinn und Zweck eines Programmierstacks |
||||||||||||
12.07.2009, 12:24 | Honeybye | Auf diesen Beitrag antworten » | ||||||||||
Nee, programmieren will ich nicht lernen, ich bleibe schon bei meinem Leisten. Mir würde es schon reichen, nur DIESES Assemblerfile zu verstehen und Deine Schritte nachvollziehen zu können. Aber das wird wohl nicht so einfach sein, weil mir ja jegliches Grundwissen fehlt. Jedenfalls werde ich mir noch einige webseiten zu diesem Thema ansehen; vielleicht checke ich's ja doch noch. |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
Die Neuesten » |
|