[KeygenMe] Creating Your Own Key Generator

Suh dudes, been a while since I posted a challenge, so here we go!

Difficulty

The difficulty depends on how well you can think and apply your knowledge.

  • EZPZ
  • Not bad
  • Challenging
  • Dark Souls
  • M/o/Vfuscator

0 voters

Goal

The aim of this task is to create your own keygen, i.e. you must program an application or write a script which will output a correct key. You must show at least 3 working keys (post a screenshot or some evidence) using your keygen.
Note: Long inputs seem buggy, so smaller inputs are accepted.

Example Keygen

Rules of Engagement

This is a KeygenMe, there is to be no tampering with the binary in any way, shape or form such that its behaviour is different from the original.

Hints

Hint #1: There is a correlation between the registrant name and the serial key.
Hint #2: If you haven’t located the key check routine, try to identify a particular control structure.
Hint #3: Perhaps you can replicate the key check routine somehow.
Hint #4: Git gud, lern2reverse.

Binaries

Use the following command to recover the binary:

cat out | base64 -d | gunzip > a.out && chmod +x a.out

Easy mode (not stripped)

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

Hard mode (stripped)

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

Good luck.

4 Likes

My three keys ;)…

$ ./k dtm | xxd -p
d4b80102
$ ./k pico | xxd -p
a48a9204
$ ./k 0x00sec | xxd -p
844cad11

Thanks for taking the time to write this challenge!!!

For the LuLz… this is my keygen code, after some obfuscation :slight_smile:. It works in my box, but that is not the right way to write code :stuck_out_tongue:

#include <unistd.h>

int main (int __, char *_[]) {for (__^=__;*_[1]; __+=(__+= (2**_[1]**_[1]**_[1])),_[1]++);write (1, &__, 4);} 
2 Likes

You’re too good, dude! You stole my serial key too! :fearful:

I’ll make the next one a bit more challenging.

P.S. This isn’t how you use Perl! :sweat_smile:

1 Like

Come get ya keys

python keygen.py Wunkolo | xxd -p 0c8ae91f python keygen.py 0x00sec.org | xxd -p 4cc0491d python keygen.py dtm | xxd -p d4b80102 python keygen.py Customer | xxd -p b8efdc37

My “Keygen” using python

import struct
import sys

def keygen(Name):
        Key = 0
        for char in Name:
                CurChar = ord(char)
                Key = 2 * ( 2 * CurChar * ((2 * CurChar * CurChar) / 2) + Key)
        return Key

sys.stdout.write(struct.pack('<I',keygen(sys.argv[1])))
2 Likes

Thanks for the challenge;
here is my solution :

$ ./keygen.py neolex | xxd -p
0856cc12
$ ./keygen.py pseudo | xxd -p
6cded014
$ ./keygen.py overflow | xxd -p
945a9954

[spoiler][code]#!/usr/bin/env python2

import struct
import sys

pseudo = str(sys.argv[1])

key= 0
for letter in pseudo:
edx = ord(letter)
ebx = edx2
edx = (edx
ebx)/2
edx = ebx*edx
key = (edx+key) *2
sys.stdout.write(struct.pack("<I",key))[/code][/spoiler]

2 Likes