Пример #1
0
        public byte[] get_tlv_0015(QQClient m_PCClient)
        {
            var data = new BinaryWriter(new MemoryStream());

            if (wSubVer == 0x0001)
            {
                data.BEWrite(wSubVer); //wSubVer

                data.Write(0x01);
                var thisKey = m_PCClient.QQUser.TXProtocol.bufComputerID;
                data.BEWrite(CRC32cs.CRC32(thisKey));
                data.Write(thisKey);

                data.Write(0x02);
                thisKey = m_PCClient.QQUser.TXProtocol.bufComputerIDEx;
                data.BEWrite(CRC32cs.CRC32(thisKey));
                data.Write(thisKey);
            }
            else
            {
                throw new Exception(string.Format("{0} 无法识别的版本号 {1}", Name, wSubVer));
            }

            fill_head(cmd);
            fill_body(data.BaseStream.ToBytesArray(), data.BaseStream.Length);
            set_length();
            return(get_buf());
        }
Пример #2
0
        /// <summary>
        /// 初始化包体
        /// </summary>
        /// <param name="buf">The buf.</param>
        protected override void PutBody(ByteBuffer buf)
        {
            user.QQ_tlv_001A_encr = QQTea.Encrypt(user.QQ_PACKET_FIX2, user.QQ_PACKET_TgtgtKey);
            if (_type == Login0x0836Type.Login0x0836_622)
            {
                user.QQ_tlv_0006_encr = GET_TLV_0006(user.LoginTime, user.ServerIp);
            }
            buf.Put(new byte[] { 0x01, 0x12 });
            buf.Put(new byte[] { 0x00, 0x38 });
            buf.Put(user.QQ_0825Token);
            buf.Put(new byte[] { 0x03, 0x0F });
            buf.Put(new byte[] { 0x00 });
            buf.Put((byte)(Util.HexStringToByteArray(Util.ConvertStringToHex(user.PcName)).Length + 2));
            buf.Put(new byte[] { 0x00 });
            buf.Put((byte)Util.HexStringToByteArray(Util.ConvertStringToHex(user.PcName)).Length);
            buf.Put(Util.HexStringToByteArray(Util.ConvertStringToHex(user.PcName)));
            buf.Put(new byte[] { 0x00, 0x05, 0x00, 0x06, 0x00, 0x02 });
            buf.PutLong(user.QQ);
            buf.Put(new byte[] { 0x00, 0x06 });
            buf.Put(new byte[] { 0x00, 0x78 });
            buf.Put(user.QQ_tlv_0006_encr);
            buf.Put(user.QQ_PACKET_FIX2);
            buf.Put(new byte[] { 0x00, 0x1A });
            buf.Put(new byte[] { 0x00, 0x40 });
            buf.Put(user.QQ_tlv_001A_encr);
            buf.Put(user.QQ_PACKET_0825DATA0);
            buf.Put(user.QQ_PACKET_0825DATA2);
            buf.PutLong(user.QQ);
            buf.Put(new byte[] { 0x00, 0x00, 0x00, 0x00 });
            buf.Put(new byte[] { 0x01, 0x03 });
            buf.Put(new byte[] { 0x00, 0x14 });
            buf.Put(new byte[] { 0x00, 0x01 });
            buf.Put(new byte[] { 0x00, 0x10 });
            buf.Put(new byte[] { 0x60, 0xC9, 0x5D, 0xA7, 0x45, 0x70, 0x04, 0x7F, 0x21, 0x7D, 0x84, 0x50, 0x5C, 0x66, 0xA5, 0xC6 });

            if (_type == Login0x0836Type.Login0x0836_686)
            {
                buf.Put(new byte[] { 0x01, 0x10 });
                buf.Put(new byte[] { 0x00, 0x3C });
                buf.Put(new byte[] { 0x00, 0x01 });
                buf.Put(new byte[] { 0x00, 0x38 });
                buf.Put(user.QQ_0836Token);
            }

            buf.Put(new byte[] { 0x03, 0x12 });
            buf.Put(new byte[] { 0x00, 0x05 });
            buf.Put(new byte[] { 0x01, 0x00, 0x00, 0x00, 0x01 });
            buf.Put(new byte[] { 0x05, 0x08 });
            buf.Put(new byte[] { 0x00, 0x05 });
            buf.Put(new byte[] { 0x01, 0x00, 0x00, 0x00, 0x00 });
            buf.Put(new byte[] { 0x03, 0x13 });
            buf.Put(new byte[] { 0x00, 0x19 });
            buf.Put(new byte[] { 0x01 });
            buf.Put(new byte[] { 0x01, 0x02 });
            buf.Put(new byte[] { 0x00, 0x10 });
            buf.Put(new byte[] { 0x04, 0xEA, 0x78, 0xD1, 0xA4, 0xFF, 0xCD, 0xCC, 0x7C, 0xB8, 0xD4, 0x12, 0x7D, 0xBB, 0x03, 0xAA }); //两次0836包相同
            buf.Put(new byte[] { 0x00, 0x00, 0x00 });
            buf.Put(new byte[] { 0x00 });                                                                                           //可能为00,0F,1F
            buf.Put(new byte[] { 0x01, 0x02 });
            buf.Put(new byte[] { 0x00, 0x62 });
            buf.Put(new byte[] { 0x00, 0x01 });
            buf.Put(new byte[] { 0x04, 0xEB, 0xB7, 0xC1, 0x86, 0xF9, 0x08, 0x96, 0xED, 0x56, 0x84, 0xAB, 0x50, 0x85, 0x2E, 0x48 });//两次0836包不同
            buf.Put(new byte[] { 0x00, 0x38 });
            buf.Put(new byte[] { 0xE9, 0xAA, 0x2B, 0x4D, 0x26, 0x4C, 0x76, 0x18, 0xFE, 0x59, 0xD5, 0xA9, 0x82, 0x6A, 0x0C, 0x04, 0xB4, 0x49, 0x50, 0xD7, 0x9B, 0xB1, 0xFE, 0x5D, 0x97, 0x54, 0x8D, 0x82, 0xF3, 0x22, 0xC2, 0x48, 0xB9, 0xC9, 0x22, 0x69, 0xCA, 0x78, 0xAD, 0x3E, 0x2D, 0xE9, 0xC9, 0xDF, 0xA8, 0x9E, 0x7D, 0x8C, 0x8D, 0x6B, 0xDF, 0x4C, 0xD7, 0x34, 0xD0, 0xD3 });
            buf.Put(new byte[] { 0x00, 0x14 });
            buf.Put(user.QQ_PACKET_Crc32_Code);
            buf.PutULong(CRC32cs.GetCRC32Str(Util.ToHex(user.QQ_PACKET_Crc32_Code)));
        }