So inside a chunk we have 16x16 blocks to deal with. What I thought I was parsing were single blocks, but in fact I was dealing with 16x16 chunks. The crucial line in the documentation is: Minetest maps consist of MapBlocks, chunks of 16x16x16 nodes.Ī block is a chunk. Here it is: First map parsing testīut at some point I noticed that the map seemed small and that the row of levers were not identifiable at all. So I used Pillow, the python image library, to draw pixels for the blocks I’m parsing. I thought it would be a good idea to visualize the map parsing, in order to verify that it works. But eventually I got some first script parsing the data running. The main challenge was that we have non-standard blocks from the Mesecons mod. And I found various things that have helped me to write my code, but nothing really worked for me right away. I figured somebody must have already written parsers for this to extract the map, so I spent quite some time looking for various GitHub projects and scripts that deal with this file. In the SQLite file we can find binary blobs for each chunk, which should match the MapBlock serialization format. Map.sqlite is an sqlite3 database, containing a single table, called "blocks". Minetest maps consist of MapBlocks, chunks of 16x16x16 nodes. Eventually we found the official “Mintest World Format” documentation. For example I was sure people made map tools and to draw a map you have to somehow parse the world file. solve it - for example with a SAT solver like z3.īecause this is open source, we should find plenty of resources about parsing the world files.We have to extract the circuit - for example from the world map files.No chance to do this by hand.īut this also makes the challenge straight forward and we basically know exactly what we have to do. However this Minetest challenge is insane. In Pwn Adventure the circuit was fairly small and could be reversed by hands in a matter of a few hours ( as have teams done during the original CTF). So minetest is basically Blocky’s Revenge Revenge. We just have to find the correct input that leads to a 1 at the output. We have levers as inputs and at the end we have a single output. If you have watched my Pwn Adventure series, then you know already the Blocky’s Revenge challenge. Eventually I reach the end - the final output. To get an overview I kept flying up… and was a bit shocked. And from the Minetest wiki I learned about the console and the teleport command. And in the keybindings I was able to find shortcuts for flying, noclip and even faster movement. But like with Minecraft, I assumed there must be features in creative mode to fly and teleport around. The challenge file is probably a world! Load the challenge into mintest The logs showed me that there is now a folder called worlds, which seems like a good place. But only after I had the idea to create a new world and looked at the logs, I found the place where to put the files. So how can we load this into the game?įirst I was looking through the folders of the file to see if something looks similar. When we download the challenge files we can find a folder called real which contains various files like a map.sqlite a world.mt and other stuff. But that is pretty simple with the instructions. Minetest - Open Source Minecraft Cloneįirst we have to setup the game with the Mesecons plugin. Because this challenge is in the hardware category, it totally makes sense that this is about digital circuitry and logic gates. Mintest is an open source voxel game engine, and Mesecons is a mod which adds advanced digital circuitry like logic gates and programmable blocks. Non-standard flag format (enter bits as 0 and 1) Watch on YouTube I've stumbled upon this weird minetest map, can you make sense out of it? Minetest + mesecons required And there was one challenge that caught my eye - minetest. The Google CTF Qualifier 2019 had a hardware category.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |