Added the GodMode example program

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@81 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
John Hurliman
2006-07-24 09:37:41 +00:00
parent a3f3f0b289
commit 780afb51dc
3 changed files with 199 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
/*
* GodMode.cs: Enables client-side God Mode privileges
*
* Copyright (c) 2006 John Hurliman
* All rights reserved.
*
* - Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* - Neither the name of the Second Life Reverse Engineering Team nor the names
* of its contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Net;
using System.Collections;
using SLProxy;
using libsecondlife;
public class GodMode {
private static ProtocolManager protocolManager;
private static Proxy proxy;
public static void Main(string[] args) {
protocolManager = new ProtocolManager("keywords.txt", "protocol.txt");
ProxyConfig proxyConfig = new ProxyConfig("GodMode", "jhurliman@wsu.edu", protocolManager, args);
proxy = new Proxy(proxyConfig);
// register delegates for all packets
proxy.AddDelegate("CompleteAgentMovement", Direction.Outgoing, new PacketDelegate(CompleteAgentMovement));
proxy.Start();
}
// delegate for movement packet: log the packet and return it unharmed
private static Packet CompleteAgentMovement(Packet packet, IPEndPoint endPoint) {
// deconstruct the packet
Hashtable blocks = PacketUtility.Unbuild(packet);
LLUUID agentID = (LLUUID)PacketUtility.GetField(blocks, "AgentData", "AgentID");
LLUUID sessionID = (LLUUID)PacketUtility.GetField(blocks, "AgentData", "SessionID");
Console.WriteLine("Captured CompleteAgentMovement packet, AgentID: " +
agentID.ToString() + ", SessionID: " + sessionID.ToString());
// construct a GrantGodlikePowers packet
blocks = new Hashtable();
Hashtable fields;
fields = new Hashtable();
fields["GodLevel"] = (byte)255;
fields["Token"] = LLUUID.GenerateUUID();
blocks[fields] = "GrantData";
fields = new Hashtable();
fields["AgentID"] = agentID;
fields["SessionID"] = sessionID;
blocks[fields] = "AgentData";
Packet godPacket = PacketBuilder.BuildPacket("GrantGodlikePowers",
protocolManager, blocks, Helpers.MSG_RELIABLE + Helpers.MSG_ZEROCODED);
// inject the packet
proxy.InjectPacket(godPacket, Direction.Incoming);
Console.WriteLine("Injected GrantGodlikePowers packet");
// return the packet unmodified
return packet;
}
}

View File

@@ -0,0 +1,106 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
SchemaVersion = "2.0"
ProjectGuid = "{6222B134-AE5F-489A-8A77-423A721B7C62}"
>
<Build>
<Settings
ApplicationIcon = ""
AssemblyKeyContainerName = ""
AssemblyName = "GodMode"
AssemblyOriginatorKeyFile = ""
DefaultClientScript = "JScript"
DefaultHTMLPageLayout = "Grid"
DefaultTargetSchema = "IE50"
DelaySign = "false"
OutputType = "Exe"
PreBuildEvent = ""
PostBuildEvent = ""
RootNamespace = "Analyst"
RunPostBuildEvent = "OnBuildSuccess"
StartupObject = ""
>
<Config
Name = "Debug"
AllowUnsafeBlocks = "false"
BaseAddress = "285212672"
CheckForOverflowUnderflow = "false"
ConfigurationOverrideFile = ""
DefineConstants = "DEBUG;TRACE"
DocumentationFile = ""
DebugSymbols = "true"
FileAlignment = "4096"
IncrementalBuild = "false"
NoStdLib = "false"
NoWarn = ""
Optimize = "false"
OutputPath = "bin\Debug\"
RegisterForComInterop = "false"
RemoveIntegerChecks = "false"
TreatWarningsAsErrors = "false"
WarningLevel = "4"
/>
<Config
Name = "Release"
AllowUnsafeBlocks = "false"
BaseAddress = "285212672"
CheckForOverflowUnderflow = "false"
ConfigurationOverrideFile = ""
DefineConstants = "TRACE"
DocumentationFile = ""
DebugSymbols = "false"
FileAlignment = "4096"
IncrementalBuild = "false"
NoStdLib = "false"
NoWarn = ""
Optimize = "true"
OutputPath = "bin\Release\"
RegisterForComInterop = "false"
RemoveIntegerChecks = "false"
TreatWarningsAsErrors = "false"
WarningLevel = "4"
/>
</Settings>
<References>
<Reference
Name = "System"
AssemblyName = "System"
HintPath = "..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
/>
<Reference
Name = "System.Data"
AssemblyName = "System.Data"
HintPath = "..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
/>
<Reference
Name = "System.XML"
AssemblyName = "System.Xml"
HintPath = "..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
/>
<Reference
Name = "SLProxy"
Project = "{E4115DC9-FC88-47D6-B3B6-2400AD19B80D}"
Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
/>
<Reference
Name = "libsecondlife"
AssemblyName = "libsecondlife"
HintPath = "..\..\libsecondlife-cs\bin\Debug\libsecondlife.dll"
Private = "False"
/>
</References>
</Build>
<Files>
<Include>
<File
RelPath = "GodMode.cs"
SubType = "Code"
BuildAction = "Compile"
/>
</Include>
</Files>
</CSHARP>
</VisualStudioProject>

View File

@@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatConsole", "ChatConsole.
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GodMode", "GodMode.csproj", "{6222B134-AE5F-489A-8A77-423A721B7C62}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
@@ -29,6 +33,10 @@ Global
{D8ECCBE1-AC71-4054-AAA6-2D50E5629504}.Debug.Build.0 = Debug|.NET
{D8ECCBE1-AC71-4054-AAA6-2D50E5629504}.Release.ActiveCfg = Release|.NET
{D8ECCBE1-AC71-4054-AAA6-2D50E5629504}.Release.Build.0 = Release|.NET
{6222B134-AE5F-489A-8A77-423A721B7C62}.Debug.ActiveCfg = Debug|.NET
{6222B134-AE5F-489A-8A77-423A721B7C62}.Debug.Build.0 = Debug|.NET
{6222B134-AE5F-489A-8A77-423A721B7C62}.Release.ActiveCfg = Release|.NET
{6222B134-AE5F-489A-8A77-423A721B7C62}.Release.Build.0 = Release|.NET
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection