这是be-quick-or-be-dead-1在picoCTF挑战(下载)
在这个文件中我们可以看到decrypt_flag()函数,这个函数返回这个标志:
./be-quick-or-be-dead-1
Calculating key...
Done calculating key
Printing flag:
picoCTF{why_bother_doing_unnecessary_computation_fedbb737}
我想用python实现这个功能,我写了这段代码:
key=[0x2c,0x97,0xa5,0xe9]
i=0
flag=[0x5c,0xfe,0xc6,0x86,0x6e,0xc3,0xe3,0x92,0x59,0xff,0xdc,0xb6,0x4d,0xf8,0xd1,0x81,0x55,0xe5,0xfa,0x8d,0x5e,0xfe,0xcb,0x8e,0x6d,0xe2,0xcb,0x87,0x56,0xf4,0xc0,0x9a,0x47,0xf6,0xd7,0x90,0x6a,0xf4,0xca,0x84,0x46,0xe2,0xd1,0x88,0x43,0xfe,0xca,0x87,0x67,0xf1,0xc0,0x8d,0x5b,0xf5,0x92,0xda,0x0d,0xea]
while i < 58 :
flag[i] = chr(flag[i] ^ key[(i&3)])
i=i+1
print "".join(flag)
但是当我运行它时,打印错误的标志:
picoBTF{uhy_aothyr_dringAunnzceskaryFcomjutaoionKfedwb73!}
我的问题是什么?
谢谢