 wahrscheinlich gleich fertig zum loslegen und es los gehts. Hallo alle zusammen. Der nächste Talk ist wie Hacker einen MORPG zerlegen, eine Einführung wie man Protokolle und Programme zerlegt. Und ich würde mich bitten, unserem netten Gast hier Ringspringer zu applaudieren. Vielen Dank. Ich bin hier um über wie man ein MORPG grindet. Wenn ihr nicht wisst, was das ist, ich werde das gleich klären. Aber um noch mal kurz das Überblick zu halten, wer weiß nicht, was das ist, Hand hoch. Sehr cool. Okay, dann los gehts. Ich bin Ringspringer. Ich bin Entwickler und ich habe eine Webseite und könnt gerne vorbeischauen dort. Über was ich reden werde, ich werde euch kurz eine Einführung in Runes of Magic geben. Wer hat von diesem Spiel gehört? Hand hoch. Das sind sehr viele Leute, die ich erwartet habe. Aber ich wusste, dass es ein bisschen berühmt in Deutschland ist, aber man weiß nie. Ich werde das kurz anschneiden und dann euch erklären, warum es interessant ist, das Spiel anzuschauen und dann werde ich euch erklären, was meine Motivation daran ist. Und dann werden wir in den technischen Teil kommen, wie ich den Traffic aufzeichne und wie ich angefangen habe, ihn zuzulegen. Und ich habe auch ein paar Freunde, die mir geholfen haben und ich habe zu einem Anwalt geredet, weil es eine komische Zeit ist und ich wollte sicher sein, dass ich legal auf der Richtungszeit bin. Also erst mal möchte ich ein paar Leuten danken. Der erste Person wäre einer, der einen Blog über Runes of Magic schreibt. Er hat niemals irgendwas technisch rausgebracht, aber wenn ich irgendwie was... Okay, danke also an LuxTau. Der FDB 2 ist rektor, 2 ist ein Tool von... Ich bin froh, dass das so existiert. Der Grund, warum ich diese Rede hier halte ist, aufgrund des Vortrags auf den 31 C3 Cybernicromancy. Wenn Leute sich dafür interessieren, könnte ich da Beiträge zu leisten. Und das hier ist ein Protokoll-Vortrag, dann könnte ich zu beitragen. Dieses Spiel hier ist nicht trivial, genau. Wie gesagt, ich habe Juristen gesprochen, ein sehr netter Typ über Anno Engelfried. Er wird etwas über meine Fragen und seine Sicht der Dinge auf seinem Blog schreiben. Wenn... ja, also holländisch kannst du googeln und dann könnt ihr das finden. Nichts ist... Nichts ist komplett ohne OllyDBG. Ich weiß nicht. Wenn ihr von diesem Tool noch nichts gehört habt, dann solltet ihr dieses Tool ausprobieren. Das ist wirklich Limitar. Was ist also ein Massively Multiplayer Online Rogue-Hangin? Was ist... Was ist Basis-Bedeutung? Es ist ein Online-Spiel. Du hast einen Character. Und das ist normalerweise ein Fantasy-Thema mit Elf, mit Runen und so was weiß ich. Die meisten Spiele sind entweder bezahlt, monatlich oder so, oder sie sind eben, oder du kannst sie kostenlos spielen. Du kannst es umsonst spielen, aber du kannst Mikrotransaktionen betätigen, um irgendwelche Gegenstände zu erhalten. Du fährst das dein Charakter mit der Zeit, indem du Levels bekommst, indem du Gegenstände findest, indem du Quests vervollständigst, was dir auch wieder Levels gibt. Der Hauptgrund, für das Spiel zu spielen, ist, du willst noch mehr Content zu bekommen, weil ich das immer stärker werde. Und deine virtuelle Person soll interessant sein. Es gibt eine ganze Menge Teamplay. Du brauchst andere dafür. Du brauchst ein Team und brauchst eine größere Stufe von Freundschaft. Diese Spiele sind dazu da, deine Zeit zu verbrauchen. Sie wollen, dass du zurückkommst. Sie wollen, dass du es weiter spielst. Du kannst es, das machen, indem du spielst und du kannst es auch auf andere Autos, weil ich das schon zeige ich jetzt. Wie sieht das Spiel aus? Das Spiel sieht so aus, wenn ihr auf den Skinshot seht. Es ist Free to Play. Kannst du umsonst spielen? Man ist runterladen und einfach spielen. Das ist das, was ich getan habe. Egal. Es wurde ursprünglich von einem deutschen Entwickler programmiert worden. Du musst eine Sache, dass das Crime immer wieder und immer wieder tun. Die Tavernesen sind sehr konzentriert auf so was. Was das Spiel anbietet, ich werde euch hier eine kurze Übersicherung geben. Es hat drei Rassen, zehn Klassen und ein duales Klassensystem. Man kann verschiedene Sachen spielen, z.B. in den Zauberer Krieger und mit verschiedenen Kills. Das ist was, was ich echt interessant finde und was, was Spaß macht. Man kann dann so Sachen machen. Dann gibt es Rates, wo man als Team reingehen muss und das Ganze zusammen machen muss. Man muss mit den Items sehr interessant machen. Man kann alles bearbeiten, wie man will. Man hat Tiere, man hat ein Haus. Man kann alle möglichen Sachen machen. All diese Sachen sind in dem Protokoll. Ich habe mich gefragt, wie es funktioniert, um euch eine Idee zu geben, wie es funktioniert. Auf der linken Seite ist das, was man findet und auf der rechten Seite herstellen kann. Wenn man sich auf der linken Seite umschaut, kann man sich das anschauen. Man kann es anschauen, aber man kann es benutzen. Auf der rechten Seite kann man verbessern und dann benutzen. Wenn der Spiel richtig spielt, dann macht das einen großen Unterschied. Warum hatte ich vor, das jetzt zu machen aus Interesse? Das war mein erstes MMORPG, das ich gespielt habe. Ich habe sehr viel Zeit daran gesteckt. Dann habe ich mich gefragt, wie es funktioniert. Mein Computer gibt mir eine Ausführbare Datei mit 15 GB Dateien. Was macht das? Was schickt es raus? Was schickt es raus? Schickt es meine Konfiguration? Aber das ist immer etwas Interessantes zu klären. Wenn das Spiel aktiv ist, dann kann man fast allen Traffic durchschieben, man kann damit fast immer machen, was man will. Wenn man sich dazu entscheidet, das zu zerlegen, dann ist es leichter, das jetzt zu mandaten später. Ich wollte es einfach zerlegen. Das erste, was man machen muss, man muss die Pakete aufzeichnen. Ich habe mich gefragt, wie ich das mache, weil ich hatte keine Ahnung, was ich machen sollte. Ein paar Spiele haben so wie RootKids, damit sie feststellen können, was für einen Rahmen man hat. Ich wusste nicht, was sie schicken. Was ich vorhatte, ich nehme einen Rechner, schalte es inzwischen und zeichne es einfach auf. Man hat TCP-Packets und es schickt dann TCP-Flow. Du hast dann TCP-Damen, dass wenn du es aufgezeichnet hast, ich mag TCP nicht selber lesen. Was du tust, das sieht so wie das hier aus auf dem Screenshot. Du kannst das aus dem letzten Tag runterladen in eine Datei. Du möchtest einfach runterladen und speichern, was auf dem Netzwerk erscheint. Du kannst dann später immer noch entscheiden, was du dir anguckst und kannst es dann filtern. Wenn du jetzt TCP-Damp auf dieses Tab schon anguckst, dann bekommst du eben die Information, was da drunter läuft. Das sind die Daten, mit denen du arbeiten möchtest. Wenn ich mich in das Spiel einlogge, bekommst du seit etwas wie das hier auf dem Screenshot. Das sind ganz viele Daten. Das Wichtige, es sind eine ganze Menge Nullen da. Nullen, Nullen, Nullen über Nullen, das ist komisch. Was mit dem Kennwort ist, okay. Da sind immer noch viele Nullen, auch wenn ich ein komplexes Kennwort habe. Sehr interessant, super high tech, vielleicht irgendein komischer Verschlüsselungsalgorithmus. Guck mal, was dabei herauskommt. Die ersten vier bytes von dem Paket sind die Länge von dem Paket. Also 16 bytes. Okay, das sind also 14 bytes Inhalt. Ein kleiner Hinweis, es ist Little Indian. Die kennt hoffentlich Little Indian. Wenn du da noch weiter machst. Wir holen die ganzen Nullen raus, das interessiert euch nicht weiter. Das ist was, ich bekomme, wenn ich mich einlogge. Es sieht noch nicht sehr interessant aus. Dann habe ich mich mit 4 As und mit 4 Bs einlogge. Und schon haben sich die Nummer geändert. Wie du siehst, die Paketlänge, ich habe gedacht 14 ist halt die Paketlänge. Was du siehst, das verändert sich. Die anderen Pakete verändert sich auch ständig. Ich war nicht sicher, was jetzt. Ich kann mal eine qualifizierte Vermutung machen. Die Daten, die du da sehen kannst, sind ein Vielfaches von A. Wenn du das zweite Paket anguckst, das sind vielfaches von 21. Vielleicht einfach der Username. Wie man hier sieht, sind das ganze aufgefüllt mit Nullen. Wenn man damit weiter macht, sieht man, das kann nicht so schwer sein. Aber anstatt sich die eigene Verschlüssung anzugucken, was ich gemacht habe, das passt immer bei 50 und 60. Und es sieht nicht zufällig aus. Wenn man sich einfach nur der Unterschied anschaut, es überspringt immer nur 1 oder 2 oder 4 oder 7. Es ist nicht wirklich zufällig. Also rate ich einfach mal. Ich kenne MD5. Das ist 60 Bits. MD5 hat Hex-Digits. Und jetzt probieren wir das einfach mal mit MD5. Und wenn man den MD5-Fash von 5a, 4a, berechnet, erhält man das. Und F7 und F5, das ist der Unterschied zwischen, das ist der Unterschied von 3. Ich habe mir das einfach weitergeraten. Die vierte Zahl ist eine 4. Und die Zahl danach ist eine 3. Und es wiederholt sich. Und man wird sehen, dass das nächste siebendreien beinhaltet. Und dann sieht man die Teile F3 und F7. Und ich bin bei dem Punkt, wo ich mir ziemlich sehe, dass MD5 ist. Wenn man nicht weiß, wie es Verschlüsse ist, aber was wir wissen ist, dass der Unterschied zwischen den Bites immer dasselbe ist. Das bedeutet normalerweise, dass einfach krasse Kryptografie ist, aber natürlich, das ist es nicht. Wozu ich mich entschieden habe, am Anfang habe ich das einfach nur runtergeschrieben. Und am Anfang habe ich mich einfach noch ausgegangen, dass es zu MD5 geht. Und habe einfach geraten, der nächste Teil war dann, wie kommt er von F7 zu 3.7. Und wenn man einfach Bits runter schreibt, sieht man, oder habe ich festgestellt, dass nur die oberen Bits unterschiedlich sind. Also ich habe die Verschlüsselungserfahrungen nicht, um das zu knacken. Und dann nadiert man das, nimmt nicht so eine nadierte Zahl obendrauf. Und wenn das Wissen einfach nur anwendet, dann habe ich zurückbekommen. Ich habe einfach mal angenommen, das ist ein Schlüssel und ich habe es einfach nur hinzugefügt. Und wenn ich das dazu füge, den festen Wert, dann habe ich, bekomme ich das, was ich erwarte. Es ging jetzt ein bisschen schnell, ich wollte das jetzt mal aus dem Weg bekommen. Der interessante Teil daran ist, kannst du weit drüber nachdenken, über die Daten kannst du, du stellst fest, Daten sind nicht zufällig. Ja, okay, und damit konnte man das heratten. Okay, wenn du weißt, wie Kryptografie funktioniert, dann hast du jetzt schon mal so eine Idee, was du, wenn du jetzt die weiteren Daten runterlädst und die anguckst, wenn du jetzt daran guckst und wenn du immer die letzten vier Zahlen anguckst, die Zahlen folgen aufeinander und das geht immer so weiter. Also das heißt, das ist eine Sequenznummer. Das braucht man in TCP. Und die Nummer dafür, von 0 bis 9. Vielleicht ist das der Key-Value, also von einem Keypair. Die erste Zahl, die brauchen ist ff und dann bekommst du also den Key. Das ist wahrscheinlich alles. Was tun diese zwei Zahlen, was tun die halt? Ja, das ist halt nicht zufällig und was ich halt festgestellt habe, ich weiß zwar nichts. Also habe ich OLED, IBG und IDA gestartet und ein bisschen Kaffee und Geduld. Das sind Chexums im Herder- und Datenbereich. Das ist halt Chexum. Das ist so einfach, dass hätten wir beider selber machen können. Es ist ein Flag. Wenn es zwei ist, dann ist es verschlüsselt und wenn es eine andere Zahl ist, ist es der Schlüssel. Und dann habe ich gestärzt gestellt, es gibt ein Packet, die habe ich nicht wirklich verstanden. Das ist keine Payload. Das war also komisch. Aber irgendwie antwortet der Client. Das ist möglicherweise einfach nur ein Keeper-Live-Signal. Wenn man sich die Sequenznummer anguckt, vielleicht wollten die eigentlich ursprünglich mal UDP als Protokoll benutzen. UDP ist weil das Protokoll dazu war, aber sie schalten wahrscheinlich fest, UDP ist ziemlich schwer zu benutzen und um verlorene Daten wieder zu benutzen. Und sie haben also so eine Art Fake-TCP-Layer und haben versucht, dann doch wieder über TCP zu lenken. Von jetzt an werde ich jetzt den dicken Header und die Länge und die Flex und so weiter und den ganzen Eclipse-Stuff. Ich werde jetzt mal ignorieren. Jetzt weiß ich, ich habe es verstanden und jetzt gucke ich mal, was in den Daten selber dran ist. Wenn du jetzt anguckst, wenn du eine ganze Menge von dieser Daten vom Client zu uns selber bekommst. Das wird wohl sein, wir bewegen uns oder ein Disconnect oder so etwas. Ich vermute einfach mal qualifizierte Vermutung. Das hat bisher ganz gut funktioniert, also machen wir weiter so. Wenn du das machst, schlitzelfest, einige von den Nummern machten überhaupt keinen Sinn. Die sind Little Indian, was ich also gemacht habe. Ich habe es hier einfach als Floating Point Zahlen eingefügt. Wenn man jetzt Floating Point Zahlen nimmt, also Fließkommazahlen, wird es eine unsinnige Fließkommazahl werden. Oder vielleicht weiß ich es nicht, wenn du was nicht erkennst. Naja, das ist dann möglicherweise, wenn du es nicht erkennst, einfach eine Fließkommazahl, wenn es keinen Sinn macht. Nachdem ich also viel drauf geguckt habe, viel Kaffee getrunken habe. Danach habe ich dann also den Packet Header verstanden. Ich habe verschiedene Arten von Paketen verstanden. Ich habe viele Megabyte von Logs erzeugt. Ich habe versucht, den Lock-in-Prozess zu identifizieren. Wenn du aber mal den Packet Header verstehst, dann verstehst du auch den Header. Und du verstehst, dass einige Pakete ein Typ und ein Subtyp haben, einige Pakete. Das hat wohl damit zu tun, wie Pakete vielleicht innerhalb des Systems geroutet werden. Falls du mal mehr als einen Tag auf Hextumbs geguckt hast, das wird ein bisschen langweilig mit der Zeit. Also haben wir eben überlegt, na, machen wir da einfach ein Tool. Das ist also das, was ich knapp habe. Ich habe ein Tool erzeugt mit einem ROM-Dump. Es ist von TCP-Dump inspiriert, weil es eben Protokolle dampen kann. Als ich also tat, ich habe von TCP-Fleute die Textdatei genommen und holte den Header raus und re-assimpliert das Ganze. Und erzeugt, also die Definition des Paketes. Weil dann die Länge des Paketes wissen und weil die TCP dazu teniert, Zeug zu buffern. Weil das manchmal komplett oder eben nicht ganz komplett ist. Ich muss mich halt dran zu erinnern. Ganz viel länger machen, das ist ein bisschen blöd, also das Tool hilft hier. Die ganze Entschuldigung vorzunehmen und all das. Und das, was nachher dabei rauskommt, sieht das aus. Ich habe hier die Pakete. Und wenn du dir das oben anguckst, siehst du, dass das erste ein U42-Paket ist. Und das zweite ist ein Wert, den ich eher nenne. Und wenn du dir das auf der rechten Seite anguckst, bekommst du 04, 00004. Und dann kriegst du 65. Also was das Tool tut, ist, es nimmt das Paket. Es nimmt das Paket und addet irgendwie 65. Also wenn du irgendwelche nervige Verschlüsse hast. Dann weiß ich, dass ein Fehler nicht ein Fehler ist. Stattdessen kann ich einfach meinen Wissen damit reinstecken. Und bitte verarbeitet diese 200 MB von Daten für mich, um zu sehen, was kann ich daran finden. Und wenn ich immer feststellen, also wenn ich mal weiß, was der fällt für den Accountnummer. Und es passt so, das kann ich das einfach einsetzen und kann das ausschließen. Ich bitte euch, wenn ihr solche Sachen macht, baut es solche Tools. Also denkt drüber nach, das ist auf jeden Fall cool. Das ist sehr viel mehr Spaß damit. Und wie ich gesagt habe, solche Pakete können komisch sein. Es gibt einen kleinen, der schickt ein Paket zum Server. Und in diesem Paket ist dann ein kleineres Paket drin, was dann zum Beispiel eine Anweisung an den Server schickt, dass sich zum Beispiel Spiel benden will oder so was in der Art. Ich kann da natürlich Sachen einbauen, zum Beispiel in ein Passwort. Wenn sich das Ganze jetzt anguckt, ist es natürlich genau das selbe Paket, was ich vorhin geschickt habe, mit den Floating Point Sachen. Also das macht keinen Sinn, wenn man jetzt aber hergeht und sich eine Definition schreibt und man schreibt der Float rein und dann sieht und plötzlich Werte die Sinne geben, dann ist man sehr schnell, also da kriegt man die Grundidee des Protocols. Und dann hat man dieselbe Idee, die die Macher hatten. Ich hoffe, dass jetzt hier nicht über Netzwerksaukelstrukturen geblasen werden. Aber ich gucke, ob es hier irgendwelche Muster gibt, die man eben ausnutzen kann. Als ich dieses Tool entwickelte, machte ich einen großen Fehler. Ich verwendete das Zirklos-Los-Feders-Tool. Und ich habe dann Sporting gewechselt, damit es viel mehr Spaß bringt. Und der Grund, warum ich das sage, wenn du ein Tool hast, möchtest du Features hinzufügen. Du musst zuerst Stoff entschlüsseln. Aber nach einiger Zeit, du weißt, irgendwann hat ein Account immer 64 bytes. Und falls du weißt, das sind die 64 bytes. Du hast keinen Grund, anzunehmen, dass es irgendwas anderes ist. Du möchtest also Konstanten. Du möchtest auch Aufzählungen und was du also tun möchtest. Du möchtest auch noch Code-Sachen. Du möchtest das sehen. Du möchtest das nicht jedes Mal wieder nachgucken. Und du möchtest außerdem Struktur-Typen. Also ich brauche das auf jeden Fall in der Grund ist. Die Item-Struktur im Spiel ist ziemlich komplex. Da gibt es eine ganze Menge Stoff, was auf dem Bildschirm zu sehen ist. Das muss alles zu deinem Kleint. Weil alle Items genau dasselbe Format haben. Und weil Programmiere eben faul sind, haben alle eben dasselbe Format. Wenn du das herauslässt, dann möchtest du das überall benutzen. Du möchtest Struktur-Typen. Du brauchst eben Felder, Errays. Das sehen viele Daten, die zusammengehören. Der andere interessante Teil ist, du möchtest auch Support für der Transformation. Manchmal findest du einen Paket-Typ. Und der ist kompressed, also gepackt. Und weil es so viel ist, und du möchtest das herausfinden, möchtest in der Lage sein, deinem Dump-Tool erzählen können. Was was jetzt kommt, ist komprimiert mit folgenden Algorithmus. Wenn du es richtig implementierst, wenn du es richtig machst, wenn du es nicht erzählt machst, dann kannst du das eben machen. Und natürlich will man eine Notation. Was man dazu, Frau, wenn sich hier in dem Spiel einloggt, es sagt es, Hallo, du hast irgendeine Quest erfüllt. Okay, ich habe keine Ahnung, was die Quest 1, 2, 3, 4 ist. Okay, aber wie kann ich so was lernen? Auf der nächsten Folie werde ich euch zeigen, wie man so was angehen kann. Und man kann dann im Programm zeigen, okay, wenn du diese Nummer hast, dann sollst du das bitte im Protokoll nachschauen und das bitte auslesen, weil ich will das wirklich in Wert wissen und nicht einfach nur eine ID dazu. Und wie das Spiel funktioniert, bin ich gerade, also ich greife gerade Sachen vor. Alles, was nicht statisch ist in dem Objekt und die IDs der Objekte sind zufällig. Also nicht ganz zufällig, aber zufällig, man kann sie nicht berechnen. Also ich kann sie zumindest nicht berechnen. Was man macht, hey, ich würde, zeig mir bitte doch Objekt 1, 2, 3, 4, 5 und an irgendeinem Punkt und dann werde ich dir auf Objekt 2 sagen. Und was ist, was dann passiert? Okay, jedes Mal, wenn das Objekt die 2 sieht, wird es hergehen und ich die Tür zum Beispiel, die ich vorher erkannt habe, ersetzen. Okay, aber zuerst, das sind Questsamann und IDs, die ich vorhin schon erwähnt habe. Und eine Sache, die man verstehen muss und jedes Spiel und fast alles, was wir machen, hat Zahlen. Wenn da eine Datenbank ist, hat es IDs. Wenn man das hergeht und versucht, das inventar zu verstehen und dann kann man einfach Sachen anklicken in seinem Rucksack und man hat zum Beispiel den Trank und man will irgendwie rausfinden. Also man denkt, das muss eine Datenbank sein und ich würde jetzt gern wissen, woher kriegt ihr die. Also wenn man jetzt viel Google, dann gibt es viele Möglichkeiten wie man das Ganze in einem anderen Player anzeigen kann. Und die werden dann ein Modell davon sehen und eine Textnachricht. Und das benutzt dann dieselbe ID dafür. Und natürlich, Webseiten benutzt auch dieselbe ID. Was ich jetzt mich entschieden habe zu tun, war zuerst hergehen und man hat zuerst Daten rein gesteckt und dann hat es die internen Datenbankstrukturen rausgeschmissen. Und man kann interessante Sachen damit tun. Und ich habe mir natürlich wieder sehr viele Hexstumps angeguckt und es hilft sehr viel, wenn man eine Idee hat von dem Item, was man sich hier anschaut und man die ID des Items kennt. Und wenn man natürlich Hexstumpsupport hat, kann man sich den Hexstump ausgeben. Dann kann man alle Parakette jetzt durchsuchen, diese ID von dem Objekt, das man sucht, drin haben und dann kann man das sehr viel einfach benutzen. Und also... Jetzt dachte ich, mein Paket habe ich überhaupt keinen Pattern. Ich drücke dann solche Sachen aus und nehme in einem Bleistift und viel Kaffee und ein Nachmittag und dann gucke ich habe und ich mache mir Notizen und Ziellinien. Das macht tatisch normalerweise und das ist was ich besonders liebe. Aber was ich feststellte, da sind jetzt Daten, die sehen echt zufällig aus. Ich kann nichts, die identifizieren... oder irgendwelche Stücke, inventory Items. Also, das ist komprimiert. Ich dachte, ich muss meinen Olly DBG und was gucke, was das Protokoll macht. Und dann... und der, der das Protokoll sich interessiert. Und das Protokoll ist viel Geduld, um das zu desassembleen. Aber es bringt wirklich großen Spaß, ein komprimiertes Algorithmus zu entschliesseln. Problem ist noch, als ich das zum Beispiel 100 Kilobyte Daten hatte. 100 Kilobyte ist allerdings ziemlich viel. Mein erster Computer hatte nicht mehr so viel Speicher. Dann dachte ich so, ich brauche irgendwas, um das herauszufinden, wie ich jetzt hier weitermache. Ich weiß nicht genug über diese Daten. Erstmal, ich wollte meinen Teesam Dumber nicht weiter benutzen. Das ist ein verteiltes Spiel, für eine ganze Menge Backends. Wenn du in das Spiel guckst, du siehst, komm, mach mal einen Server dazu. Nein, nein, wenn du jetzt auf dem einen Server bist, musst du noch mal zu einem anderen Server gehen und guckst eine ganze Menge Starty gucken. Darum bin ich eigentlich nicht interessiert. Ich möchte das bis in eine Art und Weise auffangen. Ich weiß, wie das Protokoll funktioniert. Also progege ich mir einen Proxy. Dass dieses Tool jetzt tut, verbindet sich zu dem richtigen Server und es zeichnet alles auf in einem interessanten Format. Nee, das ist nicht der Server, den du kontaktieren sollst, sondern der hier. Also, es speichert die ganze Hand in Lockfalls. Und jedes Mal, wenn der Server versucht, das zu redirecten, sagt er, nee, mach das nicht und gibt die IP-Adress raus. Und der Server interessiert sich nicht für, er schaut nur, ob das eine echte IP-Adress ist. Und sagt okay. Also, das hat sich als Service sich rausgestellt, weil ich nicht auf meinem Computerspieler PC laufen lasse, sondern auf irgendeiner Linuxbox. Man konnte damit recht coole Sachen damit machen. Aber ich denke, ihr habt eine coole Idee, man kann Sachen damit einfach umleiten. Oder einfach Pakete umleiten, zum Beispiel, dass man gestorben ist und ich habe das Paket nicht bekommen. Natürlich habe ich es nicht versucht, aber das wäre ja böse. Also, ich habe jetzt dieses Programm, ich habe meine Lockfiles, aber es sind immer noch 400 kb von Daten. Und ich wollte gucken, was passiert, wenn es in Parkt ist. Und ich habe jetzt dieses Programm, was passiert, wenn es in Parkt ist. Und das kann ja recht groß sein, wenn es in Parkt. Ich war mir ziemlich sicher, dass viele Daten nicht relevant waren. Also, was ich gemacht habe, ich muss irgendwie die Daten bearbeiten. Ich muss irgendwie lernen, wie das Spiel darauf reagiert. Also, was ich dazu gemacht habe, ich habe mal wie was zusammengebastelt. Es funktioniert gut genug. Und ich hatte die Idee, wenn ich keine Ahnung habe, was ich mache und dann habe ich Pipen eingebaut, weil Pipen gut ist. Wenn ich jetzt einfach hier Broadcast und eine Area of Bites reinstecke, lasst das mal nicht machen, weil wir haben jetzt diese nette XML-Datei. Und wenn man dazu benutzen kann, Dateien rauszuspucken, kann man das auch benutzen, um welche zu erstellen. Und wie ich weitergemacht habe, wie bei all meinen Projekten, ich habe natürlich noch eine neue App geschrieben, in C++, weil Werli ist schon XML NC. Und das Programm schreibt source code packets, also packets, also C++-Klassen, die man einfach reinstecken kann und die man dann dem Server schicken kann. Also, man kann sagen, man soll folgendes Objekt erstellen, verschlüsseln und dann, und es erstellt natürlich die Pipen bitings. Also, man kann einfach in Pipens sagen, hey, ich hätte gern bitte schicken mir dieses Paket irgendwo dahin. Und das ist wirklich cool. Und das werdet ihr ja auch noch sehen. Ich habe jetzt dieses Paket vom, ich bin sicher, ich habe keine Ahnung, was es tut. Was man hiermit machen kann, ist, man kann das einfach zum Server schicken auf einen bestimmten Port, man kann es einfach nochmal kopieren. Und was passiert, man sieht dann gelben Text auf dem Bildschirm. Und man kann natürlich damit Sachen editieren und man kann natürlich andere Sachen tippen und schauen, was der Kleinen anzeigt. Man macht wirklich Spaß. Man kann zum Beispiel was einen tippen und man kann super schnell schauen, gucken, was passiert und man tut niemand weh. Weil die Games aber nicht wissen, was man tut und man das nur an einen eigenen Kleinen schickt. Aber natürlich gab es einen Haken. Aber wisst ihr was? Ich werde jetzt einfach gucken, was passiert, wenn ich das zum Kleinen schicke, die 400 kb und dann stütze ich Kleinen ab. Wenn ihr das Spiel gespielt habt, versteht ihr, dass das Spiel nicht so gut gebaut ist. Man könnte es deutlich verbessern. Aber also, was ich gemacht habe, ist, ich baue einfach Sleeps ein. Und das hat mich dann, und dann habe ich es geschafft, mich einzulocken und dann habe ich Sachen entfernt, wo ich gedacht habe, dass sie nicht wichtig sind. Und dann konnte ich mich einfach ins Game einlocken und meine Pakete schicken. Was ich euch jetzt zeigen werde, ist eine kleine Demo und betet mit mir zusammen, dass die Demo nicht crasht. Aber das Paket, was ich euch zeigen werde, wenn man einen Objekt erstellt und man ist ein Player-Charakter, dann kann man das bearbeiten. Und das Spiel-Initiation-Paket sagt einem, dass die Haare sehen so aus und der Bart ist dick. Und ich wusste, dass das Paket das tut, aber ich wusste jetzt nicht, was die Werte innen das tun. Es ist immer nach oben. Was ist ich jetzt zu? Ich starte mein Server. Auf dem Robben habe ich ihn genannt, weil ich nahm sowieso nicht gut erfinden kann. Auf dem Projekt ist es auch ziemlich beliebt. Ich habe das genommen. Dann habe ich username password. Ich hoffe, das funktioniert. Jetzt sehen könntest du, dass der Server startet, Sachen zu sehen. Da war mit dem Namen Solitude. Das ist ja kein Online-Spielmails, oder? Ablaus im Saal. Ich logge mich jetzt. Als früheres Engineer logge ich mich jetzt ein, dass das eben was macht. Ich logge den auf dem Backend. Ich will wissen, was passiert und nicht darüber reden, was die Pakete sind. Ich werde irgendwo einen Hinweis geben, wie das aussieht. Da haben wir jetzt das Spiel auf dem Screen. Da ich alles senden kann, was ich auch immer will, gelten Namen. So soll der Spieler aussehen. Jetzt summe ich mein Gesicht. Jetzt zeltet ich auf den Stoff. Variablen über die Netze. Ich setze eine ganze Menge Daten, die ich von irgendwo geklaut habe. Ich modifiziere die zuerst nicht. Jetzt seht. Nichts passiert. Das ist langweilig. Es gibt immer noch die Daten, wie zum Zeitbuch, wo ich den Charakter als Zeug habe. Jetzt gucke ich mal was. Guck ich mal irgendwelche anderen Daten. 0,55. Ich teste normalerweise extreme Werte. Wenn ich es 200 mache, dann 2,3. Das hilft immer. Ich bin einfach. Wie ihr sehen könnt, hat mein Charakter alle Seite Haare verloren. Applaus im Saal. Ich kann es also weitermachen. Ich habe es an der Werte. Auf einmal ist mein Bad. Wozu mein Haare und Bad? Ich kann auch zufällige Charakter beliebige erzeugen. Ich möchte jetzt mal ein Monster erzeugen. Wir haben Freunde. Das sieht erschreckend aus. Das ist ein sehr guter Teil daran. Das ist ein sehr guter Teil daran. Ich kann jetzt mit die Werte. Das ist einfach Töten. Dann hatte ich an der Kante 0,9. Das funkelt auf einmal. Wenn etwas funkelt, ist es gut. Wenn ich es lute, bekomme ich einen 0FS-Paket. Das Paket muss also bedeuten, ich möchte es luten. Dann können wir uns jetzt sehen können, was der eigentlich für irgendwelche Items hat. Hoffen wir, dass das jetzt nicht stirbt. Ich werde jetzt mal über das Protokoll laufen, weil die Zeit langsam abläuft. Wie läuft der Spiel? Wir haben 3 Level von Server. Wer sagt, wer bist du? Wenn ich gehe weg, kommen Portal-Server. Der Portal-Server sagt nur, die sind alle Portal-Server. Dann verbindest du nicht mit einem speziellen Spiel-Server. Du hast also immer 3 Hobbes. Darum schreibe ich eben das Proxy-Tool. Es ist immer ganz gut, wenn jemand für dich diese Probleme löst. Das Problem ist, das Spiel hat wirklich sehr viele Befehle. Praktisch alles ist ein Kommand, wenn du z.B. ein Team beitrittst. Ein weiterer Befehl. Du musst das zu deinem Message-Lock-Befehl hinzufügen. Und du musst diesen gildenden Namen dazufügen als Befehl. Es gibt Pakete, die gesendet werden und sagen, dass diese Gilde das machen soll. Es geht natürlich immer so weiter. Das Tolle ist, wenn man ein eigenes Server hat, kann man das Stück für Stück machen und sich einfach angucken, was passiert. Wenn ich einfach hergehe und 40 Pakete bekomme, sind vielleicht 20 davon wichtig. Man kann dann einfach das Ganze zulegen. Das ist dann sehr viel einfach. Es ist objektorientiert. Es geht um die Sachen, wie Türen können bewegt werden, ob die Objekte gehen, NPCs, Bosse, alles in Objekte. Player-Charaktere haben eine physical appearance. Man hat unterschiedliche Kommandos, wie es aussieht. Positionen, Kämpfen. Wenn man sich das Monster anschaut und es zu dir schaut zurück, das ist auch ein Kommando. Wenn ihr entreten will, das ist auch ein Kommando. Wenn es sagt, es will dich hauen, das ist auch ein Befehl. Wenn Magie benutzen will, das ist auch ein Kommando. Was ich gelernt habe, dass die ganzen 200 KB Infopacket den Nutzer beeinflusst. Man hat 200 KB von Daten und dann habe ich 100 KB und wie sich der Charakter bewegt hat, nichts damit zu tun. Der Klient kennt, welche Quests wichtig sind. Was das aber jetzt tut, erzählt dem Kleint. Diese Queste ist noch nicht getan. Die ist schon erledigt. Der Kleint zeigt nur die Oberfläche. Die Kleinstecurity ist kaputt. Wenn du falsche Datenstücke krashst, und wenn du jetzt irgendetwas falsch machst, kriegst du eine Stack-Infos, wenn das krascht. Wenn ich den Server beeinflussen könnte, und ich erwarte, dass das Server viel besser ist, aber ich habe es nicht ausprobieren. Aber es sagt z.B. seine Mac-Adresse, seine Grafikkarte, sein Betriebssystem. Vielleicht wollte ich auch ... Ich kann auch die AD von den Kleinstrufen. Ich dachte, ich wollte die Zeug veröffentlichen. Ich möchte aber nicht gerne verklagt werden. Was mache ich also? Obwohl ich jemand zu 2 Mio. Strafe verurteilt habe. Ich wollte also ... Ich habe Anhalt Engelfrede getroffen, und er hat mir wirklich gut weitergeholfen. Er ist einer der wenigen Personen, der Engenieur ist und Jura studiert hat. Der hat gesagt, dass man sich nicht verarschen lassen soll. Solange du was privat machst, ist das kein Problem. Du kannst dann auch nicht irgendwie verarscht werden. Als er dann weiter geredet hat, hat er gesagt, okay. Die Tools sind soweit okay. Das ist auf jeden Fall interessant. Aber du musst aufpassen. Der release das alles nicht. Ich dachte, so wie der Code aussah. Ich hatte nicht die Enzion, dass ich das veröffentliche. Falls du einen Kontakt zu einem Publisher oder Developer habt, kann man das machen. Falls ich irgendetwas danken soll. Ich habe ein GitHub. Ich möchte euch danken. Das alles ist auf meinem GitHub-Account. Der Item-Account ist auf einem anderen Repository, aber wer weiß, wenn ihr irgendwelche Fragen habt, könnt ihr das jetzt machen. Ich habe ein E-Mail-Account. Danke für diesen sehr interessanten Vortrag. Vielen Dank für diese Fragen und Antworten. Als ihr das noch habt, geht bitte zu diesem Mikrofon. Wir fangen jetzt sofort an. Hallo. Hast du jemals aus versehenen Paket einen Server geschickt? Ja, das habe ich gemacht. Jeder, der geht, ist halt leise. Ich habe ein paar Sachen geschickt, die ich interessiert habe. Ob es wirklich darauf ankommt, ob es der Klient schicken muss. Es muss nicht sehr klein sein, aber ich werde das nicht herausgeben, weil ihr wisst, was ich anstellen kann. Eine weitere Frage an dem Mikrofon. Der andere bitte dort. Wie lange hast du daran gearbeitet? Eine Woche und dann Kaffee? Das Projekt hat zwei Jahre gedauert. Ich habe immer wieder zwischen drinnen gearbeitet. Ich habe noch andere Interessen, so was wie ein Leben. Es gab Hochs und Tiefs. Aber ich kann sagen, dass alles im Almen, wenn ich das Vollzeit machen würde, in sechs Monaten brauche. Wenn wirklich reinkommt, geht das wirklich schnell. Das ist eine Frage aus dem Internet. Jetzt zwei Fragen. Die erste Frage ist, ob es irgendwelche End-to-end Verschlüsse oder Authentifizierungen zwischen kleinen Servers ist. Ja, das gibt es. Man kann in Theorie Spawn-Items auf einem realen Server. Kann man da wirklich ein Atem-Spawn lassen? Ich wusste die Frage kommt. Was ich darüber sagen will, ist, ich weiß von Spielern, die es geschafft haben, zu duplicieren. Ich wusste, dass es geht. Aber wenn ich das probieren würde, dann würde ich das Spiel nicht spielen. Aber das meiste wird auf dem Server gemacht. Wenn der Klient davon überzeugt ist, dass er ein Atem hat, kann man das sehr wahrscheinlich hinkriegen. Ich denke, das ist nicht ganz sicher. Aber die meisten kriegen das raus, dass man was ganz schnell klickt. Dann gibt irgendwann der Server auf und gibt einem das Atem. Es ist schon passiert. Ich weiß nicht, ob es korrigiert ist, aber es ist schon passiert. Eine weitere Frage? Hallo? Hast du die Sache auch bei anderen MMOs probiert? Oder ist das ein Beispiel für dieses zerbrochene Stück? Nein, ich habe es nicht probiert, aber das kann man wahrscheinlich mit jedem Spiel machen, wie du willst. Aber man kann diese Technik auf fast alles, das einzige, was ich hier gemacht habe, ist die Daten zu interpretieren, das kann man mit jedem Spiel machen. Man kann da Spiel nehmen. Das Spiel ist uninteressanter als die herangehensweise. Weitere Fragen noch? Ein interessanter Vortrag, danke. Ich bin ein Spielentwickler. Ich versuche jetzt nicht gerade zu messen. Ich versuche ein Spiel auf Android. Hast du irgendwelche Hinweise an mich, die die Arbeit schwerer machen würden? Eine Sache, die ich vorschlagen sollte, wenn Leute das machen, die gelangweilt mit deinem Spiel werden, ist das, was ich denke, was du tun solltest. Wenn ich es wäre, dann würde ich eher das Protokoll rausgeben und sagen, hier, viel Spaß. Und Leute werden es dann irgendwie verstehen. Und wenn man das Protokoll so baut, dass irgendeine verrückt Person dran gehen kann und uns das 20-mal schickt, dann sollte ich das vielleicht kontrollieren. Man sollte die, die einem der Klient schickt, weil die können beeinflusst werden. Man sollte auch immer darüber nachdenken, dass der Klein zum Beispiel nicht alles bekommen hat, was es gibt. Und das sollte man halt in das Design mit einbeziehen. Eine weitere Frage aus dem Internet. Die Frage ist, hattest du jemals Kontakt zu dem Entwickler? Hattest du Kontakt zu dem Hersteller des Spiels? Ne, hatte ich nicht. Ich habe versucht, ein paar aus der Community zu kontaktieren. Ich habe mit ein paar geredet, aber das Problem, ich habe nie was gefunden. Und das Problem ist, ich weiß nicht, wie ich an die herantreten soll, das ist eine recht große Firma. Und ich weiß, wüsste nur nicht, wo ich anfangen sollte. Und vielleicht kennt hier irgendjemand, der mich da reinkriegen kann. Noch irgendwelche weiteren Fragen. Letzte Chance?