Пример #1
0
        public static byte[] TlvPackage(string LoginType = "")
        {
            var bytes = new byte[0];

            if (LoginType == "AndroidQQ")
            {
                bytes = new byte[] { 0, 9, 0, 24 };               //24个包
                bytes = bytes.Concat(TLV.tlv018(API.QQ.user)).ToArray();
                bytes = bytes.Concat(TLV.tlv001(API.QQ.user, API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv106(API.QQ.user, API.QQ.md5_1, API.QQ.md5_2, API.QQ.TGTKey, API.Device.GUIDBytes, API.QQ.login_Time, API.QQ.Appid, API.QQ.UTF8)).ToArray();
                bytes = bytes.Concat(TLV.tlv116(0)).ToArray();
                bytes = bytes.Concat(TLV.tlv100(API.QQ.Appid.ToString())).ToArray();
                bytes = bytes.Concat(TLV.tlv107()).ToArray();
                if (API.UN_Tlv.T108_ksid.Length > 0)
                {
                    bytes = bytes.Concat(TLV.tlv108(API.UN_Tlv.T108_ksid)).ToArray();
                }
                bytes = bytes.Concat(TLV.tlv142()).ToArray();
                bytes = bytes.Concat(TLV.tlv144(API.QQ.TGTKey, TLV.tlv109(API.Device.AndroidID), TLV.tlv52D(), TLV.tlv124(API.Device.os_type, API.Device.os_version, API.Device.network_type.ToString(), API.Device.apn), TLV.tlv128(API.Device.model, API.Device.GUIDBytes, API.Device.brands), TLV.tlv16e(API.Device.model))).ToArray();
                bytes = bytes.Concat(TLV.tlv145(API.Device.GUIDBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv147(API.Device.Apk_V, API.Device.ApkSig)).ToArray();
                bytes = bytes.Concat(TLV.tlv154(API.QQ.mRequestID)).ToArray();
                bytes = bytes.Concat(TLV.tlv141(API.Device.network_type.ToString(), API.Device.apn)).ToArray();
                bytes = bytes.Concat(TLV.tlv008()).ToArray();
                bytes = bytes.Concat(TLV.tlv511()).ToArray();
                bytes = bytes.Concat(TLV.tlv187(API.Device.MacBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv188(API.Device.AndroidID)).ToArray();
                bytes = bytes.Concat(TLV.tlv194(API.Device.Imsi)).ToArray();
                bytes = bytes.Concat(TLV.tlv191()).ToArray();
                bytes = bytes.Concat(TLV.tlv202(API.Device.WIFIByteSSID, API.Device.WIFISSID)).ToArray();
                bytes = bytes.Concat(TLV.tlv177(API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv516()).ToArray();
                bytes = bytes.Concat(TLV.tlv521()).ToArray();
                bytes = bytes.Concat(TLV.tlv525(1, API.QQ.login_Time, API.QQ.Appid)).ToArray();
                bytes = bytes.Concat(TLV.tlv544()).ToArray();
            }
            else if (LoginType == "HDQQ")
            {
                bytes = new byte[] { 0, 9, 0, 0x18 };
                bytes = bytes.Concat(TLV.tlv018(API.QQ.user)).ToArray();
                bytes = bytes.Concat(TLV.tlv001(API.QQ.user, API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv106(API.QQ.user, API.QQ.md5_1, API.QQ.md5_2, API.QQ.TGTKey, API.Device.GUIDBytes, API.QQ.login_Time, (int)API.Device.AppId, API.QQ.UTF8)).ToArray();
                bytes = bytes.Concat(TLV.tlv116(0)).ToArray();
                bytes = bytes.Concat(TLV.tlv100(API.QQ.Appid.ToString())).ToArray();
                bytes = bytes.Concat(TLV.tlv107()).ToArray();
                if (API.UN_Tlv.T108_ksid.Length > 0)
                {
                    bytes = bytes.Concat(TLV.tlv108(API.UN_Tlv.T108_ksid)).ToArray();
                }
                bytes = bytes.Concat(TLV.tlv142()).ToArray();
                bytes = bytes.Concat(TLV.tlv144(API.QQ.TGTKey, TLV.tlv109(API.Device.AndroidID), TLV.tlv52D(), TLV.tlv124(API.Device.os_type, API.Device.os_version, API.Device.network_type.ToString(), API.Device.apn), TLV.tlv128(API.Device.model, API.Device.GUIDBytes, API.Device.brands), TLV.tlv16e(API.Device.model))).ToArray();
                bytes = bytes.Concat(TLV.tlv145(API.Device.GUIDBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv147(API.Device.Apk_V, API.Device.ApkSig)).ToArray();
                bytes = bytes.Concat(TLV.tlv154(API.QQ.mRequestID)).ToArray();
                bytes = bytes.Concat(TLV.tlv141(API.Device.network_type.ToString(), API.Device.apn)).ToArray();
                bytes = bytes.Concat(TLV.tlv008()).ToArray();
                bytes = bytes.Concat(TLV.tlv511()).ToArray();
                bytes = bytes.Concat(TLV.tlv187(API.Device.MacBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv188(API.Device.AndroidID)).ToArray();
                bytes = bytes.Concat(TLV.tlv194(API.Device.Imsi)).ToArray();

                bytes = bytes.Concat(TLV.tlv191()).ToArray();
                bytes = bytes.Concat(TLV.tlv202(API.Device.WIFIByteSSID, API.Device.WIFISSID)).ToArray();                 // BSSID MD5 WIFISSID/NAME
                bytes = bytes.Concat(TLV.tlv177(API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv516()).ToArray();
                bytes = bytes.Concat(TLV.tlv521()).ToArray();
                bytes = bytes.Concat(TLV.tlv525(1, API.QQ.login_Time, API.QQ.Appid)).ToArray();
            }
            else if (LoginType == "企业QQ")
            {
                bytes = new byte[] { 0, 9, 0, 0x16 };
                bytes = bytes.Concat(TLV.tlv018(API.QQ.user)).ToArray();
                bytes = bytes.Concat(TLV.tlv001(API.QQ.user, API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv106(API.QQ.user, API.QQ.md5_1, API.QQ.md5_2, API.QQ.TGTKey, API.Device.GUIDBytes, API.QQ.login_Time, (int)API.Device.AppId, API.QQ.UTF8)).ToArray();
                bytes = bytes.Concat(TLV.tlv116(0)).ToArray();
                bytes = bytes.Concat(TLV.tlv100(API.QQ.Appid.ToString())).ToArray();
                bytes = bytes.Concat(TLV.tlv107()).ToArray();
                if (API.UN_Tlv.T108_ksid.Length > 0)
                {
                    bytes = bytes.Concat(TLV.tlv108(API.UN_Tlv.T108_ksid)).ToArray();
                }
                bytes = bytes.Concat(TLV.tlv144(API.QQ.TGTKey, TLV.tlv109(API.Device.AndroidID), TLV.tlv52D(), TLV.tlv124(API.Device.os_type, API.Device.os_version, API.Device.network_type.ToString(), API.Device.apn), TLV.tlv128(API.Device.model, API.Device.GUIDBytes, API.Device.brands), TLV.tlv16e(API.Device.model))).ToArray();
                bytes = bytes.Concat(TLV.tlv142()).ToArray();
                bytes = bytes.Concat(TLV.tlv145(API.Device.GUIDBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv154(API.QQ.mRequestID)).ToArray();
                bytes = bytes.Concat(TLV.tlv141(API.Device.network_type.ToString(), API.Device.apn)).ToArray();
                bytes = bytes.Concat(TLV.tlv008()).ToArray();
                bytes = bytes.Concat(TLV.tlv106(API.QQ.user, API.QQ.md5_1, API.QQ.md5_2, API.QQ.TGTKey, API.Device.GUIDBytes, API.QQ.login_Time, (int)API.Device.AppId, API.QQ.UTF8)).ToArray();
                bytes = bytes.Concat(TLV.tlv147(API.Device.Apk_V, API.Device.ApkSig)).ToArray();
                bytes = bytes.Concat(TLV.tlv177(API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv187(API.Device.MacBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv188(API.Device.AndroidID)).ToArray();
                bytes = bytes.Concat(TLV.tlv191()).ToArray();
                bytes = bytes.Concat(TLV.tlv202(API.Device.WIFIByteSSID, API.Device.WIFISSID)).ToArray();
                bytes = bytes.Concat(TLV.tlv194(API.Device.Imsi)).ToArray();
                bytes = bytes.Concat(TLV.tlv511()).ToArray();
            }
            else if (LoginType == "企点QQ")
            {
                bytes = new byte[] { 0, 9, 0, 0x16 };
                bytes = bytes.Concat(TLV.tlv018(API.QQ.user)).ToArray();
                bytes = bytes.Concat(TLV.tlv001(API.QQ.user, API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv106(API.QQ.user, API.QQ.md5_1, API.QQ.md5_2, API.QQ.TGTKey, API.Device.GUIDBytes, API.QQ.login_Time, API.QQ.Appid, API.QQ.UTF8)).ToArray();
                bytes = bytes.Concat(TLV.tlv116(0)).ToArray();
                bytes = bytes.Concat(TLV.tlv100(API.QQ.Appid.ToString())).ToArray();
                bytes = bytes.Concat(TLV.tlv107()).ToArray();
                if (API.UN_Tlv.T108_ksid.Length > 0)
                {
                    bytes = bytes.Concat(TLV.tlv108(API.UN_Tlv.T108_ksid)).ToArray();
                }
                bytes = bytes.Concat(TLV.tlv142()).ToArray();
                bytes = bytes.Concat(TLV.tlv144(API.QQ.TGTKey, TLV.tlv109(API.Device.AndroidID), TLV.tlv52D(), TLV.tlv124(API.Device.os_type, API.Device.os_version, API.Device.network_type.ToString(), API.Device.apn), TLV.tlv128(API.Device.model, API.Device.GUIDBytes, API.Device.brands), TLV.tlv16e(API.Device.model))).ToArray();
                bytes = bytes.Concat(TLV.tlv145(API.Device.GUIDBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv147(API.Device.Apk_V, API.Device.ApkSig)).ToArray();
                bytes = bytes.Concat(TLV.tlv154(API.QQ.mRequestID)).ToArray();
                bytes = bytes.Concat(TLV.tlv141(API.Device.network_type.ToString(), API.Device.apn)).ToArray();
                bytes = bytes.Concat(TLV.tlv008()).ToArray();
                bytes = bytes.Concat(TLV.tlv511()).ToArray();
                bytes = bytes.Concat(TLV.tlv187(API.Device.MacBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv188(API.Device.AndroidID)).ToArray();
                bytes = bytes.Concat(TLV.tlv191()).ToArray();
                bytes = bytes.Concat(TLV.tlv202(API.Device.WIFIByteSSID, API.Device.WIFISSID)).ToArray();
                bytes = bytes.Concat(TLV.tlv177(API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv516()).ToArray();
                bytes = bytes.Concat(TLV.tlv194(API.Device.Imsi)).ToArray();
            }
            else
            {
                bytes = new byte[] { 0, 9, 0, 0x18 };
                bytes = bytes.Concat(TLV.tlv018(API.QQ.user)).ToArray();
                bytes = bytes.Concat(TLV.tlv001(API.QQ.user, API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv106(API.QQ.user, API.QQ.md5_1, API.QQ.md5_2, API.QQ.TGTKey, API.Device.GUIDBytes, API.QQ.login_Time, (int)API.Device.AppId, API.QQ.UTF8)).ToArray();
                bytes = bytes.Concat(TLV.tlv116(0)).ToArray();
                bytes = bytes.Concat(TLV.tlv100(API.QQ.Appid.ToString())).ToArray();
                bytes = bytes.Concat(TLV.tlv107()).ToArray();
                if (API.UN_Tlv.T108_ksid.Length > 0)
                {
                    bytes = bytes.Concat(TLV.tlv108(API.UN_Tlv.T108_ksid)).ToArray();
                }
                bytes = bytes.Concat(TLV.tlv142()).ToArray();
                bytes = bytes.Concat(TLV.tlv144(API.QQ.TGTKey, TLV.tlv109(API.Device.AndroidID), TLV.tlv52D(), TLV.tlv124(API.Device.os_type, API.Device.os_version, API.Device.network_type.ToString(), API.Device.apn), TLV.tlv128(API.Device.model, API.Device.GUIDBytes, API.Device.brands), TLV.tlv16e(API.Device.model))).ToArray();
                bytes = bytes.Concat(TLV.tlv145(API.Device.GUIDBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv147(API.Device.Apk_V, API.Device.ApkSig)).ToArray();
                bytes = bytes.Concat(TLV.tlv154(API.QQ.mRequestID)).ToArray();
                bytes = bytes.Concat(TLV.tlv141(API.Device.network_type.ToString(), API.Device.apn)).ToArray();
                bytes = bytes.Concat(TLV.tlv008()).ToArray();
                bytes = bytes.Concat(TLV.tlv511()).ToArray();
                bytes = bytes.Concat(TLV.tlv187(API.Device.MacBytes)).ToArray();
                bytes = bytes.Concat(TLV.tlv188(API.Device.AndroidID)).ToArray();
                bytes = bytes.Concat(TLV.tlv194(API.Device.Imsi)).ToArray();
                bytes = bytes.Concat(TLV.tlv191()).ToArray();
                bytes = bytes.Concat(TLV.tlv202(API.Device.WIFIByteSSID, API.Device.WIFISSID)).ToArray();                 // BSSID MD5 WIFISSID/NAME
                bytes = bytes.Concat(TLV.tlv177(API.QQ.login_Time)).ToArray();
                bytes = bytes.Concat(TLV.tlv516()).ToArray();
                bytes = bytes.Concat(TLV.tlv521()).ToArray();
                bytes = bytes.Concat(TLV.tlv525(1, API.QQ.login_Time, API.QQ.Appid)).ToArray();
            }
            HashTea Hash = new HashTea();

            bytes = Hash.HashTEA(bytes, API.QQ.shareKey, 0, true);
            return(bytes);
        }