[KEYGEN] Balanced Tree

Hello guys, this is my first post here. I’ve been lurking around for a few months solving various challenges, and today I finally decided to create my own (instead of studying for finals) :grin:

Hope you enjoy it!

The program consists of simple username and password query. There’s a slight hint in the title but it will only help you if you come far enough :stuck_out_tongue:

Difficulty

Author Assigned Level: Wannabe

Community Assigned Level:

  • Newbie
  • Wannabe
  • Hacker
  • Wizard
  • Guru

0 voters


Goals

  1. Find a working username and password pair.
  2. Create a non-brute keygen.

Rules

  1. No patching allowed!

Binary

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

Decode with: cat input | base64 -d | gunzip > a.out && chmod +x a.out

EDIT: For some reason there is some weird formatting, better version here: https://pastebin.com/BkRd6Bxn

6 Likes

I found a solution:

$ ./a.out
keygen_me by wex-ler @ 0x00sec.org
user >> 024bdfhjlnprtvxz
pass >> kcs3gow1aeimquy
success!

I have not yet created a keygen, I might do this at some point. Thanks for the challenge; you gave a bit too much away with the title in my opinion. Now, go study for your finals :stuck_out_tongue:

EDIT:
Okay, I could not resist the temptation to write a keygen as well, here it is written in python. It is pretty simple:

#!/usr/bin/python3
import string
import random

n = 31
offset = random.randint(33, 125-n)

chars = [i for i in range(offset, offset+n)]
chars = bytes(chars).decode('ascii')

stack = []
stack.append(chars)

result = []

while len(stack) > 0:
    s = stack[0] 
    i = int(len(s) / 2)
    result.append(s[i])
    
    if len(s) > 1:
        s1 = s[:i]
        s2 = s[i+1:]
        stack.append(s1)
        stack.append(s2)
    stack = stack[1:]

print("{}".format(''.join(result[15:])))
print("{}".format(''.join(result[:15])))

The results can be validated using ./solve.py | ./a.out

2 Likes

Was fun! :smiley:

$ ./balancedtree.elf
keygen_me by wex-ler @ 0x00sec.org
user >> Thanks_for_the_challenge!
pass >> F7N3BJR159DHLPU02468ACEGIKMOQSV
success!

Considering @Noswis already wrote a keygen for random username-password pairs, here is one where you can choose the name to generate a password for:

import string
import sys
print("Enter name to generate key for: ")
name = sys.stdin.readline() # read wanted username
cMap = (string.digits+string.ascii_uppercase+string.ascii_lowercase).translate(None,name) # remove all characters from the name from the sorted ascii characters
if len(name) <= 7 or " " in name or len(cMap) < 31: print("Name is not valid (>= 7 characters, no spaces, not too long)") # validate that this code can generate a password for the name
else: print(''.join([cMap[v] for v in [15, 7, 23, 3, 11, 19, 27, 1, 5, 9, 13, 17, 21, 25, 29, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]])) # use a given perfect binary search tree as offsets within the character map to generate another perfect binary tree usable as a password
1 Like

Did you find the solution purely based off the title or did it require more analysis? I will be more secretive with titles in the future :stuck_out_tongue:

I have a couple more ideas for challenges based on algorithm’s. Do people find them fun or should I focus more on obfuscation?

I personally like both approaches and considering I mostly see obfuscation (or similar) based challenges some more based on algorithms might be interesting!

1 Like

A bit of both. The title was definitely helpful, but I still needed to dive into the binary to find specific username/password requirements. In my opinion, it is often not worth to try to understand everything in a binary for a keygen/crackme challenge. I usually make “educated” guesses about the roles of functions and constants based on their names and try things out based on that.

2 Likes