예제 #1
0
        public bool Command(ThePalaceEntities dbContext, UInt32 UserID, UInt32 TargetID, params string[] args)
        {
            var sessionState = UserID != 0xFFFFFFFF ? SessionManager.sessionStates[UserID] : null;
            var xtlk         = new MSG_XTALK();

            var banrecs = dbContext.Bans.AsNoTracking()
                          .ToList();

            if (banrecs.Count > 0)
            {
                banrecs
                .ForEach(banrec =>
                {
                    var regRec = new RegistrationRec
                    {
                        counter = (UInt32)banrec.RegCtr,
                        crc     = (UInt32)banrec.RegCrc,
                        puidCtr = (UInt32)banrec.Puidctr,
                        puidCRC = (UInt32)banrec.Puidcrc,
                    };

                    var regCode  = Cipher.RegRectoSeed(regRec);
                    var puidCode = Cipher.RegRectoSeed(regRec, true);

                    xtlk.text = $"; {{{banrec.Ipaddress}}} {regCode} {puidCode}: {banrec.Note}";

                    if (UserID == 0xFFFFFFFF)
                    {
                        Logger.ConsoleLog(xtlk.text);
                    }
                    else
                    {
                        sessionState.Send(xtlk, EventTypes.MSG_XTALK, 0);
                    }
                });
            }
            else
            {
                xtlk.text = "There are currently no bans to list...";

                if (UserID == 0xFFFFFFFF)
                {
                    Logger.ConsoleLog(xtlk.text);
                }
                else
                {
                    sessionState.Send(xtlk, EventTypes.MSG_XTALK, 0);
                }
            }

            return(true);
        }
예제 #2
0
        public static string RegRectoSeed(RegistrationRec regRec, bool puid = false)
        {
            var seedCounter = (UInt32)0;

            if (puid)
            {
                seedCounter = regRec.puidCtr ^ regRec.puidCRC;
            }
            else
            {
                seedCounter = regRec.counter ^ RegConstants.MAGIC_LONG ^ regRec.crc;
            }

            return(SeedToWizKey(seedCounter, puid));
        }
예제 #3
0
        public void DeserializeJSON(string json)
        {
            var jsonResponse = (dynamic)JsonConvert.DeserializeObject <JObject>(json);

            reg = new RegistrationRec();

            reg.crc         = (UInt32)(Int32)jsonResponse.reg.crc;
            reg.counter     = (UInt32)(Int32)jsonResponse.reg.counter;
            reg.userName    = jsonResponse.reg.userName;
            reg.wizPassword = jsonResponse.reg.wizPassword ?? string.Empty;
            reg.auxFlags    = jsonResponse.reg.auxFlags;
            reg.puidCtr     = (UInt32)(Int32)jsonResponse.reg.puidCtr;
            reg.puidCRC     = (UInt32)(Int32)jsonResponse.reg.puidCRC;
            reg.desiredRoom = jsonResponse.reg.desiredRoom;
            reg.reserved    = jsonResponse.reg.reserved;
            reg.ulRequestedProtocolVersion = jsonResponse.reg.ulRequestedProtocolVersion;
            reg.ulUploadCaps     = (UInt32)(Int32)jsonResponse.reg.ulUploadCaps;
            reg.ulDownloadCaps   = (UInt32)(Int32)jsonResponse.reg.ulDownloadCaps;
            reg.ul2DEngineCaps   = (UInt32)(Int32)jsonResponse.reg.ul2DEngineCaps;
            reg.ul2DGraphicsCaps = (UInt32)(Int32)jsonResponse.reg.ul2DGraphicsCaps;
            reg.ul3DEngineCaps   = (UInt32)(Int32)jsonResponse.reg.ul3DEngineCaps;
        }
예제 #4
0
        public void Deserialize(Packet packet)
        {
            reg = new RegistrationRec();

            reg.crc          = packet.ReadUInt32();
            reg.counter      = packet.ReadUInt32();
            reg.userName     = packet.ReadPString(32);
            reg.wizPassword  = packet.ReadPString(32) ?? string.Empty;
            reg.auxFlags     = packet.ReadSInt32();
            reg.puidCtr      = packet.ReadUInt32();
            reg.puidCRC      = packet.ReadUInt32();
            reg.demoElapsed  = packet.ReadUInt32();
            reg.totalElapsed = packet.ReadUInt32();
            reg.demoLimit    = packet.ReadUInt32();
            reg.desiredRoom  = packet.ReadSInt16();
            reg.reserved     = packet.getData(6, 0, true).GetString();
            reg.ulRequestedProtocolVersion = packet.ReadUInt32();
            reg.ulUploadCaps     = packet.ReadUInt32();
            reg.ulDownloadCaps   = packet.ReadUInt32();
            reg.ul2DEngineCaps   = packet.ReadUInt32();
            reg.ul2DGraphicsCaps = packet.ReadUInt32();
            reg.ul3DEngineCaps   = packet.ReadUInt32();
        }