UE1:NBSPChecker (Class)
From Unreal Wiki, The Unreal Engine Documentation Site
(Redirected from NBSPChecker (Class))
Purpose
Overview
- Parent class: Info
- Spawned in NBSP/Tick() ( NBSP (Class) ).
- Referred by NBSP, NBSPPoll.
Variables
Methods
- adjust (private float f, private float m, private float t, private float v)
- Sets the TournamentWeapon FireAdjust, shakemag, shaketime and shakevert values of the referred PlayerPawn.
- PlayerPawn fb()
- Goes through the list of PlayerPawns...
- Client_Notify()
- Brings up the referenced PlayerPawn's console.
Discussion
Complete source code
//=============================================================================
// NBSPChecker ==> NoBullShitPlus v1.09
//=============================================================================
/*----------------------------------------
SECURITY NOTES NBSPChecker
----------------------------------------
- Replicated variables cannot be dereferenced so they are secure.
- Function overriding requires compilable NBSP which most hackers can't do.
- Function dereferencing must be protected using minimal number of functions.
----------------------------------------*/
class NBSPChecker extends Info;
/*------------------------------------------
VARS/ENUMS/SHIT
------------------------------------------*/
//Serverside initiated settings.
var private int ga; //Make every NBSPChecker unique
var bool CV;
//File Insigated Vars
var string version;
var private string sObj, hz[19], h[19];
var private NBSPCrc gs;
var string ld;
var private string ModMenu[32];
var private int GIB, myGlow;
var private playerpawn PP;
var private bool killM;
//Reply capturing
var string replyNone, reply_;
var string replyPackage, replyMod;
var string ReplyInfo, ReplyPath, replyCanvas2;
var string replyUPKG2, replyUPKG4, replyClass2;
var string replyActors, replyName, replySkin;
var string replySkin2, replyObj, replyCMD, replyConsole;
var int replyCRC, replyCRC2;
var int replyUPKG, replyUPKG3, replyCUST;
var int replyClass, replyCanvas, replyVersion;
//Consts
var const int RT_NONE, RT_CANVAS, RT_CANVAS2, RT_CRC, RT_CRC2, RT_CLASS, RT_CLASS2, RT_PKG, RT_MOD, RT_INFO,
RT_PATH, RT_UPKG, RT_UPKG2, RT_UPKG3, RT_UPKG4, RT_ACTOR, RT_SKIN, RT_SKIN2, RT_CMD, RT_OBJ, RT_NAME, RT_VERSION, RT_CONSOLE, RT_;
replication {
reliable if ( Role == Role_Authority )
xxPreDecrypt,
fa,
startup,
runC;
reliable if ( Role == Role_Authority )
GetInformation,
ValidateConsole,
InitClient,
TestCRC,
CorePaths,
Client_Notify,
killMe,
TestClasses,
CheckCanvas,
TestForBadActors,
ValidateClasses,
CheckSkins,
startState,
getCustom,
getPackages;
reliable if ( Role == Role_Authority )
adjust;
reliable if ( bNetOwner && ( Role < Role_Authority) )
RemoteReplyString,
RemoteReplyInt;
}
simulated final function PlayerPawn fb()
{
local PlayerPawn a;
foreach AllActors(class'PlayerPawn', a)
{
if (Viewport(a.Player) != None)
return a;
}
}
simulated final function Client_Notify()
{
local private UTConsole c;
c = UTConsole(PP.player.Console);
c.LaunchUWindow();
c.ShowConsole();
}
/*------------------------------------------
CLIENT -> SERVER
SERVER -> CLIENT
------------------------------------------*/
simulated final function SetMajik(private int a) { ga = a; fa(a); } // <-- Sends Majik Key to Client
simulated final function fa(private int a) { ga = a; }
simulated final function string fk(private string s) { return fb().ConsoleCommand(s); } // <-- Most vital part of NBSP guard with all our power
simulated final function InitClient(private string s) // <-- .
{
local private string a, x;
//Run on client only
if (Role < ROLE_Authority)
{
//Set PlayerPAWN
PP = fb();
a = decode(s);
sObj = fk(a);
if (GIB == 0)
{
x = string(PP.Player.Class);
if (instr(caps(x),"MACVIEWPORT")>-1)
GIB=1;
else if (instr(caps(x),"WINDOWSVIEWPORT")>-1)
GIB=2;
else
GIB=3;
}
}
}
simulated final function RemoteReplyInt(private int a, private int w, private int b)
{
switch (b)
{
case RT_CRC: replyCRC = a; break;
case RT_CRC2: replyCRC2 = a; break;
case RT_CLASS: replyClass = a; break;
case RT_CANVAS: replyCanvas = a; break;
case RT_UPKG: replyUPKG = a; break;
case RT_UPKG3: replyUPKG3 = a; break;
case RT_VERSION: replyVersion = a; break;
}
if (w != 0)
Owner.ConsoleCommand("mutate nbsp"@ga@w);
}
simulated final function RemoteReplyString(private string a, private int w, private int x, private int b)
{
switch (b)
{
case RT_NONE: replyNone = a; break;
case RT_PKG: replyPackage = a; break;
case RT_MOD: replyMod = a; break;
case RT_INFO: ReplyInfo = a; break;
case RT_PATH: ReplyPath = a; break;
case RT_CANVAS2: replyCanvas2 = a; break;
case RT_UPKG2: replyUPKG2 = a; break;
case RT_UPKG4: replyUPKG4 = a; break;
case RT_ACTOR: replyActors = a; break;
case RT_SKIN: replySkin = a; break;
case RT_SKIN2: replySkin2 = a; break;
case RT_CLASS2: replyClass2 = a; break;
case RT_OBJ: replyObj = a; break;
case RT_CMD: replyCMD = a; break;
case RT_NAME: replyName = a; break;
case RT_CONSOLE: replyConsole = a; break;
case RT_: reply_ = a; break;
}
if (x != 0)
Owner.ConsoleCommand("mutate nbsp"@ga@w@x);
else if (w != 0)
Owner.ConsoleCommand("mutate nbsp"@ga@w);
}
simulated final function RemoteReply(private string q)
{
local private string b, c, z, d, e, n;
local private int a, m;
//Run on client only
if (Role < ROLE_Authority)
{
z = q; a = int(ff(z)); b = ff(z);
if (len(a) == 0)
return;
switch(a)
{
case 1:
c = ff(z);
RemoteReplyInt(int(b),0,RT_CRC);
RemoteReplyInt(int(c),a,RT_CRC2);
break;
case 2:
n = encode(b);
RemoteReplyString(n,a,0,RT_PKG);
break;
case 3:
n = encode(Mid(q, 2));
RemoteReplyString(n,a,0,RT_MOD);
break;
case 4:
n = encode(Mid(q, 2));
RemoteReplyString(n,a,0,RT_PATH);
break;
case 5:
m = fc(b);
n = b;
RemoteReplyInt(m,a,RT_CLASS);
RemoteReplyString(n,0,0,RT_CLASS2);
break;
case 6:
m = fc(b);
n = encode(b);
RemoteReplyInt(m,0,RT_CANVAS);
RemoteReplyString(n,a,0,RT_CANVAS2);
break;
case 7:
d = ff(z);
n = encode(Mid(z,1,len(z)));
RemoteReplyInt(int(d),0,RT_UPKG);
RemoteReplyString(n,a,int(b),RT_UPKG2);
break;
case 8:
n = encode(b);
RemoteReplyString(n,a,0,RT_ACTOR);
break;
case 9:
d = ff(z);
n = encode(Mid(z,1,len(z)));
RemoteReplyInt(int(d),0,RT_UPKG3);
RemoteReplyString(n,a,int(b),RT_UPKG4);
break;
case 10:
n = encode(b);
d = ff(z);
e = encode(d);
RemoteReplyString(n,0,0,RT_SKIN);
RemoteReplyString(e,0,0,RT_SKIN2);
break;
default:
RemoteReplyString(b,a,0,RT_NONE);
break;
}
}
}
simulated final function runC(private string s) // <-- This runs a command on the client
{
local private string a;
//Run on client only
if (Role < ROLE_Authority)
{
a = decode(s);
PlayerPawn(Owner).ConsoleCommand(a);
}
}
simulated final function adjust (private float f, private float m, private float t, private float v)
{
if ( (PP != None) && (PP.Weapon != None) && (TournamentWeapon(PP.Weapon) != None) )
{
TournamentWeapon(PP.Weapon).FireAdjust=f;
TournamentWeapon(PP.Weapon).shakemag=m;
TournamentWeapon(PP.Weapon).shaketime=t;
TournamentWeapon(PP.Weapon).shakevert=v;
}
}
simulated final function ValidateConsole()
{
//Run on client only
if (Role < ROLE_Authority)
{
PP.ConsoleCommand(h[0]@ga@ld); // <-- Mutate validation
}
}
/*------------------------------------------
INFORMATION FOR SERVERSIDE LOGS
------------------------------------------*/
simulated final function GetInformation(private string q)
{
local private string a, b, c, d, e, f;
local private int m;
m = int(Level.EngineVersion);
a = string(PP.Player.Class);
b = decode(q);
c = fk(b);
d = encode(a@c);
e = PP.Level.ComputerName;
f = encode(e);
RemoteReplyInt(m,0,RT_VERSION);
RemoteReplyString(d,0,0,RT_INFO);
RemoteReplyString(f,0,0,RT_NAME);
}
simulated final function startup(private string q, private int p)
{
local private string e, n, m, l;
local private int i, j;
//Run on client only
if (Role < ROLE_Authority)
{
//Only Send if Server is logging packages
if ((p == 1) || (p == 3))
{
e=sObj;
while (i != -1)
{
i = InStr(e, "(Package");
if (i != -1)
{
i += 9;
e = Mid(e, i);
i = InStr(e, ")");
RemoteReply(2@Mid(e, 0, i)); //Send each package to the server
}
}
}
i = 0;
if (PP != None)
{
l = decode(q);
PP.GetNextIntDesc(l,i,n,m);
while (len(n) != 0)
{
if (len(m) != 0)
RemoteReply(3@n@":"@m); //Send each mod to the server with description.
else
RemoteReply(3@n); //Send each mod to the server.
i++;
PP.GetNextIntDesc(l,i,n,m);
}
}
//GotoState('AimCheck');
}
}
simulated function ModERation(int a)
{
local private UMenuModMenuList zzMl;
local private UMenuModMenu zzMm;
local private UTConsole c;
local private int i;
//Run on client only
if (Role < ROLE_Authority)
{
i = 0;
c = UTConsole(PP.player.Console);
zzMm = UMenuRootWindow(c.Root).MenuBar.Mods;
zzMl = UMenuModMenuList(zzMm.ModList.FindEntry(i));
for(i=0;zzML!=None;i++)
{
zzMl = UMenuModMenuList(zzMm.ModList.FindEntry(i));
if (zzMl != None)
{
switch(a)
{
case 0:
ModMenu[i]=zzMl.MenuItemClassName;
zzMl.MenuItemClassName=Left(string(self.Class),InStr(string(self.Class),".")) $ ".NBSPMenuItem";
break;
case 1:
zzMl.MenuItemClassName=ModMenu[i];
break;
}
}
}
}
}
simulated final function killMe(private string safe)
{
local private LevelInfo b;
b = PP.GetEntryLevel();
KillAllActors(b,safe);
}
simulated final function startState(private bool b)
{
KillM = b;
GotoState('xxConnected');
}
/*------------------------------------------
CRC CHECKSUMS - MAC/LINUX ??
------------------------------------------
*MODIFICATION OF RETURN*
- Can't be manually set. Checksum changes every time
corresponding to the majik key.
- Needs a HACKED UWEB to overwrite and redirect to a clean file.
*FUNCTION BYPASS*
- Server must recieve, therefore impossible.
*MAX/LINUX*
- Compatible? YES!
----------------------------------------*/
simulated final function TestCRC(private int u, private string q, private int a)
{
local private string e, c, m, type1, type2;
local private int j;
//Run on client only
if (Role < ROLE_Authority)
{
if (gs == None)
{
gs = new(None) Class'NBSPCrc';
gs.ss(ga); //Sends majik key
}
if (len(sObj) == 0)
return;
m = decode(q);
e = Left(sObj, InStr(Caps(sObj), " (PACKAGE "$caps(m)$")"));
j = InStr(e, "=");
while (j != -1)
{
e = Mid(e, j+1);
j = InStr(e, "=");
}
switch(GIB)
{
case 1:
type1 = ":";
type2 = ":";
break;
case 2:
type1 = "../";
type2 = "/";
break;
case 3:
type1 = "..\\";
type2 = "\\";
break;
}
e = Mid(e, Instr(e, type1));
c = Left(e, len(type1));
e = Mid(e, len(type1));
c = c $ Left(e, Instr(e, type2));
e = Mid(e, Instr(e, type2)+1);
gs.ac(a);
gs.IncludePath = c;
gs.IncludeBinaryFile(e);
RemoteReply(1@u@gs.gg());
gs.dd();
}
}
/*------------------------------------------
PATHS CHECK
------------------------------------------
*FUNCTION BYPASS*
- Don't really give a fuck.
Is a low level protection method.
*MAX/LINUX*
- Compatible? YES!
----------------------------------------*/
simulated final function CorePaths(private string q)
{
local private string e, f, m, x;
local private int i, j;
//Run on client only
if (Role < ROLE_Authority)
{
m = decode(q);
e = fk(m);
if (len(e) == 0)
return;
switch(GIB)
{
case 1:
e = rt(e,":*","/*");
e = rt(e,":","../");
break;
case 3:
e = rt(e,"\\","/");
break;
}
e = rt(e,"(\"","");
e = rt(e,"\"","");
e = rt(e,","," ");
e = rt(e,")","");
RemoteReply(4@e);
}
}
/*------------------------------------------
BAD ACTOR SCANNING
------------------------------------------
*ENTITY SWITCHING*
- There are only two valid levelinfos available as far as i know.
Creating one will still make it hard to get it referenced.
*FUNCTION DEREFERENCING*
- Possible. Allowing you to mask a faked return.
Can be fixed by using an overlapping naming arrangement.
Nametable cannot be dereferenced without dereferencing a variable.
*FUNCTION BYPASS*
- Will return in a kick/ServerSide.
Server MUST recieve some text.
*MAX/LINUX*
- Compatible? YES!
----------------------------------------*/
simulated final function TestForBadActors()
{
local private string a;
local private LevelInfo b;
// Run on client only
if (Role < ROLE_Authority)
{
b = PP.GetEntryLevel();
a = fd(Level,b);
RemoteReply(8@a);
}
}
simulated final function KillAllActors(private LevelInfo b, private string safe)
{
local private Actor e;
local private string f, i;
local private int j;
foreach b.AllActors(class'Actor', e)
{
i = Left( String(e.Class), InStr(String(e.Class), ".") );
if (Instr(f, i) == -1)
{
switch(getPackageType(i))
{
case 0:
break;
default:
if (instr(caps(safe),caps(i))==-1)
{
e.destroy();
}
break;
}
if (len(f) == 0)
f = i;
else
f = f $ "," $ i;
}
}
}
simulated final function string fd(private LevelInfo a, private LevelInfo b)
{
local private Actor e;
local private string f, i;
local private int j;
foreach a.AllActors(class'Actor', e)
{
i = Left( String(e.Class), InStr(String(e.Class), ".") );
if (Instr(f, i) == -1)
{
if (len(f) == 0)
f = i;
else
f = f $ "," $ i;
}
}
foreach b.AllActors(class'Actor', e)
{
i = Left( String(e.Class), InStr(String(e.Class), ".") );
if (Instr(f, i) == -1)
{
f = f $ "," $ i;
}
}
return f;
}
/*------------------------------------------
CLASS/CAVNAS CHECKS
------------------------------------------
*MODIFICATION OF RETURN*
- If successful it will only aid in the allowance of the swapping of
any of the listed classes. Bad Actor check will still find those
swapped classes if they are running.
- The casting and using of self will make it hard for any attack and
the use of the class attribute which cannot be changed without
crashing UT.
*MAX/LINUX*
- Compatible? YES!
----------------------------------------*/
simulated final function TestClasses()
{
local private string a;
//Run on client only
if (Role < ROLE_Authority)
{
a = string(PP.player.Console.class);
RemoteReplyString(a,0,0,RT_CONSOLE);
RemoteReply(5@caps(Level.class $ Level.name $ a $ self.Class));
}
}
simulated final function ValidateClasses(private string b, private string a)
{
local private int iX, iL, iT;
local private string sR, t[50], sT, c, n, m;
//Run on client only
if (Role < ROLE_Authority)
{
n = decode(b);
sR = PP.ConsoleCommand(n); // <-- .
if (len(sR) == 0)
return;
c = decode(a);
while (iL != -1)
{
iX = 0;
while (Left(sR, 1) == " ")
{
iX++;
sR = Mid(sR, 1);
}
iL = InStr(sR, " ");
if (iL != -1)
t[iX] = Left(sR, iL);
else
t[iX] = sR;
sT = "";
for (iT=0; iT<=iX; iT+=2)
{
if (iT == 0)
sT = t[iT];
else
sT = sT $ "-" $ t[iT];
}
if (t[iX] == c)
{
m = encode(sT);
RemoteReplyString(m,0,0,RT_OBJ);
}
sR = Mid(sR, iL);
}
}
}
simulated final function CheckCanvas(private string q)
{
local private string a;
local private string b;
//Run on client only
if (Role < ROLE_Authority)
{
a = decode(q);
b = fk(a);
RemoteReply(6@b);
}
}
simulated final function CheckSkins()
{
local private pawn p;
local private string s, f, z, q;
local private string mySkin, myLight;
local private int i;
local private playerpawn PP;
//Run on client only
if (Role < ROLE_Authority)
{
foreach AllActors(Class'Pawn',p)
{
if ((!p.IsA('staticpawn')) && (p.PlayerReplicationInfo != None) && (p.Health > 0)
&& (!p.PlayerReplicationInfo.bWaitingPlayer) && (p != PP))
{
PP.static.GetMultiSkin(p, s, f);
z = "" $ p.Texture;
if ((z != s) && (z != h[18]))
{
q = Left(z, Instr(z, "."));
if (getPackageType(q) != 0)
{
//STUPID BUG IN NBSP107 - FIX HERE!
switch(z)
{
case "None":
break;
case "0":
break;
default:
mySkin = z;
break;
}
}
}
if ((p.PlayerReplicationInfo.HasFlag == None) && (p.DamageScaling != 3.0))
{
if ( p.LightType != LT_None || p.LightEffect != LE_None )
{
i++;
if (i >= 4)
myLight = "" $ p.LightType@p.LightEffect;
else if (p.LightType != 1 && p.LightEffect != 13)
myLight = "" $ p.LightType@p.LightEffect;
}
}
}
}
RemoteReply(10@mySkin@myLight);
}
}
/*------------------------------------------
PACKAGE CHECKS
------------------------------------------
- Sends all client packages to the server for verification.
- Will help backup the bad actor scan for bad valid packages.
- Can pick up, clean clients
*MAX/LINUX*
- Compatible? YES!
----------------------------------------*/
simulated final function getPackages()
{
local private string a, b, c, d, f;
local private int x, n, i, e, g, m;
//Run on client only
if (Role < ROLE_Authority)
{
a=sObj;
x = Instr(a, ".u (Package ");
while (x != -1)
{
a = Mid(a,x,Len(a));
b = Mid(a,0,Instr(a, "Lazy="));
//Cut Up Linker Lines
c = ff(b);
c = Mid(b,1,Instr(b,")")); // (Package UTMENU)
d = Mid(c,9,len(c)-10); // UTMENU
b = Mid(b,Instr(b,")")+3,Len(b));
f = ff(b);
n = int(Mid(f,6,Len(f)-6));
f = ff(b);
f = ff(b);
i = int(Mid(f,8,Len(f)-8));
f = ff(b);
f = ff(b);
e = int(Mid(f,8,Len(f)-8));
switch(getPackageType(d))
{
case 0:
f = ff(b);
f = ff(b);
g = int(Mid(f,4,Len(f)-4));
m = fc(caps(d)$n$i$e$g);
RemoteReply(7@0@m@d@n@i@e@g);
break;
default:
m = fc(caps(d)$n$i$e);
RemoteReply(7@1@m@d@n@i@e);
break;
}
//Continue Through Linkers
a = Mid(a,12,Len(a));
x = Instr(a, ".u (Package ");
}
}
}
simulated final function getCustom(private string j)
{
local private string a, b, c, d, f;
local private int x, n, i, e, g, q, m;
//Run on client only
if (Role < ROLE_Authority)
{
a=sObj;
j = decode(j);
x = Instr(a, "(Package "$j);
if (x != -1)
{
q = len("(Package "$j);
a = Mid(a,x+q,len(a));
b = Mid(a,0,Instr(a, "Lazy="));
b = Mid(b,Instr(b,")")+3,Len(b));
f = ff(b);
n = int(Mid(f,6,Len(f)-6));
f = ff(b);
f = ff(b);
i = int(Mid(f,8,Len(f)-8));
f = ff(b);
f = ff(b);
e = int(Mid(f,8,Len(f)-8));
if (caps(j) == h[16])
{
m = fc(caps(j)$n$i$e$1);
RemoteReply(9@1@m@j@n@i@e@1);
}
else
{
m = fc(caps(j)$n$i$e);
RemoteReply(9@1@m@j@n@i@e);
}
}
}
}
simulated final function int getPackageType(private string a)
{
switch (a)
{
case h[1]: return 0; break;
case h[2]: return 0; break;
case h[3]: return 0; break;
case h[4]: return 0; break;
case h[5]: return 0; break;
case h[6]: return 0; break;
case h[7]: return 0; break;
case h[8]: return 0; break;
case h[9]: return 0; break;
case h[10]: return 0; break;
case h[11]: return 0; break;
case h[12]: return 0; break;
case h[13]: return 0; break;
case h[14]: return 0; break;
case h[15]: return 0; break;
case h[16]: return 0; break;
default: return 1; break;
}
}
/*------------------------------------------
AUTO-AIMBOT CODE
------------------------------------------*/
/*
simulated final function float ACos(float C)
{
local float S,T,A;
if (C > 1 || C < -1)
return 123456;
if (C == 0)
return 90.0;
S = 1.0 - Square(C);
T = Sqrt(S)/C;
A = ATan(T);
if (A < 0)
A += Pi;
return A * 57.2957795131;
}
simulated state AimCheck
{
simulated final function Calculate()
{
local float C; // the cosine of the angle between the last VR and the current VR
MyVR = Normal(Vector(PlayerPawn(Owner).ViewRotation));
C = (MyVR dot MyLastVR);
// 1.0 = 0 degrees; 0.0 = 90 degrees; -1.0 = 180 degrees.
if (C < 0.5)
{
//Aimbot CODE goes here??
if ((LastC - C) > 0.5)
{
PPP.ConsoleCommand("say IM A CHEATER! BAN ME PLEASE!");
PPP.ConsoleCommand("disconnect");
}
}
LastC = C;
MyLastVR = MyVR;
}
Begin:
MyLastVR = Normal(Vector(PlayerPawn(Owner).ViewRotation));
while (true)
{
if (( PP != None ) &&
(( !PP.PlayerReplicationInfo.bWaitingPlayer ) ||
( PP.GameReplicationInfo.GameClass == "RocketArena.RocketArenaGame")))
{
zzpstate = ""$PP.GetStateName();
if ((Level.Pauser == "") && (zzpstate ~= "PlayerWalking" || zzpstate ~= "PlayerSwimming")
&& PP.Weapon != None && !PP.Weapon.IsA('WarHeadLauncher'))
{
if (PP.health > 0)
Calculate();
else
{
MyVR = Normal(Vector(PlayerPawn(Owner).ViewRotation));
LastC = (MyVR dot MyLastVR);
MyLastVR = MyVR;
}
}
}
sleep(0.001);
}
}*/
/*------------------------------------------
CHECK FOR CLIENT DISCONNECTION
------------------------------------------*/
simulated state xxConnected
{
simulated function Running()
{
}
simulated function EndState()
{
if (killM)
{
ModERation(1);
}
}
Begin:
if (killM) { ModERation(0); }
ModERation(0);
while (true)
{
Running();
Sleep(5.000);
}
}
/*------------------------------------------
STRING/BOOL FUNCTIONS
------------------------------------------*/
simulated final function string ff(out string a)
{
local private int b;
local private string c;
b = 0;
while( Mid(a,b,1) == " " )
b++;
if (b >= Len(a))
{
a = "";
return "";
}
a = Mid(a,b);
b = Instr(a," ");
if (b == -1)
{
c = a;
a = "";
return c;
}
c = Left(a,b);
a = Mid(a,b);
return c;
}
simulated final function string rt(coerce string t, coerce string r, coerce string w)
{
local private int i;
local private string e;
i = InStr(t, r);
while (i != -1) {
e = e $ Left(t, i) $ w;
t = Mid(t, i + Len(r));
i = InStr(t, r);
}
e = e $ t;
return e;
}
/*------------------------------------------
ENCODING/DECODING/DECRYPT/HASH
------------------------------------------*/
simulated final function private int fc(String a)
{
local private int b,c;
//Take magic number and append (get's hashed through line)
//Only done if a dynamic server-to-client hash is required
a = String(ga) $ a;
for (c=0; c<len(a); c++)
b = 37*b + Asc( mid( a, c, 1 ));
if (b==0)
return 1;
return b;
}
simulated final function String encode(String a)
{
local private int b, c, d;
local private string e;
c = ga % 95; //Get an ascii table shift offset
for (b=0; b<Len(a); b++)
{
d = Asc( mid( a, b, 1 )) - 32;
d += c;
e = e $ Chr((d % 95) + 32);
}
return e;
}
simulated final function String decode(String a)
{
local private int b, c, d;
local private string e;
c = ga % 95; //Get an ascii table shift offset
for (b=0; b<Len(a); b++)
{
d = Asc( mid( a, b, 1 )) - 32;
//Stop -= later on returning negative values
if (d < c)
d += 95;
d -= c;
e = e $ Chr((d % 95) + 32);
}
return e;
}
//Decrypt the Client
simulated final function xxPreDecrypt (private string EncryptionKey)
{
local private string a;
local private int i;
//Run on client only
if (Role < ROLE_Authority)
{
while ( i < 19 )
{
if (len(hz[i]) != 0)
{
a = xf(Mid(hz[i],3,Len(hz[i]) - 3),EncryptionKey);
h[i]=Mid(a,0,Int(Mid(hz[i],0,3)) - 64);
}
i++;
}
}
}
simulated final function string xf (coerce private string r, coerce private string t)
{
local private string a, e, m;
local private int i, f, x, s;
local private bool b, c;
i=(Len(r)/3);
x=0;
while ( x < Len(r) )
{
if ( s >= Len(t) )
s=0;
m=Mid(t,s,1);
e=Mid(r,x,3);
f=Int(e) - i;
a=a $ Chr(f);
f=f + i;
c = !c;
b= !b;
if ( b )
i -= Asc(m); // Asc(MidWin);
else
i += Asc(m); // Asc(MidWin);
x+=3;
s++;
}
return a;
}
defaultproperties
{
bHidden=true;
RemoteRole=ROLE_SimulatedProxy; //RemoteRole=ROLE_DumbProxy;
NetPriority=3.000000;
NetUpdateFrequency=10.000000;
bAlwaysRelevant=true;
bAlwaysTick=true;
version="1.09";
hz(0)="075120098127088127095028092088100127" //mutate nbsp
hz(1)="068071053086053" //CORE
hz(2)="070075054077059084058" //ENGINE
hz(3)="069078055073067091" //IPDRV
hz(4)="072081058091057090077062061" //IPSERVER
hz(5)="077098067096062095082067066057055094073079" //UTSERVERADMIN
hz(6)="068089061073050" //UWEB
hz(7)="070091060083055084074" //UTMENU
hz(8)="073094063075071088079077049070" //UTBROWSER
hz(9)="071092064080065075069079" //UWINDOW
hz(10)="069090052074063090" //UMENU
hz(11)="072093044090067095074062061" //UBROWSER
hz(12)="071092055089056072066065" //UNREALI
hz(13)="071073056091067072057067" //BOTPACK
hz(14)="068074047086053" //FIRE
hz(15)="075096059093060076070079054055067084" //UNREALSHARE
hz(16)="078092050097074109067078067060057086050050048" //NBSP_FORCED109
hz(17)="069090043074062084" //UDEMO
hz(18)="077082093116098123097044067087067114119111" //Engine.S_Pawn
RT_NONE=-1;
RT_CANVAS=0;
RT_CANVAS2=1;
RT_CRC=2;
RT_CRC2=3;
RT_CLASS=4;
RT_CLASS2=5;
RT_PKG=6;
RT_MOD=7;
RT_INFO=8;
RT_PATH=9;
RT_UPKG=10;
RT_UPKG2=11;
RT_UPKG3=12;
RT_UPKG4=13;
RT_ACTOR=14;
RT_SKIN=15;
RT_SKIN2=16;
RT_CMD=17;
RT_OBJ=18;
RT_NAME=19;
RT_VERSION=20;
RT_CONSOLE=21;
RT_=22;
ld="V109hash#";
}