PhieuLang

RE200_CSAW

Sep 27th, 2015
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.27 KB | None | 0 0
  1. def bin2char(bin_text):
  2.     return ''.join(chr(int(bin_text[i:i+8], 2)) for i in xrange(0, len(bin_text), 8))
  3. def char2bin(c):
  4.     return bin(ord(c))[2:].zfill(8)
  5. def RCL(c):
  6.     _bin = list(char2bin(c))
  7.     cf = _bin[0]
  8.     for i in xrange(0,7):
  9.         _bin[i] = _bin[i+1]
  10.     _bin[7] =cf
  11.     return bin2char("".join(_bin))
  12. def RCR(c):
  13.     _bin = list(char2bin(c))
  14.     cf = _bin[7]
  15.     for i in xrange(7,0,-1):
  16.         _bin[i] = _bin[i-1]
  17.     _bin[0] =cf
  18.     return bin2char("".join(_bin))
  19. def xor(a,b):
  20.     return chr(ord(a)^ord(b))
  21. def sumstr(a,b):
  22.     return chr((ord(a)+ord(b))&0xff)
  23. def check(x3B,a,x1,x2):
  24.     # x2 = _9576
  25.     # x1 = _955E
  26.     a = RCL(a)
  27.     a = RCL(a)
  28.     a = RCL(a)
  29.     stack = a
  30.     a = x3B
  31.     a = RCR(a)
  32.     a = RCR(a)
  33.     x3B = a
  34.     a = stack
  35.     a = sumstr(a,x3B)
  36.     a = xor(a,x1)
  37.     x3B = a
  38.     a = RCL(a)
  39.     a = RCL(a)
  40.     a = RCL(a)
  41.     a = RCL(a)
  42.     if a==x2:
  43.         global _3B
  44.         _3B = x3B
  45.         return True
  46.     return False
  47.  
  48. _955E = list("703053A1D3703F64B316E4045F3AEE42B1A137156E882AAB".decode("hex"))
  49. _9576 = list("20AC7A25D79CC21D58D01325966ADC7E2EB4B410CB1DC266".decode("hex"))
  50.  
  51. charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  52. input = ""
  53. _3B = "\x00"
  54. flag = ""
  55. for i in xrange(0x18):
  56.     for c in charset:
  57.         if check(_3B,c,_955E[i],_9576[i]):
  58.             print i,c
  59.             flag += c
  60.             break
  61. print flag
  62. # flag{NOHACK4UXWRATHOFKFUHRERX}
Advertisement
Add Comment
Please, Sign In to add comment