Challenge - Identifiziere den Hacker
Deine Aufgabe ist es, möglichst viele Informationen über einen Hacker zu finden, der in Terminal City
sein Unwesen treibt. Durch geschickte Kommandozeilenbefehle durchsuchst du große Datenmengen, um
einem Hacker auf die Spur zu kommen.
Der Abschnitt Vorbereitung hilft dir dabei, die Challenge zu starten und
zusätzlich gibt es einen Überblick über die wichtigsten
Kommandozeilenbefehle.
Die Datei „Bericht“ enthält den Bericht der Polizei über den Vorfall. Die relevanten Zeilen beginnen
mit dem Wort „WICHTIG“. Diese kannst du mit dem grep-Befehl auslesen.
Um eine Person zu befragen, musst du zunächst in der Datei „Personen“ nachschauen, in welcher Straße
sie wohnt.
Im Ordner „Straßen“ findest du die passende Datei. Durch die Befehle head und tail kannst du die
angegebene Zeile aus der Straßen-Datei auslesen. Dort befindet sich die Nummer des entsprechenden
Interviews, welches du im Ordner „Interviews“ findest.
Falls du bei deiner Suche nach dem Hacker auf Texte ohne Sinn triffst, suchst du an der falschen
Stelle.
Vorbereitung:
Alle Befehle die du für die Aufgabe brauchst, werden oft auf Linux-Systemen benutzt. Wenn du kein eigenes Linux zur Verfügung hast, kannst du zum Lösen der Aufgabe das folgende Webterminal benutzen, das ein Linux-System simuliert.
Anleitung für eigenes Linux System
Wenn du bereit bist und deine Linux-Konsole offen hast, solltest du als erstes die Daten, die Shellock gesammelt hat, von seinem Server runterladen:
[root@localhost ~]# wget https://terminal.challenge.saarland/files/shellock.zip
Wenn du diese runtergeladen hast, überprüfe ob die Daten nicht manipuliert werden, indem du prüfst ob
die richtige Checksumme
(293c439de0985f5a04307189bc2018355e040809fb354bb88e932207dd6bdd7f
) berechnet wird:
[root@localhost ~]# sha256sum shellock.zip
Danach kannst du sie entpacken:
[root@localhost ~]# unzip shellock.zip
Wenn du nun ls
tippst, siehst du den entpackten Ordner shellock und kannst in
diesen Ordner navigieren (change directory):
[root@localhost ~]# cd shellock
Jetzt bist du bereit mit Shellocks Hinweisen zu arbeiten. Die nötigen Befehle dafür sind im nächsten Abschnitt erklärt.
Nützliche Kommandozeilenbefehle
ls
Der Befehl steht für list und mit ihm zeigst du den Inhalt des Ordners an, in dem du dich gerade befindest.
[user@localhost:/challenge]$ ls
Bericht.txt Fahrzeuge.txt Interviews Mitgliedslisten Personen.txt Strassen cat_test grep_test long_test
In diesem Ordner ist zum Beispiel eine Datei mit dem Namen hello.c und ein Ordner namens dos.
cd
Der Befehl steht für change directory und mit ihm wechselst du in einen anderen Ordner:
[user@localhost:/challenge]$ cd shellock/
[[user@localhost:/challenge/shellock]$
Wenn du danach ls benutzt, siehst du den Inhalt des Ordners in den du gewechselt bist.
Um aus einem Ordner wieder rauszuwechseln, also in den Oberordner zu kommen benutzt man zwei Punkte.
[user@localhost:/challenge/shellock]$ cd ..
[user@localhost:/challenge]$
cat
Der Befehl steht für concatenate (zusammenfügen) und mit ihm kann man sich z.B. einfach den Inhalt einer Datei anzeigen lassen:
[user@localhost:/challenge]$ cat cat_test
This is a test for cat.
head
Den Befehl head nutzt man um sich die ersten paar Zeilen einer sehr großen Datei anzeigen zu lassen. Mit -n zeigt man eine bestimmte Anzahl an Zeilen an:
[user@localhost:/challenge]$ head -n 4 long_test
This is a long file.
With many
many
many
tail
Mit tail macht man das Gleiche für das Ende einer Datei, um sich die letzten Zeilen anzeigen zu lassen:
[user@localhost:/challenge]$ tail -n 4 long_test
many
many
lines.
It is really long.
grep
Mit grep kann man Dateien nach bestimmten Textstücken durchsuchen. Das gesuchte Wort gibt man
in Anführungstrichen an und dahinter die Datei in der man suchen möchte.
Wenn man statt der Datei einen Stern benutzt, sucht man in allen Dateien die sich im aktuellen
Ordner befinden (mit -r auch noch in allen Unterordnern).
Außerdem kann man sich statt der gefundenen Zeile auch nur die Namen der Dateien anzeigen, in denen
etwas gefunden wurde.
[user@localhost:/challenge]$ grep "really" grep_test
are really looking for.
really helpful
[user@localhost:/challenge]$ grep "really" *
grep_test:are really looking for.
grep_test:really helpful
long_test:It is really long.
[user@localhost:/challenge]$ grep "really" -l *
grep_test
long_test
So jetzt kennst du die Grundlagen. Weitergehende Hinweise und Beispiele kannst du dir in diesem PDF angucken.
Viel Erfolg!
Copyright (c) 2016 Shuanglei Tao
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.