# -*- coding: gbk -*-
#作者:Light.紫.星
#QQ:1311817771
#翻译自 易语言 安卓QQ协议登陆
from AndroidOnly import*
from AndroidOnly import _pack
from AndroidOnly import _unpack
from dt import dt
import time,random,socket,datetime,struct,os,threading
class Android:
def __init__(s):
s.address=("113.108.90.53",8080) #服务器IP,端口
s.sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.tcp() #TCP
s.qq=dt.qq_info()
s.gb=dt.qq_global()
s.tlv=Tlv_()
s.RequestId=10000
s.pc_sub_cmd=0
s.last_error=""
s.m_friends=dt.JceStruct_FriendInfo
s.m_Neighbor=dt.RespEncounterInfo
s.m_bin=[]
#常量:
s.login_state_logining=0 #正在登陆
s.login_state_veriy=1 #需要验证码
s.login_state_success=2 #验证成功
s.TYPE_BYTE=0
s.TYPE_DOUBLE=5
s.TYPE_FLOAT=4
s.TYPE_INT=2
s.TYPE_JCE_MAX_STRING_LENGTH=104857600
s.TYPE_LIST=9
s.TYPE_LONG=3
s.TYPE_MAP=8
s.TYPE_SHORT=1
s.TYPE_SIMPLE_LIST=13
s.TYPE_STRING1=6
s.TYPE_STRING4=7
s.TYPE_STRUCT_BEGIN=10
s.TYPE_STRUCT_END=11
s.TYPE_ZERO_TAG=12
s.Event_Get_Firends=1 #自己的好友
s.Event_Get_Neighbor=2 #附近人
s.kjdz="68 74 74 70 3A 2F 2F 75 73 65 72 2E 71 7A 6F 6E 65 2E 71 71 2E 63 6F 6D 2F" #空间地址
s.mood="2F 6D 6F 6F 64 2F"
s.gdz="3C 41 01 37 58 00 08 00 30 16 01 30 00 04 16 00 00 05 16 41" #固定值
s.findpeople="0A 0C 1C"
def init(s,qquser,qqpass):
s.qq.Account=qquser
luin=int(qquser)
if(luin>2147483647):
s.qq.user=Xbin.flip(tozjj(luin,"int"))[:4]#取字节集右边 (Xbin.Flip (到字节集 (luin)), 4)
else:
iuin=luin
s.qq.user=Xbin.flip(tozjj(iuin,"int"))#Xbin.Flip (到字节集 (iuin))
s.qq.QQ=long(qquser)
#print "qq.user",tohex(s.qq.user)
s.qq.caption=tozjj(str(qquser),"str")
s.qq.pas=qqpass
s.qq.md51=Hash.md5_bin(qqpass)
#print "md51",tohex(s.qq.md51)
s.qq.md52=Hash.md5_bin(list2str(s.qq.md51)+list2str([0,0,0,0])+list2str(s.qq.user))
s.qq._ksid=tozjj("93 AC 68 93 96 D5 7E 5F 94 96 B8 15 36 AA FE 91","str2")
s.gb.imei="866819027236658"
s.gb.ver=tozjj("5.8.0.157158","str")
s.gb.appId=537042771
s.gb.pc_ver="1F41"
s.gb.os_type="android"
s.gb.os_version="4.4.4"
s.gb._network_type=2
s.gb._apn="wifi"
s.gb.device="vivo X5Max+"
s.gb._apk_id="com.tencent.mobileqq"
s.gb._apk_v="5.8.0.157158"
s.gb._apk_sig=tozjj("A6 B7 45 BF 24 A2 C2 77 52 77 16 F6 F3 6E B6 8D")
s.gb.imei_=tozjj("38 36 36 38 31 39 30 32 37 32 33 36 36 35 38")
s.RequestId=10000
s.qq.token002c=[]
s.qq.token004c=[]
s.qq.key=[0 for i in range(16)]
def tcp(s,method="",data="",tim=0):
if(method=="connect"):
if(s.sock.connect_ex(s.address)==0):
return 1
else:
return 0
elif(method=="disconnect"):
s.sock.close()
elif(method=="send"):
s.sock.sendall(tohex(data))
elif(method=="rec"):
dat=s.sock.recv(10240)
return tozjj(dat.encode("hex"))
else:
pass
def getLastError(s):
return s.last_error
def getSubCmd(s):
if(s.pc_sub_cmd> 2147483647):
s.pc_sub_cmd = 0
s.pc_sub_cmd = s.pc_sub_cmd + 1
return (s.pc_sub_cmd)
def Make_login_sendSsoMsg(s,servicecmd,wupbuffer,ext_bin,imei,ksid,ver,islogin): #登陆使用
pk=_pack();msgcookies=[0,0,0,0];tmp=[]
pk.Empty()
pk.SetInt (s.RequestId)
pk.SetInt (s.gb.appId)
pk.SetInt (s.gb.appId)
pk.SetHex ("01 00 00 00 00 00 00 00 00 00 00 00")
pk.SetInt (len(ext_bin) + 4)
pk.SetBin (ext_bin)
pk.SetInt (len(servicecmd) + 4)
pk.SetBin (tozjj(servicecmd,"str"))
pk.SetInt (len(msgcookies) + 4)
pk.SetBin (msgcookies)
pk.SetInt (len (imei) + 4)
pk.SetBin (tozjj (imei,"str"))
pk.SetInt (len (ksid) + 4)
pk.SetBin (ksid)
pk.SetShort (len (ver) + 2)
pk.SetBin (ver)
tmp = pk.GetAll ()
pk.Empty ()
pk.SetInt (len (tmp) + 4)
pk.SetBin (tmp)
tmp = pk.GetAll ()
pk.Empty ()
pk.SetBin (tmp)
pk.SetInt (len (wupbuffer) + 4)
pk.SetBin (wupbuffer)
if(islogin==1):islogin=0
else:islogin=1
return (s.Pack(Hash.QQTEA (pk.GetAll (), s.qq.key), islogin))
def Pack(s,b,typ):
pk=_pack()
pk.Empty()
if(typ==0):
pk.SetHex("00 00 00 08 02 00 00 00 04")
elif(typ==1):
pk.SetHex ("00 00 00 08 01 00 00")
pk.SetShort (len(qq.token002c) + 4)
pk.SetBin (s.qq.token002c)
else:
pk.SetHex ("00 00 00 09 01")
pk.SetInt (s.RequestId)
pk.SetHex ("00 00 00")
pk.SetShort (len (s.qq.caption) + 4)
pk.SetBin (s.qq.caption)
pk.SetBin (b)
b = pk.GetAll ()
pk.Empty ()
pk.SetInt (len (b) + 4)
pk.SetBin (b)
b = pk.GetAll ()
return b
def Pack_Login(s):
pk=_pack();b=[];tmp=[];wupbuffer=[]
tlv109=[];tlv124=[];tlv128=[];tlv16e=[];
s.qq.shareKey=tozjj("957C3AAFBF6FAF1D2C2F19A5EA04E51C")
s.qq.pub_key=tozjj("02244B79F2239755E73C73FF583D4EC5625C19BF8095446DE1")
s.qq.TGTKey = Xbin.GetRandomBin (16)
s.qq.tim=Xbin.flip(tozjj(int(time.time()),"int"))
s.qq.randKey=Xbin.GetRandomBin (16)
#print "TGTKey",s.qq.TGTKey
#print s.qq.tim
#print "randKey",s.qq.randKey
pk.Empty ()
pk.SetHex ("00 09")
pk.SetShort (19) #00 13 //下面tlv个数
pk.SetBin (s.tlv.tlv18 (s.qq.user))
pk.SetBin (s.tlv.tlv1 (s.qq.user, s.qq.tim))
pk.SetBin (s.tlv.tlv106 (s.qq.user, s.qq.md51, s.qq.md52, s.qq.TGTKey, s.gb.imei_, s.qq.tim, s.gb.appId))
pk.SetBin (s.tlv.tlv116 ())
pk.SetBin (s.tlv.tlv100 (s.gb.appId))
pk.SetBin (s.tlv.tlv107 ())
pk.SetBin (s.tlv.tlv108 (s.qq._ksid))
tlv109 = s.tlv.tlv109 (s.gb.imei_)
tlv124 = s.tlv.tlv124 (s.gb.os_type, s.gb.os_version, s.gb._network_type, s.gb._apn)
tlv128 = s.tlv.tlv128 (s.gb.device, s.gb.imei_)
tlv16e = s.tlv.tlv16e (s.gb.device)
pk.SetBin (s.tlv.tlv144 (s.qq.TGTKey, tlv109, tlv124, tlv128, tlv16e))
pk.SetBin (s.tlv.tlv142 (s.gb._apk_id))
pk.SetBin (s.tlv.tlv145 (s.gb.imei_))
pk.SetBin (s.tlv.tlv154 (s.RequestId))
pk.SetBin (s.tlv.tlv141 (s.gb._network_type, s.gb._apn))
pk.SetBin (s.tlv.tlv8 ())
pk.SetBin (s.tlv.tlv16b ())
pk.SetBin (s.tlv.tlv147 (s.gb._apk_v, s.gb._apk_sig))
pk.SetBin (s.tlv.tlv177 ())
pk.SetBin (s.tlv.tlv187 ())
pk.SetBin (s.tlv.tlv188 ())
pk.SetBin (s.tlv.tlv191 ())
wupbuffer = pk.GetAll ()
wupbuffer = s.Pack_Pc("08 10",Hash.QQTEA(wupbuffer, s.qq.shareKey),s.qq.randKey, s.qq.pub_key)
return s.Make_login_sendSsoMsg("wtlogin.login",wupbuffer,[],s.gb.imei,s.qq._ksid,s.gb.ver,1)
def Pack_OidbSvc_0x7a2_0(s): #OidbSvc_0x7a2_0
b=tozjj("08 A2 0F 10 00 18 00 22 02 08 00")
return (s.Make_login_sendSsoMsg ("OidbSvc.0x7a2_0",b,s.qq.token004c,s.imei,s.qq._ksid,s.ver,0))
def Pack_Pc(s,cmd,b,ext_key=[],ext_bin=[]):
pk=_
- 1
- 2
前往页