ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Безопасность > Windows
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Перехват вывода cmd
  #1  
Старый 25.02.2007, 03:21
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
Провел на форуме:
246020

Репутация: 105
Red face Перехват вывода cmd

Собственно задача вроде бы простая, но не могу решить, есть run.bat, он выполняется, выводит какие то данные, задача в том что бы перехватить вывод в какую нить строку, plz на Delphi или хотя бы на C++.
 
Ответить с цитированием

  #2  
Старый 25.02.2007, 12:57
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
По умолчанию

Могу привести пример на перле

Код:
#!/usr/bin/perl

open(STDOUT,"> out.txt");
system("run.bat");
close(STDOUT);

Данный код весь вывод (а точнее весь STDOUT) отправит в файл out.txt
 
Ответить с цитированием

  #3  
Старый 25.02.2007, 13:11
zl0ba
Banned
Регистрация: 10.10.2006
Сообщений: 596
Провел на форуме:
2132613

Репутация: 1365


По умолчанию

Может поможет : http://www.firststeps.ru/msoffice/win/bats/r.php?13 ты там полистай.
 
Ответить с цитированием

  #4  
Старый 25.02.2007, 13:15
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

LoFFi, это, конечно, хорошо, но пайпы рулят беспезды.
автор, смотри в сторону popen/pclose
 
Ответить с цитированием

  #5  
Старый 25.02.2007, 14:13
begin_end
Members of Antichat - Level 5
Регистрация: 04.01.2007
Сообщений: 176
Провел на форуме:
17964969

Репутация: 1362
По умолчанию

Вот готовый пример реализации, рабочий и на Дельфи:
Код:
function Dos2Win(CmdLine:String):string;
 const BUFSIZE = 2000; 
 var SecAttr : TSecurityAttributes; 
hReadPipe, hWritePipe : THandle; StartupInfo: TStartUpInfo; ProcessInfo: TProcessInformation; 
Buffer : Pchar; WaitReason, BytesRead : DWord; 
begin 
  with SecAttr do
   begin 
    nlength := SizeOf(TSecurityAttributes); 
    binherithandle := true; 
    lpsecuritydescriptor := nil; 
   end; 
// Creazione della pipe 
   if Createpipe (hReadPipe, hWritePipe, @SecAttr, 0) then 
    begin 
     Buffer := AllocMem(BUFSIZE + 1); // Allochiamo un buffer di dimensioni BUFSIZE+1 
     FillChar(StartupInfo, Sizeof(StartupInfo), #0);
     StartupInfo.cb := SizeOf(StartupInfo); 
     StartupInfo.hStdOutput := hWritePipe; 
     StartupInfo.hStdInput := hReadPipe; 
     StartupInfo.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW; 
     StartupInfo.wShowWindow := SW_HIDE; 
     if CreateProcess(nil,PChar(CmdLine),@SecAttr,@SecAttr,true,NORMAL_PRIORITY_CLASS,nil, 
nil,StartupInfo, ProcessInfo) then 
      begin 
// Attendiamo la fine dell'esecuzione del processo 
      repeat 
      WaitReason := WaitForSingleObject( ProcessInfo.hProcess,100); 
      Application.ProcessMessages; 
      until (WaitReason <> WAIT_TIMEOUT); 
// Leggiamo la pipe 
      Repeat 
      BytesRead := 0; 
// Leggiamo "BUFSIZE" bytes dalla pipe 
      ReadFile(hReadPipe, Buffer[0], BUFSIZE, BytesRead, nil); 
// Convertiamo in una stringa "\0 terminated" 
      Buffer[BytesRead]:= #0; 
// Convertiamo i caratteri da DOS ad ANSI 
      OemToAnsi(Buffer,Buffer); 
// Scriviamo nell' "OutMemo" l'output ricevuto tramite pipe 
      Result := Result + String(Buffer);
      until (BytesRead < BUFSIZE); 
     end; 
     FreeMem(Buffer); 
     CloseHandle(ProcessInfo.hProcess); 
     CloseHandle(ProcessInfo.hThread); 
     CloseHandle(hReadPipe); 
     CloseHandle(hWritePipe);
    end;
end;
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват данных BрxMSG Чужие Статьи 0 26.12.2006 22:22
Перехват данных, кто, где и как? GreenBear Чужие Статьи 1 16.12.2006 16:43
Перехват данных: кто, где и как И.Г. Мировые новости 0 03.12.2006 22:46
Перехват cookie php скриптом Майор PHP, PERL, MySQL, JavaScript 10 01.04.2005 18:35



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ