Пример #1
0
    def __init__(self, qqnum, qqpwd):
        self.socket = RawSocket('113.108.90.53', 8080)
        if not self.socket.connect():
            raise Exception('socket connect error!')
        #QQ
        self.qqnum = qqnum
        self.qqpwd = qqpwd
        self.vcode = ''
        self.qqHexstr = Coder.str2hexstr(qqnum)
        self.pwdMd5 = MD5.md5_hex(qqpwd)
        self.uin = Coder.qqnum2hexstr(qqnum)
        self.HEART_INTERVAL = 8 * 60  #心跳时间间隔 如果在手机QQ上注销/退出帐号后,一般10分钟左右您的QQ号就不会显示在线了
        self.server_time = Coder.num2hexstr(int(time.time()), 4)
        self.alive = False
        self.verify = False

        #Android
        self.seq = 1000
        self.appId = Coder.num2hexstr(537042772, 4)
        self.extBin = Coder.trim('')
        self.msgCookies = Coder.trim('F9 83 8D 80')
        self.imei = Coder.str2hexstr('864116195797922')
        self.ksid = Coder.trim('')
        self.extBin = Coder.trim('')
        self.ver = Coder.str2hexstr('|460006202217491|A5.8.0.157158')
        self.os_type = Coder.str2hexstr('android')
        self.os_version = Coder.str2hexstr('4.2.2')
        self.network_type = Coder.str2hexstr('')
        self.sim_operator_name = Coder.str2hexstr('CMCC')
        self.apn = Coder.str2hexstr('wifi')
        self.device = Coder.str2hexstr('Lenovo A820t')
        self.device_product = Coder.str2hexstr('Lenovo')
        self.package_name = Coder.str2hexstr('com.tencent.mobileqq')
        self.wifi_name = Coder.str2hexstr('OOOOOOOOO')

        #cmd
        self.loginCmd = Coder.str2hexstr('wtlogin.login')

        #Keys
        self.defaultKey = '00' * 16
        self.randomKey = Coder.genBytesHexstr(16)
        self.keyId = random.randint(0, len(Keys.pubKeys) - 1)
        self.pubKey = Keys.pubKeys[self.keyId]
        self.shareKey = Keys.shareKeys[self.keyId]
        self.pwdKey = Coder.hash_qqpwd_hexstr(qqnum, qqpwd)
        self.tgtKey = Coder.genBytesHexstr(16)
        self.sessionKey = ''

        #debug
        print 'uin: ', self.uin
        print 'pwdMd5: ', self.pwdMd5
        print 'randomKey: ', self.randomKey
        print 'pubKey: ', self.pubKey
        print 'shareKey: ', self.shareKey
        print 'pwdKey: ', self.pwdKey
        print 'tgtKey: ', self.tgtKey
Пример #2
0
    def __init__(self, qqnum, qqpwd):
        self.socket = RawSocket('113.108.90.53', 8080)
        if not self.socket.connect():
            raise Exception('socket connect error!')
        #QQ
        self.qqnum = qqnum
        self.qqpwd = qqpwd
        self.vcode = ''
        self.qqHexstr = Coder.str2hexstr(qqnum)
        self.pwdMd5 = MD5.md5_hex(qqpwd)
        self.uin = Coder.qqnum2hexstr(qqnum)
        self.HEART_INTERVAL = 8*60 #心跳时间间隔 如果在手机QQ上注销/退出帐号后,一般10分钟左右您的QQ号就不会显示在线了
        self.server_time = Coder.num2hexstr(int(time.time()), 4)
        self.alive = False
        self.verify = False

        #Android
        self.seq = 1000
        self.appId = Coder.num2hexstr(537042772, 4)
        self.extBin = Coder.trim('')
        self.msgCookies = Coder.trim('F9 83 8D 80')
        self.imei = Coder.str2hexstr('864116195797922')
        self.ksid = Coder.trim('')
        self.extBin = Coder.trim('')
        self.ver = Coder.str2hexstr('|460006202217491|A5.8.0.157158')
        self.os_type = Coder.str2hexstr('android')
        self.os_version = Coder.str2hexstr('4.2.2')
        self.network_type = Coder.str2hexstr('')
        self.sim_operator_name = Coder.str2hexstr('CMCC')
        self.apn = Coder.str2hexstr('wifi')
        self.device = Coder.str2hexstr('Lenovo A820t')
        self.device_product = Coder.str2hexstr('Lenovo')
        self.package_name = Coder.str2hexstr('com.tencent.mobileqq')
        self.wifi_name = Coder.str2hexstr('OOOOOOOOO')

        #cmd
        self.loginCmd = Coder.str2hexstr('wtlogin.login')

        #Keys
        self.defaultKey = '00'*16
        self.randomKey = Coder.genBytesHexstr(16)
        self.keyId = random.randint(0, len(Keys.pubKeys)-1)
        self.pubKey = Keys.pubKeys[self.keyId]
        self.shareKey = Keys.shareKeys[self.keyId]
        self.pwdKey = Coder.hash_qqpwd_hexstr(qqnum, qqpwd)
        self.tgtKey = Coder.genBytesHexstr(16)
        self.sessionKey = ''

        #debug
        print 'uin: ', self.uin
        print 'pwdMd5: ', self.pwdMd5
        print 'randomKey: ', self.randomKey
        print 'pubKey: ', self.pubKey
        print 'shareKey: ', self.shareKey
        print 'pwdKey: ', self.pwdKey
        print 'tgtKey: ', self.tgtKey
Пример #3
0
 def tlv106(uin, server_time, pwdMd5, tgtKey, imei, appId, pwdKey):
     tlv = ''
     tlv += Coder.trim('00 03')
     tlv += Coder.genBytesHexstr(4)
     tlv += Coder.trim('00 00 00 05 00 00 00 10 00 00 00 00 00 00 00 00')
     tlv += uin
     tlv += server_time
     tlv += Coder.trim('00 00 00 00 01')
     tlv += pwdMd5
     print 'tlv106 start len '+ bytes(len(tlv))
     print 'tgtKey val:' +tgtKey
     tlv += tgtKey
     print 'tlv106 end len '+ bytes(len(tlv))
     tlv += Coder.trim('00 00 00 00 01')
     tlv += imei
     tlv += appId
     tlv += Coder.trim('00 00 00 01')
     tlv += Coder.trim('00 00')
     
     print 'tlv106 val:'+tlv
     
     tlv = TEA.entea_hexstr(tlv, pwdKey)
    
     tlvlen = len(tlv)
     
     tlv = Coder.num2hexstr(len(tlv)/2, 2) + tlv
     tlv = Coder.trim('01 06') + tlv
    
     print 'tlv title :'+Coder.trim('01 06') + Coder.num2hexstr(len(tlv)/2, 2) 
      
     print 'tlv entea index :' + bytes(len(tlv) - tlvlen) +" end "+bytes(tlvlen)  
      
     return tlv
Пример #4
0
 def tlv1(uin, server_time):
     tlv = ''
     tlv += Coder.trim('00 01')
     tlv += Coder.genBytesHexstr(4)
     tlv += uin
     tlv += server_time
     tlv += Coder.trim('00 00 00 00')
     tlv += Coder.trim('00 00')
     tlv = Coder.num2hexstr(len(tlv) / 2, 2) + tlv
     tlv = Coder.trim('00 01') + tlv
     return tlv
Пример #5
0
 def tlv1(uin, server_time):
     tlv = ''
     tlv += Coder.trim('00 01')
     tlv += Coder.genBytesHexstr(4)
     tlv += uin
     tlv += server_time
     tlv += Coder.trim('00 00 00 00')
     tlv += Coder.trim('00 00')
     tlv = Coder.num2hexstr(len(tlv)/2, 2) + tlv
     tlv = Coder.trim('00 01') + tlv
     return tlv
Пример #6
0
 def tlv106(uin, server_time, pwdMd5, tgtKey, imei, appId, pwdKey):
     tlv = ''
     tlv += Coder.trim('00 03')
     tlv += Coder.genBytesHexstr(4)
     tlv += Coder.trim('00 00 00 05 00 00 00 10 00 00 00 00 00 00 00 00')
     tlv += uin
     tlv += server_time
     tlv += Coder.trim('00 00 00 00 01')
     tlv += pwdMd5
     tlv += tgtKey
     tlv += Coder.trim('00 00 00 00 01')
     tlv += imei
     tlv += appId
     tlv += Coder.trim('00 00 00 01')
     tlv += Coder.trim('00 00')
     tlv = TEA.entea_hexstr(tlv, pwdKey)
     tlv = Coder.num2hexstr(len(tlv) / 2, 2) + tlv
     tlv = Coder.trim('01 06') + tlv
     return tlv
Пример #7
0
 def tlv106(uin, server_time, pwdMd5, tgtKey, imei, appId, pwdKey):
     tlv = ''
     tlv += Coder.trim('00 03')
     tlv += Coder.genBytesHexstr(4)
     tlv += Coder.trim('00 00 00 05 00 00 00 10 00 00 00 00 00 00 00 00')
     tlv += uin
     tlv += server_time
     tlv += Coder.trim('00 00 00 00 01')
     tlv += pwdMd5
     tlv += tgtKey
     tlv += Coder.trim('00 00 00 00 01')
     tlv += imei
     tlv += appId
     tlv += Coder.trim('00 00 00 01')
     tlv += Coder.trim('00 00')
     tlv = TEA.entea_hexstr(tlv, pwdKey)
     tlv = Coder.num2hexstr(len(tlv)/2, 2) + tlv
     tlv = Coder.trim('01 06') + tlv
     return tlv
Пример #8
0
    def __init__(self, qqnum, qqpwd, window):

        self.window = window
        # self.ipserver = socket.gethostbyname('msfwifi.3g.qq.com')
        self.ipserver = '14.215.138.105'

        self.socket = RawSocket(self.ipserver, 8080)
        if not self.socket.connect():
            raise Exception('socket connect error!')
        #QQ
        self.Addvalidation = '你好!'  #好友添加验证
        self.qqnum = qqnum
        self.qqpwd = qqpwd
        self.vcode = ''
        self.qqHexstr = Coder.str2hexstr(qqnum)
        self.pwdMd5 = MD5.md5_hex(qqpwd)
        self.uin = Coder.qqnum2hexstr(qqnum)
        self.HEART_INTERVAL = 3 * 60  #心跳时间间隔 如果在手机QQ上注销/退出帐号后,一般10分钟左右您的QQ号就不会显示在线了
        self.server_time = Coder.num2hexstr(int(time.time()), 4)
        self.alive = False
        self.verify = False
        self.addfriendlist = []
        self.friendMsgIDList = []
        self.GroupMsgIDList = []
        #Android
        self.seq = 10000
        self.appId = Coder.num2hexstr(537042771, 4)
        self.extBin = Coder.trim('')
        self.msgCookies = Coder.trim('F9 83 8D 80')
        self.msgCookies2 = Coder.trim('B6 CC 78 FC')
        self.imei = Coder.str2hexstr('866413457644252')
        self.ksid = Coder.trim(
            '93 AC 68 93 96 D5 7E 5F 94 96 B8 15 36 AA FE 91')
        self.extBin = Coder.trim('')
        self.ver = Coder.str2hexstr('5.8.0.157158')
        self.os_type = Coder.str2hexstr('android')
        self.os_version = Coder.str2hexstr('4.4.4')
        self.network_type = Coder.str2hexstr('')
        self.sim_operator_name = Coder.str2hexstr('CMCC')
        self.apn = Coder.str2hexstr('wifi')
        self.device = Coder.str2hexstr('Lenovo A820t')
        self.device_product = Coder.str2hexstr('Lenovo')
        self.package_name = Coder.str2hexstr('com.tencent.mobileqq')
        self.wifi_name = Coder.str2hexstr('OOOOOOOOO')

        #cmd
        self.loginCmd = Coder.str2hexstr('wtlogin.login')

        #Keys
        self.defaultKey = '00' * 16
        self.randomKey = Coder.genBytesHexstr(16)
        self.keyId = random.randint(0, len(Keys.pubKeys) - 1)
        self.pubKey = Keys.pubKeys[self.keyId]
        self.shareKey = Keys.shareKeys[self.keyId]
        self.pwdKey = Coder.hash_qqpwd_hexstr(qqnum, qqpwd)
        self.tgtKey = Coder.genBytesHexstr(16)
        self.sessionKey = ''
        self.qqkey = ''
        #debug
        print 'uin: ', self.uin
        print 'pwdMd5: ', self.pwdMd5
        print 'randomKey: ', self.randomKey
        print 'pubKey: ', self.pubKey
        print 'shareKey: ', self.shareKey
        print 'pwdKey: ', self.pwdKey
        print 'tgtKey: ', self.tgtKey