python逆向Crackme.pyc题目

下载得到一个crackme.pyc文件
通过uncompyle2反编译为crackme.py文件

如下:

# 2017.04.01 11:41:36 Öйú±ê׼ʱ¼ä
#Embedded file name: d:/idf.py


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 !'
+++ okay decompyling crackme.pyc 
# decompiled 1 files: 1 okay, 0 failed, 0 verify failed
# 2017.04.01 11:41:37 Öйú±ê׼ʱ¼ä

编写逆向函数:



def decrypt(key1,seed,key2):
    str = ''
    for i in key2:
        v = (i^ord(key1[seed]))-seed
        seed = (seed+1)%255
        str += chr(v)
    return str

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]
    print decrypt(KEY1,5,KEY2)

得到答案:WCTF{ILOVEPYTHONSOMUCH}

你可能感兴趣的:(python)