UE1:NBSPChecker (Class): Difference between revisions

From Unreal Wiki, The Unreal Engine Documentation Site
Azura (talk | contribs)
Azura (talk | contribs)
Line 5: Line 5:
== Variables ==
== Variables ==
== Methods ==
== 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()
* PlayerPawn fb()
:: Goes through the list of PlayerPawns...
:: Goes through the list of PlayerPawns...

Revision as of 17:03, 2 April 2009

Purpose

Overview

  • Parent class: Info

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

<uscript>//============================================================================= // 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#"; }</uscript>

Footer