Work in progress!
ROMs are here:
This challenge is a reverse-engineering challenge in two parts. The flavortext for the first challenge:
You know what matters the most in defense? Sturdy swords. The town’s blacksmith is pursuing a study in rare metals that could help him create stronger weaponry for our troops.
He got hold of a rare metal sequencer. You have to provide the correct sequence and it can create the strongest materials in the whole kingdom.
You want to help our blacksmith with this? All you have to do is to ind the correct sequence.
The only problem is we don’t know the correct sequence… Can you help us figure it out?
He has provided the Sequencer. You’ll also need what he called an emulator to run it. I don’t know what that means, but that’s why you’re the wizard and I’m just a honest barman serving mugs of ale!
This fits in with the conceit of the "plot" of Northsec 2021. I actually never read the prompt webpage personally, just got started on the challenge myself. That's a bit of a shame, because in the original prompt, a specific SNES emulator was recommended for the challenge: zsnes -- you really should stick to using this one if you want to work through the challenge yourself. Other emulators can sort of run the binary, but they are really unstable with it, and they'll drive you nuts. (I wasted about three hours thinking that part of the challenge had to do with how if you reset the ROM in OpenEmu or bsnes, it just crashes and shows you a black screen most, but not even all, of the time. Don't be like me. Just use zsnes.) Go download that right now and just try running the first ROM, sequence_1.smc -- you'll need to be able to run it reliably to solve the chalelnge. If you have access to a Linux or Windows machine, you should be good, but if you're on a modern MacOS you're going to be pretty frustrated by this challenge (I couldn't find a build of zsnes that would work with MacOS Catalina, which is what I have, online, but maybe you can find the source code and build it yourself if you want.)
Like in other Northsec puzzles, I knew we were looking for a string that starts with "FLAG-" and is followed by up to 32 characters or so.
I didn't have much experience with reverse-engineering when I decided to work on this challenge, but I did know about one useful tool in the reverser's toolbox, strings: a Unix utility which looks at a binary and then shows you all the ASCII strings it can find in it. Using strings on sequence_1.smc gives an interesting hint:
% strings sequence_1.smc | grep FLAG
FLAG-43TFD38D9PLVP9WX7N49DXAG6QX7TQQQKBGMC9QRB6TTHUT7LA3P4CPJPUQPBR9YUN9X687LF9Y9CD6C3QP7F9X33G5C936F89JVJQ83AYGFT853GGMTK47G93DK9U9HHQYR88WPPR5CY3DGBFVY9PGJG497HP3GEJ9GATYVK49NYLF54WP8853INB5X5T83T9A98QE9L4QF9UWU77AD3ATHT37MY9R95JNR9FYXB94QNDGBWT9KHVT9P6DDGN18B9KL4UVGA9375DPK3433X3A34TLXRGW49GE5W8JRTWYMUHN98KWRKGWFRFR#==============================#| [WELCOME TO THE SYSTEM V1.0] || || PLEASE INPUT THE || SEQUENCE YOU WANT || PROCESSED, FOLLOWED || BY PRESSING START |#==============================# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! WARNING! !! BAD SEQUENCE DETECTED !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!INPUT 1 OK! INPUT 2 OK! INPUT 3 OK! INPUT 4 OK! PRESS START TO RUN SEQUENCE... 012345789:;<=?@ABCDEFGHIJKLMNOPQQRSTUUVWWXYYZZ[[\\]]]^^^________`________^^^]]]\\[[ZZYYXWWVUUTSRQQPONMLKJIHGFEDCBA@?=<;:987543210/.-,+)('&%$#!
^ That's the whole string, if you're interested in copy-and-pasting, or you can glance at this more friendly-ly rendered representation of it, but note I replaced some of the whitespace with line breaks:
% strings sequence_1.smc | grep FLAG
FLAG-43TFD38D9PLVP9WX7N49DXAG6QX7TQQQKBGMC9QRB6TTHUT7LA3P4CPJPUQPBR9YUN9X687LF9Y
9CD6C3QP7F9X33G5C936F89JVJQ83AYGFT853GGMTK47G93DK9U9HHQYR88WPPR5CY3DGBFVY9PGJG49
7HP3GEJ9GATYVK49NYLF54WP8853INB5X5T83T9A98QE9L4QF9UWU77AD3ATHT37MY9R95JNR9FYXB94
QNDGBWT9KHVT9P6DDGN18B9KL4UVGA9375DPK3433X3A34TLXRGW49GE5W8JRTWYMUHN98KWRKGWFRFR
#==============================#| [WELCOME TO THE SYSTEM V1.0] ||
|| PLEASE INPUT THE || SEQUENCE YOU WANT || PROCESSED
, FOLLOWED || BY PRESSING START |#==============================
# !!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!! !! WARNING!
!! BAD SEQUENCE DETECTED !! !!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!INPUT 1 OK! INPUT 2 OK!
INPUT 3 OK! INPUT 4 OK! PRESS START TO R
UN SEQUENCE...
012345789:;<=?@ABCDEFGHIJKLMNOPQQRSTUUVWWXYYZZ[[\\]]]^^^________`________^^^]]]\
\[[ZZYYXWWVUUTSRQQPONMLKJIHGFEDCBA@?=<;:987543210/.-,+)('&%$#!
Um, well, that looks a little bit like a flag. Nice! There's some other stuff (#==============================# onwards) than what looks like a flag that gets included here, because strings will go through a binary until it finds a sequence of ASCII characters, and then keeps going until it reaches the end of those ASCII characters -- whoever put this flag here just decided to store some other text right after it.
Once you manage to get the ROM running in an emulator, you'll see that the rest of the input string gets displayed near the top of the screen. I need to come back to this writeup and attach some screenshots and more story-telling later, but don't want to right now since I am not on a machine that can run zsnes.