Skip to content

Instantly share code, notes, and snippets.

@secrary
Last active August 21, 2017 12:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save secrary/0e747196018eecb2f10ee71ce42ecad3 to your computer and use it in GitHub Desktop.
Save secrary/0e747196018eecb2f10ee71ce42ecad3 to your computer and use it in GitHub Desktop.
import base64
my_base64chars = b"/+9876543210zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA"
STANDARD_ALPHABET = b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
ENCODE_TRANS = bytes.maketrans(STANDARD_ALPHABET, my_base64chars)
DECODE_TRANS = bytes.maketrans(my_base64chars, STANDARD_ALPHABET)
def encode(clear):
return base64.b64encode(clear).translate(ENCODE_TRANS)
def decode(encoded):
return base64.b64decode(encoded).translate(DECODE_TRANS)
def mix_two_list():
nums = b"13337"
alpha = [n for n in range(256)]
edi = 0
for n in range(256):
edi = (edi + alpha[n] + nums[n % 5]) % 256
tmp = alpha[n]
alpha[n] = alpha[edi]
alpha[edi] = tmp
return alpha
def modify_cpuid_time(from_cpu_and_time):
alpha = mix_two_list()
index = 0
edx = 0
res = []
for x in range(len(from_cpu_and_time)):
index += 1
index = index & 0xFF
edx = (alpha[index] + edx) & 0xFF
tmp = alpha[index]
alpha[index] = alpha[edx]
alpha[edx] = tmp
eax = (alpha[index] + tmp) & 0x800000FF
if from_cpu_and_time[x] ^ alpha[eax] == 0:
return res
res.append(from_cpu_and_time[x] ^ alpha[eax])
return res
def get_serial_number(enc2):
serial__number = [0 for n in range(0x400)]
i = 0
j = 0
done_1 = False
done_2 = False
done_3 = False
while j < len(enc2):
if done_1 or done_2 or done_3:
break
for a in my_base64chars:
if done_2:
break
if done_1:
break
for b in my_base64chars:
if done_2:
done_1 = True
break
if enc2[j] == ((my_base64chars.find(a) << 2) & 0xFF) | ((my_base64chars.find(b) >> 4) & 0xFF):
serial__number[i] = a
if j + 1 >= len(enc2):
serial__number[i + 1] = b
done_1 = True
break
for c in my_base64chars:
if enc2[j + 1] == ((my_base64chars.find(b) << 4) & 0xF0) | (
(my_base64chars.find(c) >> 2) & 0xFF):
serial__number[i + 1] = b
if j + 2 >= len(enc2):
serial__number[i + 2] = c
done_2 = True
break
for d in my_base64chars:
if enc2[j + 2] == ((my_base64chars.find(c) << 6) & 0xC0) | (
my_base64chars.find(d) & 0xFF):
serial__number[i + 2] = c
serial__number[i + 3] = d
i += 4
j += 3
return bytearray(serial__number).strip(b'\x00').decode()
if __name__ == '__main__':
username = input("Username (Locked): ")
from_CPUID = username.encode()
enc1 = encode(bytearray(from_CPUID))
sm = modify_cpuid_time(enc1)
encoded2 = encode(bytearray(sm))
serial_number = get_serial_number(encoded2)
print("Serial: {}".format(serial_number))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment