• XSS.stack #1 – первый литературный журнал от юзеров форума

RDP C#

SlEpOy_SnIpEr

Премиум
Premium
Регистрация
17.02.2021
Сообщения
293
Реакции
70
Гарант сделки
4
Написал костыль на С# c использованием windows form в visual studio для подключения по rdp к серверу.


1.png
при нажатии на кнопку "подключится" - собственно подключается к первому айпи из списка
собственно при нажатии на кнопку отключиться - отключается от сервера, а при повторном нажатии на кнопку "подключится" - к следующему айпи.
Вопрос: как это автоматизировать?
Нужно чтоб, он многопоточно подключался к каждому айпи делал скриншот, отключался и к следующему айпи переходил.
 
а сурс можно?)
Метод при нажатии на кнопку "Подключиться"
Не написал еще код для создания скриншота.
C#:
private async void ConnectRdp()
{
  if (currentIndex < listBox1.Items.Count)
   {
     if (rdp.Connected == 0 && Stop == false)
     {
       label2.Text = "Проверено ip: " + Convert.ToString(currentIndex + 1);
       //rdp.UserName = "";
       //rdp.AdvancedSettings9.ClearTextPassword = "";
       //rdp.AdvancedSettings9.EnableCredSspSupport = true;
       rdp.Server = listBox1.Items[currentIndex].ToString();
       Console.WriteLine("Подключаемся к IP: " + listBox1.Items[currentIndex].ToString());
       rdp.Connect();
       //await Task.Delay(7000);
       //rdp.Focus();
       if (rdp.Connected != 0)
       {
           rdp.Disconnect();
       }
       Console.WriteLine("Отключились!!");
       currentIndex++;
     }
  }
}
 
Написал костыль на С# c использованием windows form в visual studio для подключения по rdp к серверу.


при нажатии на кнопку "подключится" - собственно подключается к первому айпи из списка
собственно при нажатии на кнопку отключиться - отключается от сервера, а при повторном нажатии на кнопку "подключится" - к следующему айпи.
Вопрос: как это автоматизировать?
Нужно чтоб, он многопоточно подключался к каждому айпи делал скриншот, отключался и к следующему айпи переходил.

C#:
public partial class Form1 : Form
    {
        private string[] ipAddresses = { "192.168.1.1", "192.168.1.2", "192.168.1.3" };
        private int currentIndex = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void ConnectButton_Click(object sender, EventArgs e)
        {
            if (currentIndex < ipAddresses.Length)
            {
                string ipAddress = ipAddresses[currentIndex];
                Process.Start("mstsc.exe", $"/v:{ipAddress}");
                currentIndex++;
            }
            else
            {
                MessageBox.Show("All IP addresses have been used.");
            }
        }

        private void DisconnectButton_Click(object sender, EventArgs e)
        {
            Process[] processes = Process.GetProcessesByName("mstsc");
            if (processes.Length > 0)
            {
                processes[0].Kill();
                MessageBox.Show("Disconnected from server.");
            }
            else
            {
                MessageBox.Show("No active RDP connections.");
            }
        }
    }
что то типа этого
 
C#:
public partial class Form1 : Form
    {
        private string[] ipAddresses = { "192.168.1.1", "192.168.1.2", "192.168.1.3" };
        private int currentIndex = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void ConnectButton_Click(object sender, EventArgs e)
        {
            if (currentIndex < ipAddresses.Length)
            {
                string ipAddress = ipAddresses[currentIndex];
                Process.Start("mstsc.exe", $"/v:{ipAddress}");
                currentIndex++;
            }
            else
            {
                MessageBox.Show("All IP addresses have been used.");
            }
        }

        private void DisconnectButton_Click(object sender, EventArgs e)
        {
            Process[] processes = Process.GetProcessesByName("mstsc");
            if (processes.Length > 0)
            {
                processes[0].Kill();
                MessageBox.Show("Disconnected from server.");
            }
            else
            {
                MessageBox.Show("No active RDP connections.");
            }
        }
    }
что то типа этого
Я использую AxInterop. Нужно подключаться к серверу без логина и пароля и многопоточно. Код для подключения к rdp я написал, мне нужно мой код автоматизировать
 
Последнее редактирование:
Does it need to be multithreaded? Can't you just automate the action of clicking 'next' then rely on it being fast enough?


Then eventually make it run with multiple processes on diff ip's.

Seems simpler.
нужно реализовать в многопотоке
 
Умный. Это будет действительно полезно, как только будет автоматизировано.
меня наверно никто не понял. меня интересуют потоки
 
Пожалуйста, обратите внимание, что пользователь заблокирован
меня наверно никто не понял. меня интересуют потоки
По первому посту ты просишь не потоки а поочередность автоматизировать.
т.е по сути тебе надо foreach юзать и проходиться по всем. Можно так же добавить асинхронную операцию при подключении что бы не ждать завершения пред идущей операции и сразу переходить дальше.
 
мой реко так умеет, загружаешь список таргетов, и на выходе скрины, отсортированные по типу ОС, до 50 потоков одновременно работает.
интересует реализация. Поможешь?
 
интересует реализация. Поможешь?
если в кратце то у меня создаётся виртуальный рабочий стол где открывается куча окон с рдп подключениями, за отображение РДП окна отвечает freerdp, а также есть нюанс с таймингами, что разным окнам нужно разное время для подгрузки окна с логинами, freerdp выдаёт лог по загрузке контента грубо говоря, надо запустить с дебагом, и там увидишь лог когда чтото новое подгружается на окное, и производительный скриншотер который всё это дело успевает обработать, а ещё на сколько я помню есть лимит на оконные сообщения, и я там переделывал что бы работало по другому, короче не всё так просто с этой задачей как моэт показаться на первый взгляд.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх