Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def bin2char(bin_text):
- return ''.join(chr(int(bin_text[i:i+8], 2)) for i in xrange(0, len(bin_text), 8))
- def char2bin(c):
- return bin(ord(c))[2:].zfill(8)
- def RCL(c):
- _bin = list(char2bin(c))
- cf = _bin[0]
- for i in xrange(0,7):
- _bin[i] = _bin[i+1]
- _bin[7] =cf
- return bin2char("".join(_bin))
- def RCR(c):
- _bin = list(char2bin(c))
- cf = _bin[7]
- for i in xrange(7,0,-1):
- _bin[i] = _bin[i-1]
- _bin[0] =cf
- return bin2char("".join(_bin))
- def xor(a,b):
- return chr(ord(a)^ord(b))
- def sumstr(a,b):
- return chr((ord(a)+ord(b))&0xff)
- def check(x3B,a,x1,x2):
- # x2 = _9576
- # x1 = _955E
- a = RCL(a)
- a = RCL(a)
- a = RCL(a)
- stack = a
- a = x3B
- a = RCR(a)
- a = RCR(a)
- x3B = a
- a = stack
- a = sumstr(a,x3B)
- a = xor(a,x1)
- x3B = a
- a = RCL(a)
- a = RCL(a)
- a = RCL(a)
- a = RCL(a)
- if a==x2:
- global _3B
- _3B = x3B
- return True
- return False
- _955E = list("703053A1D3703F64B316E4045F3AEE42B1A137156E882AAB".decode("hex"))
- _9576 = list("20AC7A25D79CC21D58D01325966ADC7E2EB4B410CB1DC266".decode("hex"))
- charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
- input = ""
- _3B = "\x00"
- flag = ""
- for i in xrange(0x18):
- for c in charset:
- if check(_3B,c,_955E[i],_9576[i]):
- print i,c
- flag += c
- break
- print flag
- # flag{NOHACK4UXWRATHOFKFUHRERX}
Advertisement
Add Comment
Please, Sign In to add comment