eis2017 reverseme

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
known=['1', 'A', '2', 'F', '9', '4', '3', 'C', '4', 'D', '8', 'C', '5', 'B', '6', 'E', 'A', '3', 'C', '9', 'B', 'C', 'A', 'D', '7', 'E']
data=[0xf,0x87,0x62,0x14,0x1,0xc6,0xf0,0x21,0x30,0x11,0x50,0xd0,0x82,0x23,0xae,0x23,0xee,0xa9,0xb4,0x52,0x78,0x57,0xc,0x86,0x8b]
flag=[]
def (v2,v3):
if ord(v2)-0x30>9:
b=ord(v2)-55
v2=chr(b)
v4=ord(v2)&0xf
v5=(ord(v3)-55)&0xf
if ord(v3)-0x30<=9:
v5=ord(v3)&0xf
a= v5 |(16*v4)
return a
for i in range(25):
data[i]=data[i]^(cacl(known[i],known[i+1]))
data[i]=((data[i]>>2)|(data[i]<<6))
data[i]=data[i]&0xff
#print chr(data[i])
flag.append(chr(data[i]))
print "".join(flag)