PDA

Просмотр полной версии : Пароли в опере


_nic
20.07.2008, 15:47
Пробую считать wand.dat только почему ниче не выходит :( Пытаюсь сделать это так

char *text=new char[(1024*1024)*5];
void opera(void)
{
DWORD rd;
char app[500];char *pat=new char[1024*1024];
ExpandEnvironmentStrings("%APPDATA%",app,500);
strcpy(pat,"\\\\.\\");
strcat(pat,app);
strcat(pat,"\\opera\\opera\\profile\\wand.dat");
SetLastError(0);
HANDLE f=CreateFile(pat,GENERIC_READ,FILE_SHARE_READ,NULL ,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS,NULL);
ReadFile(f,text,(1024*1024)*5,&rd,NULL);
cout<<GetLastError()<<endl;
CloseHandle(f);
cout<<pat<<endl;
}
main()
{
opera();
cout<<text<<endl;
getch();
}
Пытался напрямую вбивать строку в CreateFile

\\\\.\\C:\\Documents and Settings\\user\\Application Data\\opera\\opera\\profile\\wan.dat

Нечитает :( Хотя если в Выполнить ввести %APPDATA%\opera\opera\profile\wand.dat то этот самый ванддат открывается в блокноте.Ткните плиз где у меня ошибка.

Feonor
25.07.2008, 13:16
А вот это \\\\.\\ зачем?
Убери и попробуй...

_antony
25.07.2008, 13:32
А вот это \\\\.\\ зачем?
Убери и попробуй...
Диск С является символической ссылкой =)

GetLastError() ?

_nic
25.07.2008, 17:28
А вот это \\\\.\\ зачем?
Убери и попробуй...
Что с \\\\.\\ что без \\\\.\\ толку 0.

SlyBit
25.07.2008, 19:20
_nic

У тебя ошибка в пути. Во-первых, ты пишешь, что тебе нужен файл wand.dat, а сам Пытался напрямую вбивать строку в CreateFile

\\\\.\\C:\\Documents and Settings\\user\\Application Data\\opera\\opera\\profile\\wan.dat
Во-вторых, в моей опере файл wand.dat лежит в "C:\Program Files\Opera\profile\wand.dat", папки opera в %APPDATA% вообще нет.

Prod
25.07.2008, 19:25
У тебя ошибка в пути. Во-первых, ты пишешь, что тебе нужен файл wand.dat, а сам Во-вторых, в моей опере файл wand.dat лежит в "C:\Program Files\Opera\profile\wand.dat", папки opera в %APPDATA% вообще нет.
Зависит от опции "Для всех пользователей" при установке.

_antony
25.07.2008, 21:40
может автор все таки напишет , что GetLastError возрашает =)

_nic
25.07.2008, 21:41
может автор все таки напишет , что GetLastError возрашает =)
Нуль как нестранно :(

Feonor
26.07.2008, 00:14
НЕ! Я не понимаю в чем проблема, запусти под отладкой и проверь путь к файлу, и проверь хендл.
if (h == INVALID_HANDLE_VALUE)
<значит хендл говно и точно дело в пути>

если не получится, пиши в личку, помогу все равно делать нех...

Feonor
26.07.2008, 00:19
_nic

...в моей опере файл wand.dat лежит в "C:\Program Files\Opera\profile\wand.dat", папки opera в %APPDATA% вообще нет.

Не он првильно пишет, ибо у меня тут:
C:\Documents and Settings\user_name\Application Data\Opera\Opera\profile\wand.dat

_nic
26.07.2008, 00:35
Влепил после CreateFile вот это

if (f == INVALID_HANDLE_VALUE)
{
MessageBox(0,"err","err",MB_OK);
}
эффекта никакого.мессага невыскакивает :(

izlesa
26.07.2008, 00:52
2_nic
скинь скомпиленную прогу и исходник
меня заинтересовало, чтото ошибки не вижу ^___^
ослеп чтоле

Feonor
26.07.2008, 12:11
Влепил после CreateFile вот это

if (f == INVALID_HANDLE_VALUE)
{
MessageBox(0,"err","err",MB_OK);
}
эффекта никакого.мессага невыскакивает :(

Если так то у тебя хендл нормальный, нужно ошибку искать в фкц чтения.

Ты бы исходник выложил, дело бы быстрей пошло :)

nc.STRIEM
26.07.2008, 12:25
а чем тебе fopen() не нравиться?

_nic
26.07.2008, 13:32
char *text=new char[(1024*1024)*5];
void opera(void)
{
DWORD rd;
char app[500];char *pat=new char[1024*1024];
ExpandEnvironmentStrings("%APPDATA%",app,500);
strcpy(pat,"\\\\.\\");
strcat(pat,app);
strcat(pat,"\\opera\\opera\\profile\\wand.dat");
SetLastError(0);
HANDLE f=CreateFile(pat,GENERIC_READ,FILE_SHARE_READ,NULL ,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS,NULL);
if (f == INVALID_HANDLE_VALUE)
{
MessageBox(0,"err","err",MB_OK);
}
ReadFile(f,text,(1024*1024)*5,&rd,NULL);
cout<<GetLastError()<<endl;
CloseHandle(f);
cout<<pat<<endl;
}
main()
{
opera();
cout<<text<<endl;
getch();
}
Исходник

nc.STRIEM
26.07.2008, 13:56
мож так

#include<windows.h>
#include <stdio.h>
#include<IO.h>

int main()
{
char path[1024];

ExpandEnvironmentStrings("%APPDATA%", path, 900);
strcat(path, "\\opera\\opera\\profile\\wand.dat");
FILE *f = fopen(path, "rb");
if(!f)
return printf("File \"%s\" not found\n", path);

int fl = filelength(fileno(f));
char *cont = new char[fl+1];
fread(cont, fl, 1, f);
cont[fl] = 0;
printf("%s\n", cont);
fclose(f);
return 1;
}

_nic
26.07.2008, 15:28
Как нестранно ниче невыводится.В cont пусто ,мистика какя то :( Если ввести в выполнить это %APPDATA%\opera\opera\profile\wand.dat то wand.dat открывается в блокноте.

Aracul
26.07.2008, 16:23
пиши в личку - помогу...)

izlesa
26.07.2008, 16:30
2nc.STRIEM
функции из стандартной библиотеке лучше не использовать в win32 приложениях, тк они более тормознуты и в конечном итоге всё равно обращаются к API

AlexTheC0d3r
28.01.2009, 22:45
Ну, что, смогли или нет? Очень интересная функция :)

xcedz
28.01.2009, 22:49
http://www.reteam.org/blog/archives/unwand.cpp

https://forum.antichat.ru/showpost.php?p=1078514&postcount=3