def gen_serial(name): serial = str() for i in range(len(name)): serial += hex(ord(name[i])^(0x10*(i%3+1)))[2:] return serial def get_name(serial): name = str() for i in range(len(serial)/2): name += hex(int(serial[i*2:(i+1)*2],16)^(0x10*(i%3+1)))[2:].decode('hex') return name print get_name("5B134977135E7D13")