Восстановление сохраненных паролей в Opera

В браузере Opera, так же ка и в Firefox, без задания мастер-пароля сохраненные пароли могут быть легко восстановлены. Для этого достаточно иметь доступ к файлу wand.dat в пользовательском каталоге. В Linux, например, он располагается: ~/.opera/wand.dat.

Сам файл зашифрован и напрямую просто так посмотреть пароли не получится. На сайте Reverse Engineering Team Blog есть статья рассматривающая возможность доступа к сохраненным данным wand. Там же есть и исходный код программы на C++, она написана под Windows, но может работать и под Linux, надо лишь внести небольшие изменения для совместимости с компиляторами gcc 4.3 и выше. Для этого нужно явно прописать необходимую библиотеку –  #include <cstring>. Дальше все элементарно (сразу скажу, что на моей системе полученные данные преобразуются во множество вопросительных знаков в консоли, какая-то несовместимость):

$ sudo apt-get install build-essential libssl-dev linux-headers-$(uname -r)
$ g++ -o unwand unwand.cpp -I/usr/include/openssl -lssl
$ cd ~/.opera/ && ~/unwand unwand.dat

opera-sec-prefЯ не смог побороть нечитаемость результатов программы (вполне возможно, под Windows она работает полностью корректно), поэтому воспользовался найденной в интернете Win32-версией программы, она без запинки выдала все мои пароли, сохраненные в Opera:

$ wine .~/Desktop/Unwand/Unwand.exe&

Программа доступна, например, здесь: Russian Password Crackers: UnWand 1.0.
Так что очень хорошо защищайте свой компьютер от несанкционированного доступа, а еще лучше – используйте мастер-пароль для Opera (Tools -> Preferences -> Advanced -> Security -> Set Master Password…). Конечно, есть атаки и на этот пароль, например атака по словарю или полный перебор, но это уже другая история.

P.S. (19.01.2010)

Получил сегодня на емайл такое письмо от некeого “Madhu”<eno***@meer.net>. Он описал как лечить описанную мной проблему работы unwand под Linux. Может кому будет полезно:

“I saw the english translation of your page <http://rat.admin.lv/?p=242>
where you noticed that “I was not able to overcome unreadable results
of the program (it is possible under Windows, it works completely
correctly), so just used the Internet Win32-version of the program, she
unhesitatingly handed all my passwords stored in Opera:”

The reason unwand.cpp fails in linux is that the data in cryptoData[]
appears to be in little endian UTF-16 format, which I think windows uses
natively, so the `wcout << string’ works as expected.  On linux, which
typically uses a UTF-8 locale, the wcout stream implementation fails.

On Linux you can work around this by converting the data from UTF-16 to
UTF-8, so instead of `std::wcout << (wchar_t *)cryptoData << std::endl’,
You could use something like the code in file I attach.

I hope this clears up the mystery.  Please forgive me for writing to
your gmail account though I do not wish to receive mail from gmail.

— Madhu”

f.cc

Share/Bookmark

Leave a comment

Your comment