import itertools def get_seral(name): serial = str() al = ord(name[0]) ebp_20 = (al & 1) + 5 ebp_1f = ((al >> 1) & 1) + 5 ebp_1e = ((al >> 2) & 1) + 5 ebp_1d = ((al >> 3) & 1) + 5 ebp_1c = ((al >> 4) & 1) + 5 al = ord(name[1]) ebp_28 = (al & 1) + 1 ebp_27 = ((al >> 1) & 1) + 1 bl = ((al >> 2) & 1) + 1 ebp_25 = ((al >> 3) & 1) + 1 ebp_24 = ((al >> 4) & 1) + 1 serial += str(ebp_20 + bl) serial += str(ebp_1d + ebp_25) serial += str(ebp_1f + ebp_24) serial += str(ebp_1e + ebp_28) serial += str(ebp_1c + ebp_27) serial += '-' al = ord(name[2]) ebp_1c = ((al >> 4) & 1) + 5 ebp_1d = ((al >> 3) & 1) + 5 ebp_1e = ((al >> 2) & 1) + 5 ebp_1f = ((al >> 1) & 1) + 5 ebp_20 = (al & 1) + 5 al = ord(name[3]) ebp_28 = ((al & 1) + 1) ebp_27 = ((al >> 1) & 1) + 1 bl = ((al >> 2) & 1) + 1 ebp_25 = ((al >> 3) & 1) + 1 ebp_24 = ((al >> 4) & 1) + 1 serial += str(bl + ebp_20) serial += str(ebp_1d + ebp_25) serial += str(ebp_1f + ebp_24) serial += str(ebp_28 + ebp_1e) serial += str(ebp_1c + ebp_27) return serial chars = "abcdefghijklmnopqrstuvwxyz" min_len, max_len = 3, 3 for n in range(min_len, max_len+1): for xs in itertools.product(chars, repeat=n): bp_str = "".join(xs) serial = get_seral(bp_str + 'p') if serial == "76876-77776": print bp_str + 'p', serial