home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- from util import fmt_to_dict, odict, this_list, rol, try_this
- from hashlib import sha1
- from M2Crypto.RC4 import RC4
- from base64 import b64encode, b64decode
- KEYLEN = 128
-
- escape = lambda s: s.replace('/', '/1').replace('\\', '/2')
-
- unescape = lambda s: s.replace('/1', '/').replace('/2', '\\')
-
- def crypt(nc, password, data = ''):
- (key, salt1) = make_key(nc, password)
- return RC4(key).update(salt1 + data)
-
-
- def make_key(nc, password):
- salt = b64decode(nc)
- salt1 = salt[:32]
- salt2 = salt[32:]
- key = sha1(sha1(password.encode('utf-16-le')).digest() + salt2).digest()
- key = key[:KEYLEN / 8]
- rest = key[KEYLEN / 8:]
- return (key, salt1)
-
-
- def decrypt(nonce, password, data):
- (key, salt1) = make_key(nonce, password)
- return RC4(key).update(b64decode(data))[len(salt1):]
-
-
- def roflcopter(chlnum, sesskey, uid):
- return rol(sesskey, 5) ^ rol(uid, 9) ^ chlnum
-
-
- class msmsg(odict):
-
- def __init__(self, d_or_s = '', **k):
- if isinstance(d_or_s, basestring):
- self._orig = d_or_s
- d = self.parse(d_or_s)
- else:
- d = d_or_s
- odict.__init__(self, d, **k)
- if 'body' in self:
- self['body'] = unescape(str(self['body']))
-
- for None in self:
- key = None
- if (None, try_this)((lambda : '\x1c' in self[key]), False) or key == 'body':
- self[key] = msdict(self[key])
-
- for None in self:
- key = None
- if isinstance(self[key], basestring):
-
- try:
- self[key] = eval(self[key], { }, { })
- except Exception:
- pass
- except:
- None<EXCEPTION MATCH>Exception
-
-
-
-
-
-
- def cmd(self):
- return self._keys[0]
-
- cmd = property(cmd)
-
- def parse(self, s):
- if not s:
- return { }
-
- data = s.strip('\\').split('\\')
- return zip(data[::2], data[1::2])
-
- parse = classmethod(parse)
-
- def __str__(self):
- return '\\%s\\final\\' % '\\'.join((lambda .0: for k, v in .0:
- '\\'.join((str(k), str(v))))(self.iteritems()))
-
-
-
- class msdict(list):
- delim1 = '\x1c'
- delim2 = '='
-
- def __init__(self, s):
- if s:
- list.__init__((self,), (lambda .0: for entry in .0:
- entry.strip().split(self.delim2, 1))(s.split(self.delim1)))
- else:
- list.__init__(self)
-
-
- def __getitem__(self, key):
-
- try:
- return list.__getitem__(self, key)[1]
- except Exception:
- r = (filter,)((lambda x: x[0] == key), self)
- if not r:
- raise
- elif len(r) == 1:
- return r[0][1]
- else:
- return [ x[1] for x in r ]
- except:
- []
-
-
-
- def __str__(self):
-
- try:
- return (self.delim1.join,)((lambda .0: for k, v in .0:
- '%s%s%s' % (k, self.delim2, escape(v)))(self.items()))
- except Exception:
- print repr(self)
- raise
-
-
-
- def items(self):
- return self[:]
-
-
- def keys(self):
- return _[1]
-
-
- def values(self):
- return [ x[1] for x in self ]
-
-
-