re学习(20) BUUCTF-SimpleRev(枚举思想)

思维导图:                    加密算法(用到密钥key)
                     flag——————————————————→加密后的字符串str2(=text)

思路:1.剖析加密算法,反着再来一次加密算法                                            →反

           2.枚举,看看哪些数据经过加密算法后得到数据str2(比如:Z3库) →正

re学习(20) BUUCTF-SimpleRev(枚举思想)_第1张图片

re学习(20) BUUCTF-SimpleRev(枚举思想)_第2张图片 

re学习(20) BUUCTF-SimpleRev(枚举思想)_第3张图片 

编写代码:
 

import string

text='killshadow'

key='ADSFKNDCLS'

key=str.lower(key)
dic=string.ascii_uppercase+string.ascii_lowercase#根据if的先后,可知先大写后小写

result=[]
for i in range(len(text)):
    for j in dic:
        if ((ord(j) - 39 - ord(key[i % len(key)]) + 97) % 26 + 97)==ord(text[i]):#用j进行枚举,如果条件成立就把j添加到数组当中
            result.append(j)
            break
print(str.lower(''.join(result)))

最后结果:flag{kldqcudfzo}

你可能感兴趣的:(#,IDA,reverse,学习)