Digitale Schnitzeljagt - IT KnowHow Challenge

Hallo zusammen,

Kürzlich hat uns David Schneider zur Ignite eine IT KnowHow Challenge gestellt. Ich habe daran Teilgenommen und viel Spass gehabt.

Der Start dieser Informatik Schnitzeljagt war ein QR Code, welche uns auf eine Webseite geführt hat. Erstmal nicht viel zu sehen...

Natürlich schaut man sich dann den Quelltext der Website an und da gibt es die nächsten Hinweise.

Es muss also erstmal das Passwort geknackt werden. Scheinen keine Hashes zu sein.

Die Suche nach ein paar römischen Anführern, spuckte Namen wie Nerva, Trajan, Hadrian, Antoninus Pius, Marcus Aurelius raus. Erst die Suche nach römischen Verschlüsselungsverfahren "roman cryptography" förderte die Caesar cipher zu tage

Das ist eine Verschiebung der Buchstaben um eine bestimmte Anzahl stellen. Habe ich auch schon mal in einer Software angewendet. Eines der bekanntesten Verfahren ist hier ROT13, bei dem die Buchstaben um 13 Stellen verschoben werden.

Das gibt es auch als Online Service https://rot13.com/

So nun haben wir also den Key und eine URL. Nun gilt es damit eine Azure Function aufzurufen. Wie man das macht, ist in untenstehendem Artikel von Microsoft beschrieben

Manually run a non HTTP-triggered function
https://docs.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http

Ich habe dazu ersmal den Postman genutzt

Es braucht also zwei Header
x-functions-key=yourKey
Content-Type=application/json

Das ganze muss als HTTP Post gesendet werden

Im Postman muss man noch ein JSON als Body mitgeben

"variable""value" }

Sieht schon mal gut aus, aber da wird noch ein Parameter verlangt. Parameter werden mit ?Parameter=value mitgegeben

Übrigens geht das auch mit PowerShell und der Invoke-RestMethod

$headers = @{
    'x-functions-key' = 'you have discovered the key'
}
$URL = "https://secreturl.azurewebsites.net/api/NextDoor"
Invoke-RestMethod -uri $URL -ContentType "application/json" -Headers $headers

Also mal den Parameter overlappinghands mitgeben

$headers = @{
    'x-functions-key' = 'you have discovered the key'
}
$URL = "https://secreturl.azurewebsites.net/api/NextDoor?overlappinghands=0"
Invoke-RestMethod -uri $URL -ContentType "application/json" -Headers $headers

Nun ja, ich gebe zu da hatte ich keine Ahnung. Aber Google wusste die Antwort :)

$headers = @{
    'x-functions-key' = 'you have discovered the key'
}
$URL = "https://secreturl.azurewebsites.net/api/NextDoor?overlappinghands=22"
Invoke-RestMethod -uri $URL -ContentType "application/json" -Headers $headers

Das war richtig und es gibt die nächste URL. Die habe ich mit dem Browser aufgerufen und einen Zeichensalat erhalten. Sieht irgendwie nach Base64 Encoding aus.

Ich versuche es mal mit einem Base64 Decoder https://www.base64decode.org/

Die ersten drei Buchstaben sind "PNG" was darauf hindeutet, dass es sich um eine Grafik im Portable Network Graphics Format handeln könnte

Nachdem der Base64 Code mit der Website in eine Datei umgewandelt wurde und als PNG abgespeichert wurde, konnte ich die Grafik sehen. Es handelt sich um einen "join code"

Ich dachte, das wäre bereits die Lösung. Aber warum den "join code" nicht in Teams ausprobieren.

Und tatsächlich. Mit dem Code konnte man einem Microsoft Teams in unserem Tenant beitreten. Ich war nicht der erste oder schnellste. Aber mit dem dritten Platz bei dieser Challenge bin ich ganz zufrieden.

Ich fand es spannend, den Hinweisen zu folgen. Es braucht ein bisschen Allgemeinwissen oder halt eben Google Recherchen. Dazu auch ein bisschen Erfahrung von Codierung und Decodierung und ein bisschen developer Kenntnissen. Ich bin kein vollblut Programmierer, habe aber schon ein bisschen Erfahrung mit dem Programmieren. Das hat sicher geholfen.

Grüsse
Andres Bohren