【Python源码分析】DDCTF misc (╯‵□′)╯︵┻━┻①

第十天

s = "d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb7b9b8e4b5b5e4e2b7b6b5b5b2e1b9b2b2e4b0b0e4b7b7b5e5b3b3b1b1b9b0b7fd"
count = len(s)//2

def change(k):
    m = ""
    for i in range(count):
        m += chr(int((s[i * 2 : i * 2 + 2]),16) - k)
    print(m)


for i in range(150):
    change(i)

这是用python2 写的
今天来分析下这个python源码

是用来生成这个s字符串的数量因为是16进制两两匹配所以是除以2
因为//出来的是int数值 /出来的是float float在下面的range()会出错

count = len(s)//2

建立一个函数change 偏移量k
m空字符初始化
for 循环 0 到前面获取到的count值int类型
chr() 用来转换成字符
[:] s按照数组两两一对分成十六进制
int(xxx,16) 是设定xxx的进制为什么 会自动转换成10进制 然后再去减偏移值

def change(k):
    m = ""
    for i in range(count):
        m += chr(int((s[i * 2 : i * 2 + 2]),16) - k)
    print(m)

然后循环i的值0-149
所以说i=k

for i in range(150):
    change(i)

(:з」∠)大佬提供的源码
作者:Art3mis

你可能感兴趣的:(萌新编程)