Мне интересно написать программу, которая может сделать что-то вроде команды netcats «nc -L -d -p -t -e cmd.exe». Таким образом, он предоставляет удаленную оболочку. Я пробовал вывод трубопровода и ввода из и в cmd.exe, а также отправлял и получал его через сокет, но на самом деле он не работает. Есть ли другие способы сделать это? Кстати, я программирую на C#.Написание программы с удаленной функциональностью оболочки, такой как netcat
Это какой-то тестовый код, который я написал, чтобы проверить, могу ли я сделать свою собственную «оболочку». Результатом этого является то, что должно быть отправлено через сокет. Однако программа останавливается, когда приходит время читать результат. Это устраняется только с помощью метода .readline(), но я не знаю, как определить, когда он больше не должен читать строки.
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.Start();
StreamReader sr = p.StandardOutput;
StreamWriter sw = p.StandardInput;
while (true)
{
Console.Write(">> ");
string cmd = Console.ReadLine();
sw.WriteLine(cmd);
var resp = sr.ReadLine();
Console.WriteLine(resp);
}
Спасибо.
Не работает хорошо, каким образом именно? Я делал именно это в прошлом, и он работал как рекламируемый, поэтому, вероятно, это вопрос внимания к деталям. – Jon
Спасибо за ваш ответ. Я только что обновил свой пост с помощью кода, который сейчас работает. Вы видите, что не так? –