Zum Inhalt springen
Seedjagd

Minecraft · Reverse Engineering

Wie ich den Seed von Craft Attack 14 geknackt habe

Wie ich als Zuschauer den Minecraft-Seed von Craft Attack 14 aus Koordinaten in Clips rekonstruiert und blockgenau gegengeprüft habe.

Veröffentlicht am

  • 18 Strukturen ausgewertet
  • 72 Bits an Information
  • ~40 Sekunden Rechenzeit
  • 10 von 10 Gegenproben exakt

Wie alles begann

Ich schaue Craft Attack seit vielen Jahren und mag das Projekt. Irgendwann stellte sich mir die Frage: Kennt eigentlich schon jemand den Seed von Craft Attack 14?

Die Antwort war nein. Die Orga hält den Seed während der Staffel absichtlich geheim, damit in den Stream-Chats keine Orte gespoilert werden. Auch die Teilnehmer kennen ihn in der Regel nicht.

Bei der Suche fand ich einen Reddit-Post auf r/MinecraftDe, in dem jemand dieselbe Frage gestellt hatte. Dort war ein Screenshot der Weltkarte mit einigen Biomen und dem Spawn zu sehen. Für eine Berechnung reichte er nicht, weil keine Koordinaten darauf standen.

Damit blieb eine Frage übrig: Lässt sich der Seed allein aus dem bestimmen, was öffentlich in Clips zu sehen ist?

Ich interessiere mich sehr für solche technischen Details. Gemacht habe ich das nur zum Spaß, um zu sehen, wie weit man so etwas treiben kann.

Alle Seeds auszuprobieren kommt dabei nicht in Frage. Ein Minecraft-Seed ist eine 64-Bit-Zahl, es gibt also rund 18 Trillionen Möglichkeiten. Bei 100 Millionen Versuchen pro Sekunde würde das etwa 5.800 Jahre dauern.

Was ein Seed eigentlich ist

Der Seed ist der Startwert, aus dem Minecraft die gesamte Welt berechnet. Der wichtigste Punkt: Die Generierung ist deterministisch. Mit demselben Seed und derselben Version entsteht immer dieselbe Welt, bis auf den einzelnen Block.

Möglich wird der Ansatz erst dadurch, dass nicht alles in der Welt vom vollständigen Seed abhängt.

  • Strukturen wie Tempel, Dörfer oder Schiffswracks hängen nur von den unteren 48 Bits ab.
  • Biome hängen von allen 64 Bits ab.

Das Problem lässt sich deshalb in zwei Teile zerlegen. Zuerst bestimmt man über Strukturen die unteren 48 Bits. Danach bleiben 65.536 Kandidaten, die man gegen bekannte Biome prüft.

Spurensuche in Clips

Danach habe ich viel Zeit mit Recherche verbracht: wie Minecraft Strukturen platziert, welche Tools es gibt und was andere schon versucht haben. Am Anfang war das frustrierend, weil kaum etwas dabei war, das mich dem Seed näher gebracht hat.

Mit der Zeit fand ich aber mehr. Ich ging Clips und Streams durch und notierte jedes Mal die Koordinaten und die Struktur, die dort steht. Schnell zeigte sich, dass die Funde unterschiedlich viel wert sind:

  • Dungeons und Minenschächte helfen nicht. Seit 1.18 hängt ihre Platzierung am vollen Seed, und ein Punkt in einem Minenschacht verrät nicht, wo er beginnt.
  • Große Strukturen wie Antike Städte oder Trial Chambers helfen wenig. Ihr Startpunkt kann in einem weiten Bereich liegen, ein beliebiger Punkt darauf sagt kaum etwas aus.
  • Kleine Strukturen sind dagegen sehr nützlich: Wüstentempel, Schiffswracks, Portalruinen und die neuen verlassenen Lager (Abandoned Camps) aus 26.3. Ihre Position zeigt ziemlich genau, in welchem Chunk sie beginnen.

Jeder Eintrag muss stimmen. Eine einzige falsche Struktur reicht, und der Crack findet nichts.

Etwas Glück gehörte auch dazu. Nach und nach kamen Clips mit einem Wüstentempel, einer Portalruine, verlassenen Lagern und einem Schiffswrack hinzu. Den größten Unterschied machte am Ende ein vergrabener Schatz, zusammen mit den vielen kleineren Funden, die sich nebenbei angesammelt hatten.

Bits sammeln

Jede Struktur liefert eine bestimmte Menge an Information, gemessen in Bits. Ein Wüstentempel bringt etwa 6 Bits, eine Trial Chamber oft nur 1. Für die unteren 48 Bits braucht man insgesamt etwa 48, für ein eindeutiges Ergebnis besser 52.

Um den Überblick zu behalten, habe ich mir eine kleine Eingabeseite gebaut. Dort habe ich jeden Fund erfasst, und am Ende landete er als Zeile in einer Datei für den Cracker:

observations.txt
desert_pyramid 1851 2140
abandoned_camp 2459 3980
shipwreck 697 -3057
biome savanna 1630 65 -225

Der Anfang war zäh. Ausgerechnet meine ersten drei Funde waren große Strukturen: eine Antike Stadt, eine Trial Chamber und ein Ozeanmonument. Zusammen kamen sie auf knapp über 7 Bits. Erst mit dem ersten Wüstentempel ging es richtig voran. Portalruine, verlassenes Lager und Waldanwesen folgten kurz darauf, und plötzlich lag ich bei gut 37 Bits.

Danach wurde es wieder mühsam. Einige Trial Chambers und eine Ozeanruine brachten jeweils nur ein bis vier Bits. Über die 48-Bit-Grenze kam ich erst mit dem zweiten verlassenen Lager. Schatz, Schiffswrack und ein zweiter Wüstentempel erhöhten den Stand am Ende auf 72,2 Bits aus 18 Strukturen.

So kamen die Bits zusammen
02040608048 Bits nötigErster Wüstentempel48 Bits geschafftVergrabener Schatz123456789101112131415161718Fund Nr.
Als Tabelle anzeigen
#StrukturBitsGesamt
1Antike Stadt+1,21,2
2Trial Chamber+0,92,1
3Ozeanmonument+5,27,3
4Dorf+2,710,0
5Wüstentempel+6,016,0
6Wüstendorf+2,418,4
7Portalruine+6,725,1
8Verlassenes Lager+6,531,6
9Waldanwesen+5,537,1
10Trial Chamber+1,438,5
11Trial Chamber+1,740,2
12Ozeanruine+3,643,8
13Trial Chamber+1,245,0
14Verlassenes Lager+6,551,5
15Trial Chamber+1,352,8
16Vergrabener Schatz+6,659,4
17Schiffswrack+6,666,0
18Wüstentempel+6,072,0

Die Werte pro Fund sind gerundet. Deshalb ergibt die Tabelle 72,0 statt 72,2.

Die Platzierungswerte jeder Struktur (Abstand, Mindestabstand und ein fester „Salt“) habe ich mit den Spieldaten von 26.3 abgeglichen. So rechnet der Cracker mit denselben Regeln wie das Spiel.

Der Durchbruch

Den Ausschlag gab der vergrabene Schatz. Er liegt immer an derselben Stelle in seinem Chunk und liefert deshalb besonders viel Information. Mit ihm als Ankerpunkt kam die Suche in Gang.

Der Cracker ist ein kleines C-Programm auf Basis der Open-Source-Bibliothek cubiomes. Zuerst filtert er über die unteren 20 Bits: Von gut einer Million Kandidaten blieben 5.083 übrig. Der Rest der Suche war danach überschaubar.

Den Code des Crackers und meine Skripte veröffentliche ich absichtlich nicht. Ich möchte nicht, dass künftig jede Person mit etwas Aufwand die Seeds von Projekten wie Craft Attack herausfinden kann.

Nach rund 40 Sekunden gab es genau ein Ergebnis. Welches, verrät das Rätsel im letzten Kapitel.

Für die oberen 16 Bits kamen die Biome ins Spiel. Mit diesem Wert passten 5 von 6 Biom-Messungen, kein anderer Kandidat erreichte mehr als 4. Die eine Abweichung war ein Dunkler Wald auf Meereshöhe, den der Seed als Fluss ausweist. Vermutlich handelt es sich um ein Flussufer mitten im Wald.

Ein Detail am Rande: Die oberen 16 Bits sind alle null. Der Seed ist also eine kurze Zahl, wie sie jemand von Hand eintippt.

Die Gegenprobe

Ich wollte sicher sein, dass das Ergebnis stimmt. Deshalb ließ ich mir vom Seed Strukturen vorhersagen, die vorher niemand gemeldet hatte, und suchte sie in einer eigenen Welt mit /locate. Eine Auswahl:

Struktur Im Spiel Vorhergesagt
Vergrabener Schatz 249 / −167 249 / −167 ✓
Portalruine 352 / 336 352 / 336 ✓
Dorf −192 / 672 −192 / 672 ✓
Dschungeltempel 512 / 848 512 / 848 ✓
Antike Stadt 976 / 576 976 / 576 ✓
Plünderer-Außenposten −688 / 1040 −688 / 1040 ✓
Ozeanmonument −1232 / 224 −1232 / 224 ✓

Zehn von zehn Treffern, blockgenau. Ein falscher Seed erreicht das praktisch nie. Auch die Karte passt: Die Umrisse von Land und Wasser aus dem Reddit-Screenshot stimmten zu 88 % mit der Welt dieses Seeds überein, zufällige Seeds kamen nur auf 70 bis 75 %.

Warum die Seite erst jetzt erscheint

Der Seed hätte sich schon deutlich früher berechnen lassen, und das ist auch schon früher passiert. Fast alle Informationen, die ich verwendet habe, waren bereits am ersten Tag der Staffel öffentlich. Möglich war das also etwa zwei Tage nach dem Staffelstart Anfang Oktober.

Ich habe mich trotzdem entschieden, die Seite erst jetzt zu veröffentlichen, einige Wochen nach Beginn der Staffel. Der Seed sollte nicht schon am Anfang bekannt sein, während alle die Welt gerade erst erkunden.

Was ich gelernt habe

  • Determinismus reicht weit. Weil die Welt immer gleich generiert wird, genügen ein paar Koordinaten, um sie vollständig nachzubauen.
  • Kleine Hinweise schlagen große. Ein unauffälliger Wüstentempel war mehr wert als eine riesige Antike Stadt.
  • Genauigkeit vor Menge. Ein falscher Fund macht alles zunichte, also besser weniger eintragen und dafür sicher sein.

Am wichtigsten ist mir zum Schluss: Ich wollte niemandem das Spiel verderben. Mich hat nur interessiert, ob es möglich ist. Wenn du den Seed ausprobierst, behalte ihn bitte für dich und poste ihn nicht in die Stream-Chats.

Der Seed

Am Ende steht nun das, worum es in der ganzen Geschichte ging. Den Seed wollte ich aber nicht einfach hinschreiben. Du bekommst stattdessen eine Frage zur Geschichte und stellst die Antwort mit Hebeln in Bits ein, wie bei einer Redstone-Schaltung. Wer bis hier gelesen hat, kennt alle Antworten.

Der SeedJava Edition 26.3

Wie viele Strukturen habe ich für den Crack ausgewertet?

Stell die Antwort mit den Hebeln in Bits ein, dann geht die Lampe an.

16
8
4
2
1

Tipp: Alle Antworten stehen im Beitrag. Und nicht jedes Schild ist nur ein Schild.