Unbrewed (85 pts)

Solved by: sardinachanx, zookham

Problem:

Bah, I feel like my programming skills really aren't up to snuff. I can never seem to get my decryption programs to work right... Can you figure this out for me?

Files:

brew.jar

Hint:

Unlike pour-over, this coffee can be unbrewed.

Solution:

Jars are asking to be decompiled! Decompiling the .jar we found what presumably is Scala code. Digging through the code (which, by the way, had lots of confusing classes that served no purpose other than confuse the crap out of us), we found a suspicious array of numbers in the Brew$.java file:

 this.jesus = new RNJesus(-132981, 48191);
 this.comp = this.jesus().next() / this.jesus().next() * this.jesus().next() / 100000;
 this.flag = ((TraversableOnce)((TraversableLike)Seq$.MODULE$.apply(Predef$.MODULE$.wrapIntArray(new int[]{-102, 30, -46, -83, 123, 110, 105, 99, -116, 34, -59, -66, 112, 95, 111, 102, -74, 13, -55, -66, 114, 95, 111, 118, -116, 15, -37}))).map(new scala.Serializable()

Presumably the array is the flag. Looking at the array, there's a bunch of negative numbers but also some numbers that are in the ASCII code range, so we decided to first decode those that are alphanumerics -

????{nic????p_of????r_ov???

We know that the first four characters must be sctf and the last character "}", so we put that in as well -

sctf{nic????p_of????r_ov??}

The hint tells us something about pour-over. Sure, the class's called brew, but it may also be a hint to the flag, so we tried this -

sctf{nic????p_of_pour_over}

At this point it's fairly obvious the flag would be something along the lines of this -

sctf{nice_cup_of_pour_over}

So we tried that, and it was correct!

FLAG: sctf{nice_cup_of_pour_over}