private void HandleAuthSession(IPacket packet) { Stream dataStream = packet.GetStream(); BinaryReader r = packet.CreateReader(); uint version = r.ReadUInt32(); uint unk2 = r.ReadUInt32(); string accountName = r.ReadCString(); uint unk = r.ReadUInt32(); uint clientSeed = r.ReadUInt32(); ulong unk3 = r.ReadUInt64(); uint unk4 = r.ReadUInt32(); ulong unk5 = r.ReadUInt64(); byte[] clientDigest = r.ReadBytes(20); session.Account = IoC.Resolve <IAccountRepository>().FindByName(accountName); cryptor.SetSymmetricAlgorithm(new WowCryptRC4(session.Account.SessionKey)); if (!ByteArrayExtensions.Equals(clientDigest, ComputeServerDigest(clientSeed))) { throw new Exception(); } session.Send(GetAuthResponcePkt()); uint addonInfoBlockSize = r.ReadUInt32(); dataStream = new InflaterInputStream(dataStream); //дальше данные запакованы r = new BinaryReader(dataStream); try { while (true) { var addonInfo = new AddonInfo { Name = r.ReadCString(), Crc = r.ReadUInt64(), Status = r.ReadByte(), }; AddonManager.Instance[addonInfo.Name] = addonInfo; } } catch (Exception e) { } //_client.Send(GetAddonInfoPkt()); session.Send(GetTutorialFlagsPkt()); session.SendAccountDataTimes(0x15); }