This commit is contained in:
Bitl 2021-11-15 15:04:38 -07:00
parent 594ed98384
commit 52beaabfb9
6 changed files with 84 additions and 80 deletions

View File

@ -9,6 +9,7 @@ using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Linq;
using System.Net; using System.Net;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
@ -223,7 +224,7 @@ public class GlobalFuncs
if (string.IsNullOrWhiteSpace(SecurityFuncs.Base64Decode(tripcode))) if (string.IsNullOrWhiteSpace(SecurityFuncs.Base64Decode(tripcode)))
{ {
GenerateTripcode(); GlobalVars.UserConfiguration.PlayerTripcode = GenerateAndReturnTripcode();
Config(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigName, true); Config(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigName, true);
} }
else else
@ -1085,7 +1086,7 @@ public class GlobalFuncs
GlobalVars.UserConfiguration.LauncherStyle = style; GlobalVars.UserConfiguration.LauncherStyle = style;
#endif #endif
GeneratePlayerID(); GeneratePlayerID();
GenerateTripcode(); GlobalVars.UserConfiguration.PlayerTripcode = GlobalFuncs.GenerateAndReturnTripcode();
ResetCustomizationValues(); ResetCustomizationValues();
} }
@ -1284,15 +1285,9 @@ public class GlobalFuncs
GlobalVars.UserConfiguration.UserID = randomID; GlobalVars.UserConfiguration.UserID = randomID;
} }
public static void GenerateTripcode()
{
GlobalVars.UserConfiguration.PlayerTripcode = SecurityFuncs.RandomString();
}
public static string GenerateAndReturnTripcode() public static string GenerateAndReturnTripcode()
{ {
GenerateTripcode(); return SecurityFuncs.RandomString(20);
return GlobalVars.UserConfiguration.PlayerTripcode;
} }
public static GlobalVars.LauncherState GetStateForType(ScriptType type) public static GlobalVars.LauncherState GetStateForType(ScriptType type)
@ -2013,60 +2008,87 @@ public class GlobalFuncs
string args = ""; string args = "";
GlobalVars.ValidatedExtraFiles = 0; GlobalVars.ValidatedExtraFiles = 0;
if (!info.AlreadyHasSecurity && !GlobalVars.AdminMode) if (!info.AlreadyHasSecurity)
{ {
string validstart = "<validate>"; Match match = Regex.Match(GlobalVars.UserConfiguration.PlayerTripcode, "[^a-zA-Z0-9]");
string validend = "</validate>"; if (match != Match.Empty || string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.PlayerTripcode))
foreach (string line in info.CommandLineArgs.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
{ {
if (line.Contains(validstart) && line.Contains(validend)) MessageBox.Show(match.Captures.Count.ToString());
{
string extractedFile = ScriptFuncs.ClientScript.GetArgsFromTag(line, validstart, validend);
if (!string.IsNullOrWhiteSpace(extractedFile))
{
try
{
string[] parsedFileParams = extractedFile.Split('|');
string filePath = parsedFileParams[0];
string fileMD5 = parsedFileParams[1];
string fullFilePath = GlobalPaths.ClientDir + @"\\" + GlobalVars.UserConfiguration.SelectedClient + @"\\" + filePath;
if (!SecurityFuncs.CheckMD5(fileMD5, fullFilePath))
{
#if URI #if URI
if (label != null) if (label != null)
{ {
label.Text = "The client has been detected as modified."; label.Text = "The client has been detected as modified.";
} }
#elif LAUNCHER #elif LAUNCHER
if (box != null) if (box != null)
{ {
ConsolePrint("ERROR - Failed to launch Novetus. (The client has been detected as modified.)", 2, box); ConsolePrint("ERROR - Failed to launch Novetus. (The client has been detected as modified.)", 2, box);
} }
#elif CMD #elif CMD
ConsolePrint("ERROR - Failed to launch Novetus. (The client has been detected as modified.)", 2); ConsolePrint("ERROR - Failed to launch Novetus. (The client has been detected as modified.)", 2);
#endif #endif
#if URI || LAUNCHER #if URI || LAUNCHER
MessageBox.Show("Failed to launch Novetus. (Error: The client has been detected as modified.)", "Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show("Failed to launch Novetus. (Error: The client has been detected as modified.)", "Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
#endif #endif
return; return;
} }
else
{ if (!GlobalVars.AdminMode)
GlobalVars.ValidatedExtraFiles += 1; {
} string validstart = "<validate>";
} string validend = "</validate>";
#if URI || LAUNCHER || CMD || BASICLAUNCHER
catch (Exception ex) foreach (string line in info.CommandLineArgs.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
{
if (line.Contains(validstart) && line.Contains(validend))
{
string extractedFile = ScriptFuncs.ClientScript.GetArgsFromTag(line, validstart, validend);
if (!string.IsNullOrWhiteSpace(extractedFile))
{ {
LogExceptions(ex); try
{
string[] parsedFileParams = extractedFile.Split('|');
string filePath = parsedFileParams[0];
string fileMD5 = parsedFileParams[1];
string fullFilePath = GlobalPaths.ClientDir + @"\\" + GlobalVars.UserConfiguration.SelectedClient + @"\\" + filePath;
if (!SecurityFuncs.CheckMD5(fileMD5, fullFilePath))
{
#if URI
if (label != null)
{
label.Text = "The client has been detected as modified.";
}
#elif LAUNCHER
if (box != null)
{
ConsolePrint("ERROR - Failed to launch Novetus. (The client has been detected as modified.)", 2, box);
}
#elif CMD
ConsolePrint("ERROR - Failed to launch Novetus. (The client has been detected as modified.)", 2);
#endif
#if URI || LAUNCHER
MessageBox.Show("Failed to launch Novetus. (Error: The client has been detected as modified.)", "Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
#endif
return;
}
else
{
GlobalVars.ValidatedExtraFiles += 1;
}
}
#if URI || LAUNCHER || CMD || BASICLAUNCHER
catch (Exception ex)
{
LogExceptions(ex);
#else #else
catch (Exception) catch (Exception)
{ {
#endif #endif
continue; continue;
}
} }
} }
} }
@ -2196,7 +2218,7 @@ public class GlobalFuncs
GlobalVars.ValidatedExtraFiles = 0; GlobalVars.ValidatedExtraFiles = 0;
} }
#if URI || LAUNCHER || CMD || BASICLAUNCHER #if URI || LAUNCHER || CMD || BASICLAUNCHER
catch (Exception ex) catch (Exception ex)
#else #else
catch (Exception) catch (Exception)

View File

@ -27,11 +27,6 @@ public class SecurityFuncs
return new string(Enumerable.Repeat(chars, length) return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray()); .Select(s => s[random.Next(s.Length)]).ToArray());
} }
public static string RandomString()
{
return RandomString(20);
}
//these 2 methods are for the clientinfo creator. //these 2 methods are for the clientinfo creator.
public static string Base64DecodeNew(string base64EncodedData) public static string Base64DecodeNew(string base64EncodedData)

View File

@ -1022,7 +1022,7 @@ namespace NovetusLauncher
public void GenerateTripcode() public void GenerateTripcode()
{ {
GlobalFuncs.GenerateTripcode(); GlobalVars.UserConfiguration.PlayerTripcode = GlobalFuncs.GenerateAndReturnTripcode();
PlayerTripcodeLabel.Text = GlobalVars.UserConfiguration.PlayerTripcode; PlayerTripcodeLabel.Text = GlobalVars.UserConfiguration.PlayerTripcode;
} }

View File

@ -29,6 +29,7 @@ Fixes:
- Fixed the Stylish interface not showing a warning when hosting a seperate master server. - Fixed the Stylish interface not showing a warning when hosting a seperate master server.
- Fixed the Stylish interface not pinging the master server. - Fixed the Stylish interface not pinging the master server.
- Fixed some clients not functioning properly with Wine (Credits to man-of-eel in pull request #27). - Fixed some clients not functioning properly with Wine (Credits to man-of-eel in pull request #27).
- Fixed small issues with tripcodes.
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
1.3 v11.2021.1 1.3 v11.2021.1
Changes from Pre-Release 5: Changes from Pre-Release 5:

View File

@ -126,7 +126,7 @@ function LoadCharacterNew(playerApp,newChar)
end end
end end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,TShirtTexID) function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
local newCharApp = Instance.new("IntValue",Player) local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance" newCharApp.Name = "Appearance"
--BODY COLORS --BODY COLORS
@ -183,13 +183,6 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
newTShirt.Value = "NoTShirt.rbxm" newTShirt.Value = "NoTShirt.rbxm"
end end
newTShirt.Name = "T-Shirt" newTShirt.Name = "T-Shirt"
local newTShirtTexID = Instance.new("StringValue",newTShirt)
if (TShirtTexID ~= nil) then
newTShirtTexID.Value = TShirtTexID
else
newTShirtTexID.Value = ""
end
newTShirtTexID.Name = "Texture"
--EXTRA --EXTRA
local newItem = Instance.new("StringValue",newCharApp) local newItem = Instance.new("StringValue",newCharApp)
if (ItemID ~= nil) then if (ItemID ~= nil) then
@ -371,7 +364,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Noti
pcall(function() game.Close:connect(function() Server:stop() end) end) pcall(function() game.Close:connect(function() Server:stop() end) end)
end end
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Tripcode,VerifiedScripts,TShirtTexID,Ticket) function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Tripcode,VerifiedScripts,Ticket)
local suc, err = pcall(function() local suc, err = pcall(function()
client = game:service("NetworkClient") client = game:service("NetworkClient")
player = game:service("Players"):createLocalPlayer(UserID) player = game:service("Players"):createLocalPlayer(UserID)
@ -383,7 +376,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
player:SetAdminMode(true) player:SetAdminMode(true)
pcall(function() player.Name=PlayerName or "" end) pcall(function() player.Name=PlayerName or "" end)
game:service("Visit"):setUploadUrl("") game:service("Visit"):setUploadUrl("")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,TShirtTexID) InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
end) end)
local function dieerror(errmsg) local function dieerror(errmsg)
@ -443,14 +436,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end end
end end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,TShirtTexID) function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
game:service("RunService"):run() game:service("RunService"):run()
local plr = game.Players:createLocalPlayer(UserID) local plr = game.Players:createLocalPlayer(UserID)
game.Workspace:insertContent("rbxasset://Fonts//libraries.rbxm") game.Workspace:insertContent("rbxasset://Fonts//libraries.rbxm")
plr.Name = PlayerName plr.Name = PlayerName
plr:SetAdminMode(true) plr:SetAdminMode(true)
plr:LoadCharacter() plr:LoadCharacter()
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,TShirtTexID) InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false) LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:service("Visit"):setUploadUrl("") game:service("Visit"):setUploadUrl("")
while true do while true do

View File

@ -126,7 +126,7 @@ function LoadCharacterNew(playerApp,newChar)
end end
end end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,TShirtTexID) function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
local newCharApp = Instance.new("IntValue",Player) local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance" newCharApp.Name = "Appearance"
--BODY COLORS --BODY COLORS
@ -183,13 +183,6 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
newTShirt.Value = "NoTShirt.rbxm" newTShirt.Value = "NoTShirt.rbxm"
end end
newTShirt.Name = "T-Shirt" newTShirt.Name = "T-Shirt"
local newTShirtTexID = Instance.new("StringValue",newTShirt)
if (TShirtTexID ~= nil) then
newTShirtTexID.Value = TShirtTexID
else
newTShirtTexID.Value = ""
end
newTShirtTexID.Name = "Texture"
--EXTRA --EXTRA
local newItem = Instance.new("StringValue",newCharApp) local newItem = Instance.new("StringValue",newCharApp)
if (ItemID ~= nil) then if (ItemID ~= nil) then
@ -371,7 +364,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Noti
pcall(function() game.Close:connect(function() Server:stop() end) end) pcall(function() game.Close:connect(function() Server:stop() end) end)
end end
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Tripcode,VerifiedScripts,TShirtTexID,Ticket) function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Tripcode,VerifiedScripts,Ticket)
local suc, err = pcall(function() local suc, err = pcall(function()
client = game:service("NetworkClient") client = game:service("NetworkClient")
player = game:service("Players"):createLocalPlayer(UserID) player = game:service("Players"):createLocalPlayer(UserID)
@ -383,7 +376,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
player:SetAdminMode(true) player:SetAdminMode(true)
pcall(function() player.Name=PlayerName or "" end) pcall(function() player.Name=PlayerName or "" end)
game:service("Visit"):setUploadUrl("") game:service("Visit"):setUploadUrl("")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,TShirtTexID) InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
end) end)
local function dieerror(errmsg) local function dieerror(errmsg)
@ -443,14 +436,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end end
end end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,TShirtTexID) function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
game:service("RunService"):run() game:service("RunService"):run()
local plr = game.Players:createLocalPlayer(UserID) local plr = game.Players:createLocalPlayer(UserID)
game.Workspace:insertContent("rbxasset://Fonts//libraries.rbxm") game.Workspace:insertContent("rbxasset://Fonts//libraries.rbxm")
plr.Name = PlayerName plr.Name = PlayerName
plr:SetAdminMode(true) plr:SetAdminMode(true)
plr:LoadCharacter() plr:LoadCharacter()
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,TShirtTexID) InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false) LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:service("Visit"):setUploadUrl("") game:service("Visit"):setUploadUrl("")
while true do while true do