|
Exposing the Secret of Decrypting
Opera's Magic Wand |
|
|
|
|
|
|
|
|
|
|
|
Opera is one of the fastest web
browser available on the net. It supports wide range of operating
systems mainly Windows, Linux, Mac and it is also available on the
mobile platforms too including iPhone.
Like other internet browsers such as IE, Firefox etc Opera also
stores the username/passwords for websites visited by user. However
passwords are stored only if the user opts to save password during
authentication. This is very useful feature as it prevents user from
hassle of entering password everytime. |
|
|
|
Opera stores all these login
passwords in encrypted format in the 'Magic Wand File' called
'Wand.dat' within the profile folder. This profile path is different
for different versions of Opera. Here is the Wand file (wand.dat)
location for some of the recent versions of Opera.
|
|
[Windows NT/2K/2k3/XP]
C:\Documents and Settings\<username>\Application
Data\Opera\Opera\wand.dat
[Windows Vista/Windows 7]
C:\users\<username>\AppData\Roaming\Opera\Opera\wand.dat |
|
[Windows NT/2K/2k3/XP]
C:\Documents and Settings\<username>\Application
Data\Opera\Opera\profile\wand.dat
[Windows Vista/Windows 7]
C:\users\<username>\AppData\Roaming\Opera\Opera\profile\wand.dat |
|
Opera stores following information in the password Wand file for each of the stored
entry in the following order, |
- Login URL of website
- Main URL of website
- Username field ID
- Username
- Password field ID
- Password
|
All these information are stored in the encrypted format in wand.dat
file. Opera uses Triple-DES algorithm along with static salt data to
encrypt these secret information. |
|
|
|
Most of the information present here is based on the original work
of sna@reteam.org. I am putting it in more simple detailed explaination
for everyone to understand and decipher the art of decrypting Opera's
Magic Wand.
Opera Wand file consists of multiple encrypted blocks for each of the
stored password entries. Each such encrypted block mainly consist of
following fields, |
- Size of encrypted block (4 bytes)
- DES Key Length ( 1 byte)
- DES Key ( 8 bytes)
- Size of encrypted data (4 bytes)
- Encrypted Data
|
Opera uses the following static salt data to encrypt each of the
secret information. |
0x83, 0x7D, 0xFC, 0x0F, 0x8E, 0xB3, 0xE8, 0x69, 0x73, 0xAF, 0xFF |
|
Here are the step by step instructions for decrypting the above
encrypted data from each block |
- Retrieve the DES key (8 bytes) for the current encrypted block.
Then perform the byte stream with the above opera salt and the retrieved
DES key.
|
- Now compute the MD5 checksum of this byte stream. The checksum
will be stored in the variable md5hash1.
|
char buffer[256];
DWORD dwBufSize=11+8;
GetMD5Hash((char*)buffer, dwBufSize, (char*)md5hash1,
MD5_DIGEST_LENGTH); |
|
- Next perform another byte stream with md5hash1, opera salt and DES
key in that order and compute its MD5 hash. Final checksum will be
stored in md5hash2 variable.
|
char buffer[256];
DWORD dwBufSize=MD5_DIGEST_LENGTH + 11 + 8;
GetMD5Hash((char*) buffer, dwBufSize, (char*)md5hash2,
MD5_DIGEST_LENGTH); |
|
- Now use both the MD5 hashes to create schedule keys for decryption
as shown below,
|
DES_key_schedule key1, key2, key3;
DES_set_key_unchecked((const_DES_cblock *)&md5hash1[0], &key1);
DES_set_key_unchecked((const_DES_cblock *)&md5hash1[8], &key2);
DES_set_key_unchecked((const_DES_cblock *)&md5hash2[0], &key3); |
|
- Create DES vector component required for decryption using the
second MD5 hash,
|
DES_cblock iVector;
memcpy(iVector, &md5hash2[8], sizeof(DES_cblock)); |
|
- Finally decrypt the encrypted data using Triple DES decryption
function
|
char decryptData[512];
DES_ede3_cbc_encrypt(encryptData, decryptData, dataLength, &key1,
&key2, &key3, &iVector, DES_DECRYPT);
|
|
On successful execution, the decrypted data will be copied to the
decryptData variable in unicode format. You can use WideCharToMultiByte
function to convert it back to ascii format.
The decryption related structures and functions mentioned here are part
of OpenSSL Crypto library [Reference 1]. |
|
|
|
OperaPasswordDecryptor is the FREE tool to instantly recover the
passwords stored by all versions of Opera. Like other internet
browsers such as IE, Firefox etc Opera also stores the
username/passwords for websites visited by user in the password file
(wand.dat) in an encrypted format. OperaPasswordDecryptor can
recover all these stored encrypted passwords instantly and present
it in a user readable clear text format. |
|
|
|
OperaPasswordDecryptor works on wide
range of platforms starting from Windows 2000 to latest operating
system Windows 7. It is standalone portable tool which does not
require any installation and can be run directly on any system. |
|
|
|
|
|
|
|
|
|
|