home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 October / maximum-cd-2011-10.iso / DiscContents / digsby_setup.exe / lib / oscar / login2.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-06-22  |  8.1 KB  |  174 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. HOST = 'kdc.uas.aol.com'
  5. HOST2 = 'localhost:50000'
  6. top = 'POST / HTTP/1.1\r\n' + 'Accept: application/x-snac\r\n' + 'Content-Type: application/x-snac\r\n' + 'User-Agent: CLC/1.0\r\n' + 'Host: ' + HOST + '\r\n' + 'Content-Length: %d'
  7. top2 = '\r\n' + 'Connection: Keep-Alive\r\n' + 'Cache-Control: no-cache\r\n' + '\r\n'
  8. top3 = '\x05\x0c\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00'
  9. middle = '\xc0\xa8\xd7\x80\x00\x00\x00\x01\x00\x00\x00\x06\x05\x00\x00\x00\x00\x02\x00\n' + '\x00\x02\x00\x01\x00\x0b\x00\x04\x00\x10' + '\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00' + '\x00\x02US' + '\x00\x02en' + '\x00\x02\x00\x03' + '\x00\x02US' + '\x00\x04\x00\x02en' + '\x00\x00\x00\x00\x00\x00'
  10. m2 = '\x00\rTritonService' + '\x00\x00\x00\x00\x00\x00\x00\x01' + '\x00\x02'
  11. remainder = '@\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' + '\x00\x14urfaceisnotapassword' + '\x00\x03\x00\x01' + '\x00\x05UTF-8' + '\x00\x02' + '\x00\x02en' + '\x00\x03' + '\x00\x02US'
  12. from util import pack_pstr, unpack_pstr
  13.  
  14. def make_remainder(password):
  15.     return '@\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' + pack_pstr('\x00' + pack_pstr(password) + '\x00\x03\x00\x01' + '\x00\x05UTF-8' + '\x00\x02' + '\x00\x02en' + '\x00\x03' + '\x00\x02US')
  16.  
  17. import socket
  18. import ssl
  19. from struct import pack
  20. from util import fmt_to_dict
  21. SiteState = fmt_to_dict('|', ':')
  22.  
  23. def do_https(v):
  24.     s = socket.SocketType()
  25.     s.connect(('kdc.uas.aol.com', 443))
  26.     s = ssl.wrap_socket(s)
  27.     s.write(v)
  28.     return s
  29.  
  30.  
  31. def make_packet(un, password):
  32.     n = top3 + 'i0' + middle
  33.     n += pack_pstr(un)
  34.     n += m2
  35.     r = make_remainder(password)
  36.     n += pack('!H', len(r))
  37.     n += r
  38.     t = top % len(n)
  39.     return t + top2 + n
  40.  
  41.  
  42. def get_krbtgt(un, password):
  43.     n = make_packet(un, password)
  44.     s = do_https(n)
  45.     return s.read()
  46.  
  47.  
  48. def make_packet2(un, password):
  49.     n = top3 + 'i0' + middle
  50.     n += pack_pstr(un.encode('ascii'))
  51.     n += m2
  52.     r = make_remainder(password)
  53.     n += pack('!H', len(r))
  54.     n += r
  55.     return n
  56.  
  57.  
  58. def get_krbtgt2(un, password):
  59.     import urllib2
  60.     n = make_packet2(un, password)
  61.     loc = 'https://' + HOST + '/'
  62.     req = urllib2.Request(loc, n, headers = {
  63.         'Content-Type': 'application/x-snac',
  64.         'Accept': 'application/x-snac' })
  65.     return urllib2.urlopen(req).read()
  66.  
  67. from struct import unpack
  68. from datetime import datetime
  69. import base64
  70. from util import UrlQuery
  71. from OscarUtil import s_tlv, s_tlv_list, tlv
  72.  
  73. def readshort(bytes):
  74.     return (unpack('!H', bytes[:2])[0], bytes[2:])
  75.  
  76.  
  77. def readlen(bytes, _len):
  78.     return (bytes[:_len], bytes[_len:])
  79.  
  80. from logging import getLogger
  81. xsnaclog = getLogger('X_SNAC')
  82.  
  83. class X_SNAC(object):
  84.     
  85.     def __init__(self, bytes):
  86.         xsnaclog.info('bytes were %r', bytes)
  87.         (self.family, self.subtype) = unpack('!HH', bytes[:4])
  88.         bytes = bytes[4:]
  89.         self.flags = bytes[:8]
  90.         bytes = bytes[8:]
  91.         self.reqid = bytes[:2]
  92.         bytes = bytes[2:]
  93.         self.date1 = datetime.fromtimestamp(unpack('!I', bytes[:4])[0])
  94.         bytes = bytes[4:]
  95.         (self.unknown1, bytes) = readlen(bytes, 4)
  96.         (plen, bytes) = readshort(bytes)
  97.         (self.principal1, bytes) = readlen(bytes, plen)
  98.         (plen, bytes) = readshort(bytes)
  99.         (self.principal2, bytes) = readlen(bytes, plen)
  100.         (num_tokens, bytes) = readshort(bytes)
  101.         self.tokens = []
  102.         for i in range(num_tokens):
  103.             d = { }
  104.             self.tokens.append(d)
  105.             (d['main'], bytes) = s_tlv(bytes)
  106.             d['strs'] = []
  107.             for j in range(4):
  108.                 (l, bytes) = readshort(bytes)
  109.                 (s, bytes) = readlen(bytes, l)
  110.                 d['strs'].append(s)
  111.             
  112.             d['0x10'] = unpack('!B', bytes[0])
  113.             bytes = bytes[1:]
  114.             (l, bytes) = readshort(bytes)
  115.             (d['footer_junk1'], bytes) = readlen(bytes, l)
  116.             (d['footer_dates'], bytes) = readlen(bytes, 24)
  117.             dates = [ d['footer_dates'][x:x + 4] for x in range(0, 24, 4) ]
  118.             dates = [ unpack('!I', date)[0] for date in dates ]
  119.             d['footer_dates'] = [ datetime.fromtimestamp(date) for date in dates ]
  120.             (d['footer_junk2'], bytes) = readlen(bytes, 12)
  121.             (num_tlvs, bytes) = readshort(bytes)
  122.             (d['footer_tlvs'], bytes) = s_tlv_list(bytes, num_tlvs)
  123.         
  124.         (num_tlvs, bytes) = readshort(bytes)
  125.         self.footer = s_tlv_list(bytes, num_tlvs)
  126.  
  127.  
  128.  
  129. def go_to_mail(un = 'digsby01', password = 'thisisapassword', baseurl = 'https://my.screenname.aol.com/_cqr/login/login.psp?', sitedomain = 'sns.webmail.aol.com', OrigUrl = 'http://webmail.aol.com/Suite.aspx?'):
  130.     OrigUrl = UrlQuery(OrigUrl, app = 'mail')
  131.     t = X_SNAC(get_krbtgt2(un, password))
  132.     mytlv = t.tokens[1]['main']
  133.     authTok = base64.b64encode(tlv(mytlv.t, mytlv.v))
  134.     out = UrlQuery(baseurl, sitedomain = sitedomain, lang = 'en', locale = 'us', siteState = 'OrigUrl=' + OrigUrl, mcState = 'doAAMAuth', authToken = authTok)
  135.     import wx
  136.     wx.LaunchDefaultBrowser(out)
  137.  
  138.  
  139. def go_to_mail2(un = 'digsby01', password = 'passwordsshouldntbeinsourcecode', remainder = ''):
  140.     t = X_SNAC(get_krbtgt2(un, password))
  141.     mytlv = t.tokens[1]['main']
  142.     authTok = base64.b64encode(tlv(mytlv.t, mytlv.v))
  143.     baseurl = 'https://my.screenname.aol.com/_cqr/login/login.psp?'
  144.     out = UrlQuery(baseurl, authToken = authTok)
  145.     import wx
  146.     wx.LaunchDefaultBrowser(out + remainder)
  147.  
  148.  
  149. def go_to_compose(un = 'digsby01', password = 'theresalotofthesepasswords', **k):
  150.     xsnaclog.debug_s('go_to_compose %s', k)
  151.     t = X_SNAC(get_krbtgt2(un, password))
  152.     mytlv = t.tokens[1]['main']
  153.     authTok = base64.b64encode(tlv(mytlv.t, mytlv.v))
  154.     baseurl = 'https://my.screenname.aol.com/_cqr/login/login.psp?'
  155.     quote = quote
  156.     import urllib
  157.     out = UrlQuery(baseurl, authToken = authTok, mcState = 'doAAMAuth', sitedomain = 'sns.webmail.aol.com', siteState = SiteState({ }, ver = '2', ac = 'WS', at = 'SNS', ld = 'webmail.aol.com', rp = quote(UrlQuery('mail/composemessage.aspx?', **k), safe = ''), uv = 'AIM', lc = 'en-us'))
  158.     import wx
  159.     xsnaclog.debug_s('go_to_compose out: %r', out)
  160.     wx.LaunchDefaultBrowser(out)
  161.  
  162.  
  163. def go_to_msg(un = 'digsby01', password = 'howmanypasswordsdoesittaketochangealightbulb', msg = '18282583'):
  164.     t = X_SNAC(get_krbtgt2(un, password))
  165.     mytlv = t.tokens[1]['main']
  166.     authTok = base64.b64encode(tlv(mytlv.t, mytlv.v))
  167.     baseurl = 'https://my.screenname.aol.com/_cqr/login/login.psp?'
  168.     quote = quote
  169.     import urllib
  170.     out = UrlQuery(baseurl, authToken = authTok, mcState = 'doAAMAuth', sitedomain = 'sns.webmail.aol.com', lang = 'en', locale = 'us', siteState = 'ver:2|ac:WS|at:SNS|ld:webmail.aol.com|rp:' + quote(UrlQuery('Lite/MsgRead.aspx?', dict(folder = 'Inbox', uid = '1.' + msg, seq = '1', start = '0')), safe = '') + '|uv:AIM|lc:en-us')
  171.     import wx
  172.     wx.LaunchDefaultBrowser(out)
  173.  
  174.