From 2c41322b82a354a771b172a084d1e8d428f70e5a Mon Sep 17 00:00:00 2001 From: quasar098 <70716985+quasar098@users.noreply.github.com> Date: Sun, 29 Oct 2023 20:58:15 -0400 Subject: [PATCH] Create README.md --- udctf-2023/mcnet-warm-up/README.md | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 udctf-2023/mcnet-warm-up/README.md diff --git a/udctf-2023/mcnet-warm-up/README.md b/udctf-2023/mcnet-warm-up/README.md new file mode 100644 index 0000000..5f4bc97 --- /dev/null +++ b/udctf-2023/mcnet-warm-up/README.md @@ -0,0 +1,33 @@ +# mcNET warm up + +## problem + +``` +OK, so we built a working minecraft internet... but it's clunky and you all could very well crash things and it's tough to install. But honestly, the real internet was actually also tough to connect in the early days. To make it easy on you we set it up on a server: udctf.mc.gg Our server is set to version 1.19.2 (Java edition). + +It can hold 70 people at a time so if it's getting overwhelmed just have some patience and try to be decent to each other when you're on there. Once you are on the server (in survival mode) you can gain access to a few things (all vanilla): + +!ping to know that it's working (you should hear pong) +!get_computer will build you a personal computer in front of you (Don't move while it builds!!!! This will mess up your computer!!!) Once you have a computer you can fetch anyone's hosted builds using our first internet protocol: +!get_build profninja/flag will get you this first flag (my daughter made it for us, thanks hon) +!game N where N is an integer 1 to 6 will start the 6-83 game (another flag if you win) +If you solve this one and mcNET 6-83 it will unlock a 3rd mcNET problem. + +Alright, so this one is a mechanical intro to our mcNET. But we made it easy enough that it's not educational yet. So here is the architecture: + +The minecraft server connects to a private discord server using essentialX, the private discord server acts like the Network Interface Card. + +Our private discord has another bot which implements various protocols, so far our protocols are pretty simple. This second bot is basically an ethernet cable plugged into an ISP. + +Your personal computer in the server acts like the running process at a port which can act on inputs from the rest of the world. + +Our !get_build domain/path protocol is our minecraft-y HTTP. If you want to host a site/build we can upload any .nbt files (in Minecraft you can put your builds into structure blocks which saves them as .nbt). We wrote a beautiful .nbt to .mc86 (sequences of minecraft commands) system that then saves the builds in a firebase. Our nodeJS "file-server" parses the commands and packetizes them (there are maximum packet sizes to the various discord bots) and gets them down to your "port" (minecraft storage commands) which your CPU then runs to create the build in front of you. + +If you're interested in connecting your own servers to each other and some sort of minecraft internet you can checkout the github project. They made a docker, various scripts, and some setup guides. I went through the process from their instructions and it was pretty tough, a CTFer could do it, but I decided not to make you. + +-ProfNinja and JD and a Capstone Team last year +``` + +## solution + +i logged onto the minecraft server and typed in `!get_build profninja/flag` and then `!get_computer` to get a command block computer which i could run to get the flag