Skip to content

Instantly share code, notes, and snippets.

@trietptm
Created November 19, 2014 10:40
Show Gist options
  • Save trietptm/c5fe20cc18af3a1e897f to your computer and use it in GitHub Desktop.
Save trietptm/c5fe20cc18af3a1e897f to your computer and use it in GitHub Desktop.
Keygenning challenge keygenme1 of wargame.vn at http://wargame.vn/re1.html
import argparse
parser = argparse.ArgumentParser(description='Generate serial from username and email for the challenge keygenme1 of wargame.vn at http://wargame.vn/re1.html')
parser.add_argument('username', help='username to register')
parser.add_argument('email', help='email to register')
args = parser.parse_args()
username = args.username + chr(0xA) #fgets includes new line character
email = args.email + chr(0xA) #fgets includes new line character
def fuzz(username):
secret = '8k1753('
result = ''.join([chr(ord(username[i])^ord(secret[i%7])) for i in xrange(0, len(username))])
return result
fuzzed_username = fuzz(username)
char = 66
lenUserName = len(fuzzed_username)
lenEmail = len(email)
bkitsec = 'bkitsec'
serial = ''
for i in xrange(0,32):
char = (ord(fuzzed_username[i % lenUserName]) + ord(email[i % lenEmail]) + char*ord(bkitsec[i % 7])) % 256
if not char:
char = 33
if char > 127:
char = 0xFF + 1 - char
if char <= 32:
char += 32
if char == 127:
char = 126
serial += chr(char)
print "Serial: " + serial
@trietptm
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment