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
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.