python ByteCode

题目

请看这里: http://pan.baidu.com/s/1jGpB8DS

write up

使用python反编译工具,比如http://tool.lu/pyc/

得到代码实现:

def encrypt(key, seed, string):
    rst = []
    for v in string:
        rst.append((ord(v) + seed ^ ord(key[seed])) % 255)
        seed = (seed + 1) % len(key)

    return rst

if __name__ == '__main__':
    print("Welcome to idf's python crackme")
    flag = input('Enter the Flag: ')
    KEY1 = 'Maybe you are good at decryptint Byte Code, have a try!'
    KEY2 = [
        124,
        48,
        52,
        59,
        164,
        50,
        37,
        62,
        67,
        52,
        48,
        6,
        1,
        122,
        3,
        22,
        72,
        1,
        1,
        14,
        46,
        27,
        232]
    en_out = encrypt(KEY1, 5, flag)
    if KEY2 == en_out:
        print('You Win')
    else:
        print('Try Again !')

逆向:

def decrypt_each(key, seed, KEY2):
    answer = ""
    for each in KEY2:
        password = each
        for i in range(128):
            result = (i + seed ^ ord(key[seed])) % 255
            if password == result:
                answer += chr(i)
                break
        seed = (seed + 1) % len(key)

    return answer

if __name__ == '__main__':
    KEY1 = 'Maybe you are good at decryptint Byte Code, have a try!'
    KEY2 = [
    124,
    48,
    52,
    59,
    164,
    50,
    37,
    62,
    67,
    52,
    48,
    6,
    1,
    122,
    3,
    22,
    72,
    1,
    1,
    14,
    46,
    27,
    232]
    answer = decrypt_each(KEY1, 5, KEY2)
    print(answer)

Last updated