Ergebnis 1 bis 5 von 5

Thema: [DugJC] - 01 - dirty outer space C Hack

  1. #1
    Moderator
    Nothing is unbreakable!

    Registriert seit
    Jul 2003
    Beiträge
    622
    Renommee
    819

    [DugJC] - 01 - dirty outer space C Hack

    Hallo und herzlich Willkommen zur ersten Aufgabe der ersten "Die übers ganze Jahr Challenge"!

    Ich habe gerade folgenden Brief erhalten http://130.83.152.138/dugJC/dugJC01.jpg

    *Beginn Secret Master Message*
    Ni43Mjc5OTE5NTY0NTU0NjhlKzE5OSAzLjI5NDU1MjYwNTM1ND I5OWUrMTgwIDIuOTgyODI5NjEy
    NDgxMjQ2ZS0wMwo=
    *Ende Secret Master Message*

    Zweite Aufgabe
    ===========

    Wer die erste Aufgabe erfolgreich gelöst hat, kann sich gerne einmal an der aller ersten Nachricht versuchen, die empfangen wurde.

    8765776.478827897e+114, 276790144.7961622e-157

    Leider ist die Nachricht korrupt. Der Dezimalpunkt ist verrückt und der Exponent stimmt auch nicht mehr. Bruteforce?
    Dann hättet ihr schlappe 17*228 * 17 * 315 = 20755980 Möglichkeiten (bitte nachrechnen!)
    Denkt man etwas weiter, kommt man auf 71820 Möglichkeiten.
    Schaut man noch genauer hin, kommt man nur auf eine Möglichkeit.
    Und wenn man weiss, wo die Antwort steht, hat man sogar nur eine Antwort.

    Was haben uns die Aliens also so als aller erste Nachricht wohl geschickt?

    Viel Spaß

    Zusatzaufgabe
    ===========

    Wer den Klartext nun endlich hat, der sieht unter Umständen ein paar Fehler in ihm. Der Text war vor dem codieren aber fehlerfrei. Woran könnte das liegen?

    Punkteverteilung
    ============

    1. Aufgabe:
    Erkennen wie die Nachricht "codiert" wurde. 2 Punkte
    Compilierbares Programm. 2 Punkte
    keine Warnungen beim Compilieren und Kommentare im Code. 1 Punkt
    Klartext 2 Punkte

    2. Aufgabe 2 Punkte

    Zusatzaufgabe 1 Punkt
    Nur ein Punkt weil ich mir selbst nicht so 100% sicher bin. Und auch nicht, ob der "Fehler" bei euch auch auftritt.

    Abgabe
    ======

    Die Abgabe erfolg per PM an mich in spätestens 4 Wochen. Das ist also die Nacht vom 28.2 zum 1.3. In die Abgabe gehören ein kleiner Text was das für ein krankes Zeug ist. Das Programm, Quelltext, Klartexte. Sonstige Infos damit ich nachvollziehen kann, was ihr getan habt. Kommentare...

    Fragen
    =====

    Fragen?

    Tipp
    ===

    Ihr sollt kein base64 decoder schreiben
    Geändert von retak (01.02.2011 um 12:10 Uhr)

  2. #2
    Registered User
    Registriert seit
    May 2002
    Beiträge
    27
    Renommee
    66

    Re: [DugJC] - 01 - dirty outer space C Hack

    Nsfw :>
    oder so... ;)

  3. #3
    Moderator
    Nothing is unbreakable!

    Registriert seit
    Jul 2003
    Beiträge
    622
    Renommee
    819

    Re: [DugJC] - 01 - dirty outer space C Hack

    Ja das tut mir leid. Will nicht, dass da irgendjemand in eine unangenehme Situation kommt!

    Aber wenn es das ist, was die Aliens uns mitteilen wollen... dann sollten sich die Menschen mal Gedanken machen

  4. #4
    Registered User
    Registriert seit
    Oct 2007
    Beiträge
    246
    Renommee
    234

    Re: [DugJC] - 01 - dirty outer space C Hack

    Ich freu mich schon auf die Auflösung :P
    Dann ist jemand in Erklärungsnot ...

  5. #5
    Moderator
    Nothing is unbreakable!

    Registriert seit
    Jul 2003
    Beiträge
    622
    Renommee
    819

    Re: [DugJC] - 01 - dirty outer space C Hack

    Hallo,
    so die Zeit ist rum, dann wollen wir mal die Punkte vergeben.

    rec 10
    destructor 10
    Shakademus 7

    Herzlichen Glückwunsch! Das ist doch ein guter Start.

    Und nun zur Auflösung. Erstmal den base64 decodierer drüber laufen lassen. Heraus kamen folgende drei Zahlen
    6.727991956455468e+199, 3.294552605354299e+180, 2.982829612481246e-03
    Der eigentliche Gedankensprung den man machen musste war, die Bytes der double Variablen als chars zu interpretieren. Das konnte man auf verschiedene Art lösen. Hier meine Lösung:
    Code:
    #include <stdio.h>
    
    int main()
    {
    double a[] = { 6.727991956455468e+199, 3.294552605354299e+180, 2.982829612481246e-03};
      const char* s = (char*)&a;
      printf("%s\n", s);
    
      return 0;
    }
    Hier die Lösung von rec
    Code:
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    // geheime, codierte Nachricht
    double msg[3] = {6.727991956455468e+199, 3.294552605354299e+180, 2.982829612481246e-03};
    
    // Puffer für Nachrichtenteile (n*(sizeof double = 8) + Nullzeichen = )
    char buffer[sizeof(msg)+1];
    
    // Laufvariable
    int i = 0;
    
    for(i = 0; i < sizeof(msg)/sizeof(double); i++)
    {
    // Daten in den Puffer kopieren (8Byte), dabei das float in char casten)
    strncpy(buffer+i*sizeof(double), (char *)&msg[i], sizeof(double));
    
    // Puffer korrekt mit 0x00 abschließen
    buffer[sizeof(double)*(i+1)] = '\0';
    }
    
    // Ausgabe
    printf("%s\n", buffer);
    
    return (0);
    }
    Von destructor
    Code:
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(int argc, char** argv) {
      //print usage if the user didn't supply arguments
      if (argc == 1) {
        fprintf(stderr, "Usage %s double_values_to_'decrypt'\n", argv[0]);
        return EXIT_FAILURE;
      }
    
      //iterate over all arguments
      int i;
      for (i = 1; i < argc; i++) {
        //read in a double, and get it's long representation via a void pointer
        double d = atof(argv[i]);
        void* ptr = (double*) &d;
        long long l = *((long long*) ptr);
    
        //extract each byte from the long and print it as a char
        int j;
        for (j = 0; j < 8; j++) {
          printf("%c", (char) (l & 0xFF));
          l >>= 8;
        }
      }
      printf("\n");
    
      return EXIT_SUCCESS;
    }
    Und Shakademus
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    // convert double to string
    char* dtoa(double d) {
    	char* str = (char*)malloc(9);
    	memcpy(str, &d, 8);
    	str[9] = 0;
    	return str;
    }
    
    int main(void) {
    	printf("First message (base64decoded) is: %s\n", "6.727991956455468e+199 3.294552605354299e+180 2.982829612481246e-03");
    	printf("Encoded string is: %s%s%s\n", dtoa(6.727991956455468e+199), dtoa(3.294552605354299e+180), dtoa(2.982829612481246e-03));
    	
    /*	printf("Second message is: %s\n", "8765776.478827897e+114, 276790144.7961622e-157");
    	printf("Encoded string is: %s%s\n", dtoa(8765776.478827897e+114), dtoa(276790144.7961622e-157));*/
    	
    	printf("Small changes in the least significant bits of the first byte when encoding and decoding a message this way are encountered due to normalizations altering the data (see IEEE 754).\n");
    }
    Leuchschwein hat mir eine Perl Lösung gegeben, die aber leider nicht bewertet werden kann
    Code:
    perl -MMIME::Base64 -e'print pack"d*",split/\s/,decode_base64("Ni43Mjc5OTE5NTY0NTU0NjhlKzE5OSAzLjI5NDU1MjYwNTM1NDI5OWUrMTgwIDIuOTgyODI5NjEyNDgxMjQ2ZS0wMwo=");'
    Auch habe ich gehöhrt, dass man mit dem Programme Notepad++ sehr leicht dahinterkam.

    Als Klartext heraus kam dann
    Warum lifgtn hieq Stroh?
    Mit ein paar Fehler wie man leicht erkennen kann. Einfach gesagt, sind das einfach Rundungsfehler. Ich hätte noch 1-2 Nachkommastellen mehr angeben müssen, dann wär alles richtig.
    Also wenn ihr mal wieder zuviele Fehler in einer Deutscharbeit habt -> Rundungsfehler. Die sind immer da. Dagegen kann niemand etwas machen


    Die zweite Aufgabe war mit etwas Ruhe schnell zu lösen. Gegeben waren folgende zwei Zahlen.
    8765776.478827897e+114, 276790144.7961622e-157
    Erstmal sitzt der Dezimalpunkt nicht an der richtigen Stelle. Der ist immer hinter der ersten Ziffer gewesen. Und die Exponenten waren auch gegeben. 228 und 315. Wer die Aufgabe genau gelesen hat. Dem ist das aufgefallen

    Setzt man die Zahlen in das Programm ein, kommt ein einfaches
    hello world!
    heraus.
    Wie immer findet man Teilaufgaben der Challeng auch auf meinem Blog
    http://roboblog.fatal-fury.de/?p=358

    So, das wars. Hoffe ihr hattet Spaß. Bis zum nächsten mal!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Dirty Kuffar
    Von joradis im Forum Board Lounge
    Antworten: 8
    Letzter Beitrag: 04.09.2004, 19:56
  2. Sendkeys Space-Button
    Von jimk im Forum VisualBasic / VBScript
    Antworten: 1
    Letzter Beitrag: 08.09.2003, 14:05
  3. [game] escape-to-space
    Von Meine__Oma im Forum Good Sites & Services
    Antworten: 23
    Letzter Beitrag: 19.01.2003, 20:19
  4. Suche MySQL+PHP Space
    Von Netw0rkTrac3r im Forum Datenbanken
    Antworten: 10
    Letzter Beitrag: 22.12.2002, 02:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •