Advertisement
Utkar5hM

shape shifter - nahamcon

Dec 17th, 2022
1,041
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.56 KB | None | 0 0
  1. from itertools import permutations, product
  2. from Crypto.Util.number import bytes_to_long as b2l
  3.  
  4. FLAG = open('flag.txt', 'r').read().strip().encode()
  5.  
  6.  
  7. class LFSR():
  8.     def __init__(self, iv):
  9.         self.state = [int(c) for c in iv]
  10.         # self.state = self.iv
  11.  
  12.     def shift(self):
  13.         s = self.state
  14.         newbit = s[15] ^ s[13] ^ s[12] ^ s[10]  # ^ s[0]
  15.         s.pop()
  16.         self.state = [newbit] + s
  17.  
  18.  
  19. if __name__ == "__main__":
  20.     arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c',
  21.            'd', 'e', 'f', 'l', 'g', '{', '}']
  22.     r = 2
  23.     chars = [f'1000110001010111', '1111001000000010','1110110010100010','0111111111011101','1000010111110110','0011111000100000','0100001000010110','0001111000001010','0111000100101010','0101100111100011',
  24.              '0000000101011010','1010111100001010','0010101111110000','1110100111110111','1001101000100010','0010001111000001','0111101111111100','0011110000010101','0110110010001100'
  25.              ]
  26.     flagdec = ''
  27.     mychars = [p for p in product(arr, repeat=2)]
  28.     for i, char in enumerate(chars):
  29.         for flag in mychars:
  30.             strg = ''.join(flag)
  31.             curr = bytes(strg, 'utf-8')
  32.             chars = f'{b2l(curr):016b}'
  33.             assert len(chars) == 16
  34.             lfsr = LFSR(chars)
  35.             for _ in range(31337):
  36.                 lfsr.shift()
  37.             finalstate = ''.join([str(c) for c in lfsr.state])
  38.             if (f'{finalstate}' == f'{char}'):
  39.                 flagdec = flagdec + strg
  40.                 break
  41.     print(flagdec)
  42.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement