• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Вывод результата выполнения команды в переменную

  • Автор темы Alien193
  • Дата начала
A

Alien193

Вот собственно функция, ExecuteDOSCommand, после выполнения dos команды получает результат её выполнения, т.е. то что выводится в консоли на экран.
consoleoutput.pas добавляем в проект С++Builder
и ставим #include "consoleoutput.hpp"
Сами функции написаны на дельфи, я дельфи не знаю, поэтому разобраться в нем не могу.

следующий код, самый простой

C++:
ShowMessage(ExecuteDOSCommand("echo test"));

Выводит иероглифы и квадратики. Что не так?
 

Вложения

  • dosoutput.rar
    2,1 КБ · Просмотры: 108
A

az09az

Спасибо за функцию, давно искал.

Вывод происходит в кодировке cp886 (DOS). Ее надо сконвертировать в cp1251(win)

Вот функции для c++ builder 6


Код:
// из DOS в Windows
String DosToWin(String St)
{
PChar Ch;
Ch = StrAlloc(St.Length() + 1);
OemToAnsi(St.c_str(), Ch);
return Ch;
}
// из Windows в DOS
String WinToDos(String St)
{
PChar Ch;
Ch = StrAlloc(St.Length() + 1);
AnsiToOem(St.c_str(), Ch);
return Ch;
}

Так же можно перед выполнением комманды написать chcp1251 например
ExecuteDosCommand("cmd /k chcp1251; echo a");
как-то так...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!