Esempio n. 1
0
 /// <summary>
 ///     初始化包体
 /// </summary>
 protected override void PutBody()
 {
     BodyWriter.Write(new byte[] { 0x00, 0x02, 0x00, 0x00, 0x08, 0x04, 0x01, 0xE0 });
     BodyWriter.BeWrite(User.TXProtocol.DwSsoVersion);
     BodyWriter.BeWrite(User.TXProtocol.DwServiceId);
     BodyWriter.BeWrite(User.TXProtocol.DwClientVer);
     BodyWriter.Write((byte)0x00);
     BodyWriter.WriteKey(User.TXProtocol.BufSigClientAddr);
     BodyWriter.Write(new byte[] { 0x01, 0x02 });
     BodyWriter.WriteKey(User.TXProtocol.BufDhPublicKey);
     if (string.IsNullOrEmpty(VerifyCode))
     {
         BodyWriter.Write(new byte[] { 0x13, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00 });
         BodyWriter.Write(User.QQPacket00BaSequence);
         if (User.TXProtocol.PngToken == null || User.TXProtocol.PngToken?.Length == 0)
         {
             BodyWriter.Write((byte)0x00);
         }
         else
         {
             BodyWriter.WriteKey(User.TXProtocol.PngToken);
         }
     }
     else
     {
         var verifyCodeBytes = Util.HexStringToByteArray(Util.ConvertStringToHex(VerifyCode));
         BodyWriter.Write(new byte[] { 0x14, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00 });
         BodyWriter.BeWrite((ushort)verifyCodeBytes.Length);
         BodyWriter.Write(verifyCodeBytes);
         BodyWriter.WriteKey(User.TXProtocol.BufSigPic);
         //输入验证码后清空图片流
         User.QQPacket00BaVerifyCode = new byte[] { };
     }
     BodyWriter.WriteKey(User.QQPacket00BaFixKey);
 }
Esempio n. 2
0
 /// <summary>
 ///     初始化包体
 /// </summary>
 protected override void PutBody()
 {
     BodyWriter.BeWrite(0x0000000C);
     BodyWriter.BeWrite(Util.GetTimeSeconds(DateTime.Now));
     BodyWriter.BeWrite(0x000003E8);
     BodyWriter.WriteKey(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
 }
Esempio n. 3
0
        /// <summary>
        ///     初始化包体
        /// </summary>
        protected override void PutBody()
        {
            BodyWriter.Write(new byte[] { 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 });
            string data = "{\"t1\":" + Util.GetTimeSeconds(DateTime.Now).ToString() + "}";

            BodyWriter.WriteKey(Util.GetBytes(data));
        }
        /// <summary>
        ///     初始化包体
        /// </summary>
        protected override void PutBody()
        {
            var dateTime = Util.GetTimeSeconds(DateTime.Now);
            var group    = ConvertQQGroupId(_group);

            switch (Message.Snippets[0].Type)
            {
            case MessageType.At:
            case MessageType.Normal:
            case MessageType.Emoji:
            {
                BodyWriter.Write((byte)0x2A);
                BodyWriter.BeWrite(group);
                BodyWriter.BeWrite((ushort)(_data.Length + 50));         // 字符串长度 + 56,但是_data里面包含了和长度有关的额外六个byte
                BodyWriter.Write(new byte[]
                    {
                        0x00, 0x01, _packetCount, _packetIndex, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x53,
                        0x47, 0x00,
                        0x00, 0x00, 0x00, 0x00
                    });
                BodyWriter.BeWrite(dateTime);
                BodyWriter.Write(Util.RandomKey(4));
                BodyWriter.Write(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x86, 0x00 });
                BodyWriter.Write(new byte[] { 0x00, 0x0C });
                BodyWriter.Write(new byte[]
                                 { 0xE5, 0xBE, 0xAE, 0xE8, 0xBD, 0xAF, 0xE9, 0x9B, 0x85, 0xE9, 0xBB, 0x91 });
                BodyWriter.Write(new byte[] { 0x00, 0x00 });
                BodyWriter.Write(_data);
                break;
            }

            case MessageType.Xml:
            {
                BodyWriter.Write((byte)0x2A);
                BodyWriter.BeWrite(group);
                var compressMsg = GZipByteArray.CompressBytes(Message.Snippets[0].Content);
                BodyWriter.BeWrite((ushort)(compressMsg.Length + 64));
                BodyWriter.Write(new byte[]
                    {
                        0x00, 0x01, _packetCount, _packetIndex, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x53,
                        0x47, 0x00,
                        0x00, 0x00, 0x00, 0x00
                    });
                BodyWriter.BeWrite(dateTime);
                BodyWriter.Write(SendXml(compressMsg));
                break;
            }

            case MessageType.Picture:
            {
                var _Snippets = Message.Snippets[0];
                BodyWriter.Write((byte)0x2A);
                BodyWriter.BeWrite(group);
                var guid = Encoding.UTF8.GetBytes(Util.GetMD5ToGuidHashFromFile(Message.Snippets[0].Content) + Path.GetExtension(_Snippets.Content));
                BodyWriter.Write(new byte[] { 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x53, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00 });
                BodyWriter.BeWrite(dateTime);
                BodyWriter.Write(Util.RandomKey(4));
                BodyWriter.Write(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x86, 0x22 });
                BodyWriter.WriteKey(new byte[] { 0xE5, 0xBE, 0xAE, 0xE8, 0xBD, 0xAF, 0xE9, 0x9B, 0x85, 0xE9, 0xBB, 0x91 });
                BodyWriter.Write(new byte[] { 0x00, 0x00, 0x03, 0x00, 0xCB, 0x02 });
                BodyWriter.WriteKey(guid);
                BodyWriter.Write((byte)0x04);
                BodyWriter.WriteKey(Util.HexStringToByteArray(_Snippets["30Key"].ToString()));
                BodyWriter.Write((byte)0x05);
                BodyWriter.WriteKey(Util.HexStringToByteArray(_Snippets["48Key"].ToString()));
                BodyWriter.Write(new byte[]
                    {
                        0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x01, 0x43,
                        0x08, 0x00, 0x00, 0x09, 0x00, 0x01, 0x01, 0x0b, 0x00, 0x00, 0x14,
                        0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x00,
                        0x05, 0xa0, 0x16, 0x00, 0x04, 0x00, 0x00, 0x04, 0x38, 0x18, 0x00,
                        0x04, 0x00, 0x01, 0xf5, 0x62, 0xff
                    });

                var data = new BinaryWriter(new MemoryStream());
                data.Write(new byte[] { 0x15, 0x36, 0x20 });
                data.Write(new byte[]
                    {
                        0x39, 0x32, 0x6b, 0x41, 0x31, 0x43, 0x61, 0x37, 0x64, 0x63, 0x66,
                        0x34, 0x38, 0x37, 0x34, 0x39, 0x38, 0x64, 0x33, 0x33, 0x37, 0x39
                    });
                data.Write(new byte[]
                    {
                        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x35, 0x30, 0x20, 0x20, 0x20,
                        0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
                        0x20, 0x20
                    });
                data.Write(guid);
                data.Write((byte)0x41);
                BodyWriter.WriteKey(data.BaseStream.ToBytesArray());
                break;
            }

            case MessageType.AddGroup:
            {
                BodyWriter.Write(new byte[] { 0x08 });
                BodyWriter.BeWrite(group);
                BodyWriter.Write(new byte[] { 0x01 });
                BodyWriter.BeWrite((ushort)User.AddFriend0020Value.Length);
                BodyWriter.Write(User.AddFriend0020Value);
                BodyWriter.Write(new byte[] { 0x00, 0x00, 0x00 });
                //备注信息
                var messageData = Encoding.UTF8.GetBytes(Message.Snippets[0].Content);
                Writer.BeWrite((ushort)messageData.Length);
                Writer.Write(messageData);
                BodyWriter.Write(new byte[] { 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x09 });
                break;
            }

            case MessageType.GetGroupImformation:
            {
                BodyWriter.Write(new byte[] { 0x72 });
                BodyWriter.BeWrite(group);
                BodyWriter.BeWrite(0x00);
                break;
            }

            case MessageType.ExitGroup:
            {
                BodyWriter.Write(new byte[] { 0x09 });
                BodyWriter.BeWrite(group);
                break;
            }

            default:
            {
                throw new NotImplementedException();
            }
            }
        }