Exemple #1
0
 private void updatePresence(ref TmpEntry entry, EndianIO readerIO, EndianIO writerIO)
 {
     entry.ClientSession = Misc.BytesToHexString(readerIO.Reader.ReadBytes(0x10));
     entry.ClientTitle   = Misc.BytesToHexString(readerIO.Reader.ReadBytes(0x4));
     entry.ClientGT      = GlobalMisc.ConvertBytesToString(readerIO.Reader.ReadBytes(0x15));
     //Globals.write("updateShit Session: {0}", entry.ClientSession);
     if (ConsoleMySQL.getConsole(ref entry, true))
     {
         if (entry.ClientEnabled)
         {
             writerIO.Writer.Write(Globals.XSTL_STATUS_SUCCESS);
         }
         else
         {
             if (ConsoleMySQL.autoUpdateTime(ref entry))
             {
                 writerIO.Writer.Write(Globals.XSTL_STATUS_SUCCESS);
             }
             else
             {
                 writerIO.Writer.Write(Globals.XSTL_STATUS_EXPIRED);
             }
         }
         ConsoleMySQL.saveConsole(ref entry);
     }
     else
     {
         writerIO.Writer.Write(Globals.XSTL_STATUS_ERROR);
     }
 }
Exemple #2
0
        private void con_redeem(ref TmpEntry entry, EndianIO readerIO, EndianIO writerIO, EndianWriter structIO)
        {
            // Grabbing the token from the request.
            string recCpuKey  = Misc.BytesToHexString(readerIO.Reader.ReadBytes(0x10)); // Cross check the CPUKey here with the one in the DB.
            string recSession = Misc.BytesToHexString(readerIO.Reader.ReadBytes(0x10)); // Receiving their sent session to cross check.

            entry.inToken = Misc.BytesToHexString(readerIO.Reader.ReadBytes(0x19));     // We'll need to change the length later.
            if (ConsoleMySQL.getConsole(ref entry))
            {
                if (entry.ClientEnabled)
                {
                    if (ConsoleMySQL.getToken(ref entry))
                    {
                        entry.daysLeft = !entry.TokenUsed ? entry.daysLeft + entry.TokenDays : entry.daysLeft;
                        string retMsgSuccess = String.Format("Token has been successfully redeemed!\nCPUKey: {0}\nRedeemed {1} Days\n{2}\0", entry.CPUKey, entry.TokenDays, (entry.daysLeft >= 500 ? "You still have lifetime." : "You have " + entry.daysLeft + " days on reserve.")),
                               retMsgUsed    = String.Format("Token seems to already be used.\n\nIf you feel this is a mistake, please message staff ASAP!\n\nYour CPUKey: {0}\0", entry.CPUKey);
                        uint   size          = (sizeof(uint) * 4) + Convert.ToUInt32((!entry.TokenUsed ? retMsgSuccess.Length : retMsgUsed.Length) + 2);
                        byte[] tmpBuff       = new byte[size];
                        mainBuff = new byte[size];
                        Buffer.BlockCopy(Encoding.ASCII.GetBytes(retMsgSuccess), 0, tmpBuff, 0, (!entry.TokenUsed ? retMsgSuccess.Length : retMsgUsed.Length) + 2);
                        structIO.Write(Globals.XSTL_STATUS_SUCCESS);
                        structIO.Write(!entry.TokenUsed ? retMsgSuccess : retMsgUsed);
                        writerIO.Writer.Write(mainBuff);
                        Globals.write("Client [{0}] CPUKey: {1}\n{2} Token: {3}", IPAddr, entry.CPUKey, (!entry.TokenUsed ? "Redeemed" : "Tried Redeeming"), entry.outToken);
                        if (!entry.TokenUsed)
                        {
                            ConsoleMySQL.saveToken(ref entry); ConsoleMySQL.saveConsole(ref entry);
                        }
                        return;
                    }
                    structIO.Write(Globals.XSTL_STATUS_ERROR);
                }
            }
        }
Exemple #3
0
        private void getSalt(ref TmpEntry entry, EndianIO readerIO, EndianIO writerIO)
        {
            entry.ClientConType = Convert.ToBoolean(readerIO.Reader.ReadInt32());
            entry.CPUKey        = Misc.BytesToHexString(readerIO.Reader.ReadBytes(0x10));

            //if (BufferCount >= 0x14) entry.KVDat = readerIO.Reader.ReadBytes(BufferCount - 0x14); // BufferCount > 20

            if (!Globals.allowAnonUsers)
            {
                if (ConsoleMySQL.getConsole(ref entry))
                {
                    entry.ClientSession = Misc.BytesToHexString(Security.RandomBytes(0x10));
                    ConsoleMySQL.saveConsole(ref entry);
                    if (entry.ClientBanned)
                    {
                        Globals.write("Client [{0}] Banned CPUKey: {1}", IPAddr, entry.CPUKey);
                        ConsoleMySQL.updateOtherConsoles(ref entry, true);
                        writerIO.Writer.Write(Globals.XSTL_STATUS_BANNED);
                        return;
                    }
                    if (entry.ClientEnabled)
                    {
                        Globals.write("Client [{0}] Authorized {1} CPUKey: {2}", IPAddr, !entry.ClientConType ? "Jtag" : "Devkit", entry.CPUKey);
                        writerIO.Writer.Write(Globals.XSTL_STATUS_STEALTHED);
                        writerIO.Writer.Write(Misc.HexStringToBytes(entry.ClientSession));
                    }
                    else
                    {
                        if (ConsoleMySQL.autoUpdateTime(ref entry))
                        {
                            if (entry.daysLeft <= 499)
                            {
                                Globals.write("Client [{0}] Started their next 24 hours! - CPUKey: {1}", IPAddr, entry.CPUKey);
                                writerIO.Writer.Write(Globals.XSTL_STATUS_DAY_STARTED);
                            }
                            else
                            {
                                writerIO.Writer.Write(Globals.XSTL_STATUS_STEALTHED);
                            }
                            writerIO.Writer.Write(Misc.HexStringToBytes(entry.ClientSession));
                        }
                        else
                        {
                            Globals.write("Client [{0}] Expired CPUKey: {1}", IPAddr, entry.CPUKey);
                            writerIO.Writer.Write(Globals.XSTL_STATUS_EXPIRED);
                        }
                    } ConsoleMySQL.saveConsole(ref entry);
                }
                else
                {
                    Globals.write("Client [{0}] Failed Authorization! CPUKey: {1}", IPAddr, entry.CPUKey);
                    ConsoleMySQL.updateOtherConsoles(ref entry);
                    writerIO.Writer.Write(Globals.XSTL_STATUS_ERROR);
                    return;
                }
            }
            else
            {
                if (AnonSQL.getConsoleAnon(ref entry))
                {
                    entry.ClientSession = Misc.BytesToHexString(Security.RandomBytes(0x10));
                    if (entry.ClientBanned)
                    {
                        Globals.write("Anon [{0}] Banned CPUKey: {1}", IPAddr, entry.CPUKey);
                        ConsoleMySQL.updateOtherConsoles(ref entry, true);
                        writerIO.Writer.Write(Globals.XSTL_STATUS_BANNED);
                        return;
                    }
                    Globals.write("Anon [{0}] Authorized {1} CPUKey: {2}", IPAddr, entry.ClientConType ? "Devkit" : "Jtag", entry.CPUKey);
                    writerIO.Writer.Write(Globals.XSTL_STATUS_XBLFREE);
                    writerIO.Writer.Write(Misc.HexStringToBytes(entry.ClientSession));
                }
                else
                {
                    AnonSQL.addAnon(ref entry);
                    Globals.write("Anon [{0}] New User! CPUKey: {1}", IPAddr, entry.CPUKey);
                    writerIO.Writer.Write(Globals.XSTL_STATUS_XBLFREE);
                    writerIO.Writer.Write(Misc.HexStringToBytes(entry.ClientSession));
                }
            }
        }