<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>What's My Pass? &#187; encryption</title>
	<atom:link href="http://www.whatsmypass.com/tag/encryption/feed" rel="self" type="application/rss+xml" />
	<link>http://www.whatsmypass.com</link>
	<description>Password Recovery R Us</description>
	<lastBuildDate>Wed, 28 Jul 2010 14:16:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>10 ways of resetting a lost linux root password</title>
		<link>http://www.whatsmypass.com/10-ways-of-resetting-a-lost-linux-root-password</link>
		<comments>http://www.whatsmypass.com/10-ways-of-resetting-a-lost-linux-root-password#comments</comments>
		<pubDate>Wed, 22 Apr 2009 15:34:26 +0000</pubDate>
		<dc:creator>Dev Team</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Privilege Escalation]]></category>
		<category><![CDATA[boot manager]]></category>
		<category><![CDATA[boot server]]></category>
		<category><![CDATA[cd/dvd player]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Id]]></category>
		<category><![CDATA[Lilo]]></category>
		<category><![CDATA[Linux system]]></category>
		<category><![CDATA[Most linux installation]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[startup manager]]></category>
		<category><![CDATA[system administrator]]></category>
		<category><![CDATA[Toshiba HD-A1 Player HD-DVD Player]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=602</guid>
		<description><![CDATA[via: handlewithlinux.com
A good password has the problem of being difficult to remember. And sometimes you might need to get in to a system where the root password is long forgotten (or left with the system administrator before you).
Luckily there are ways of getting access to systems without having the password. This is of course in [...]]]></description>
			<content:encoded><![CDATA[<p>via: <a href="http://www.handlewithlinux.com/10-ways-of-resetting-a-lost-linux-root-password">handlewithlinux.com</a></p>
<p>A good password has the problem of being difficult to remember. And sometimes you might need to get in to a system where the root password is long forgotten (or left with the system administrator before you).<br />
Luckily there are ways of getting access to systems without having the password. This is of course in a sense also a security risk. That&#8217;s why you should always be aware that having unattended physical access to a computer system means the same as having root access to the operating system. Unless the information on a system is encrypted, it&#8217;s only as save as the room it&#8217;s in.</p>
<p>The method to use to reset the password if you lost the root (or only) password depends on the configuration of your system. But it mostly comes down to two separate tasks:</p>
<p>- get write access to the root partition</p>
<p>- change the password/circumvent control</p>
<p>Here are some things you can try from easy to more complicated.<span id="more-602"></span></p>
<h2>1.booting into single user mode from the start menu</h2>
<p>Some systems are configured to drop you into root shell without a password if you reboot them in single user mode. If your system has an option called single or recovery mode changes are it will drop you directly to the root prompt or as I know ubuntu does it serves up a menu with &#8216;drop to root shell prompt&#8217; as an option. Sometimes you have to hit escape at startup to enter the boot menu.<br />
Once in the root shell it&#8217;s as easy as typing passwd followed by your username and the passwd program will ask you for the new password. passwd without a name will change the root password.<br />
If you don&#8217;t know the username anymore you can do</p>
<p>#cat /etc/ passwd this prints the password text file where every entry before the : is a valid username</p>
<p>or</p>
<p>#ls /home  which will give you the username of the users on the system with a home directory (if the default home path is used)</p>
<p>If you have a system which has this boot option and you think this is just a to obvious security risk (don&#8217;t want your little sister to change your root password) you can easily remove this option by editing the file /boot/grub/menu.lst (if you use the grub boot loader) or /etc/lilo.conf (if you use lilo)<br />
If you use Ubuntu you can set passwords for the menu options in the startup-manager from the administration menu security tab or remove the option in the advanced tab.<br />
Grub and Lilo both have password options<br />
to password protect grub create a md5 hash of your password ( #/sbin/grub-md5-crypt ) and edit the file /boot/grub/grub.conf add below the line timeout the following line:</p>
<p>password &#8211;md5 password-hash-here</p>
<p>grub configuration should be user root group root and 600 permissions.</p>
<p>to password protect boot menu entries just enter lock below the title line in the /boot/grub/menu.lst file</p>
<p>for protecting lilo edit the /etc/lilo.conf file before the first image stanza place the option</p>
<p>password=clear-text-password</p>
<h2>2. booting into single user mode when there&#8217;s no menu entry at startup</h2>
<p>If there&#8217;s no single or recovery option in the boot menu you can still boot into single mode by editing the startup entry. To do this in grub, while in the menu press &#8216;e&#8217; this will let you edit the menu entries. Just append single to the line starting with kernel. press &#8216;b&#8217; and the system will boot into single mode.<br />
If your boot manager is Lilo you can pass Linux 1 or Linux emergency as boot parameters.<br />
This approach won&#8217;t help you on all systems because many systems will ask you for the root password when booting into single user mode.(Debian does)</p>
<h2>3. boot to root shell by using shell as init</h2>
<p>If the single user mode has been disabled or is password protected just press &#8216;e&#8217; in the grub boot menu and add init=/bin/bash (or any other shell executable) to the kernel line. Press &#8216;b&#8217; to boot and you&#8217;ll get a root shell because the init process is replaced with bash while booting. This gives you a rather limited shell but it&#8217;s good enough, depending on your system configuration you might have to mount the root partition read/write before you can change the password. Do this by entering</p>
<p>#mount -no remount,rw /</p>
<p>After that you can use passwd again as in previous examples.</p>
<p>If your startup manager is Lilo you can give the boot parameters Linux init=/bin/bash</p>
<h2>4. boot from alternative file system</h2>
<p>This method is much less likely to be available as it requires some kind of &#8220;alternative file system&#8221; to be available. If you have non-root access and there is a writable partition (/tmp for instance) and you can place a linux file system relative to that partition for instance by downloading a minimal linux distro and unpacking it you can then give the root= option to grub and set the partition where you placed your own file system as root file system.<br />
Executing the mount command will show the available partitions and how they are mounted. This will only work in very specific circumstances though.</p>
<h2>5. boot from a bootable usb stick</h2>
<p>If you have no way to access single user mode from the boot menu, or if your single user mode is password protected, you can still use an alternative boot medium. Many systems these days provide a boot option for booting from a usb stick. This is actually a very easy method. The access of boot sequence menu differs by system, most systems display a text like press esc to enter boot menu or something like that. Sometimes the system is already configured to try booting from removable medium first. Many systems also allow changing the boot sequence from the bios. Just change the boot sequence of the system to boot from usb or choose that option from the boot menu. This does require you to have a boot-able usb stick of course. There are many ways to make a usb stick boot-able one of them is described in my article about backtrack, which makes a great distro to use for this purpose by the way. Just boot from the usb device, and open a root shell. The next thing you have to do is find out which is the root partition. Use fdisk to list the available partitions:</p>
<p>#fdisk -l</p>
<p>This will show the disks available.<br />
You can mount them with the mount command. First create a directory mkdir /newdir or mount the partition on an existing directory. Then mount the partition you think is the root.</p>
<p>#mount -o,rw /dev/hda1 /newdir</p>
<p>if mount complaints you have to specify partition type, you find the type as a letter/number combination where it says Id. To show a list of partition type name/Id combinations use /sbin/sfdisk -T</p>
<p>in this case use mount with -t option:</p>
<p>#mount -o,rw -t ext3 /dev/hda1 /newdir</p>
<p>check if it&#8217;s the right one with ls:</p>
<p>#ls /newdir  (should list a root filesytem)</p>
<p>if it is the wrong partition, just do umount /newdir to unmount it and redo the previous steps with another partition from the list.</p>
<p>If it is the right partition use chroot:</p>
<p>#chroot /newdir</p>
<p>this will make the newdir your root dir</p>
<p>and then enter passwd to change the root password and reboot your system.</p>
<h2>6. boot from CD</h2>
<p>This is basically the same as option 5 but requires you to have a Linux live-cd or rescue-cd. Most linux installation cd&#8217;s double as recovery cd&#8217;s by giving you a rescue option at boot or some drop to root shell menu option anywhere in the process. You do need to have a cd/dvd player installed to use this option. The method is exactly the same as in option 5. There are a lot more systems that allow booting from cd/dvd (most older pc&#8217;s do) than from usb this makes it a more viable approach.</p>
<h2>7. boot from network</h2>
<p>Difficult to do in many cases, but if you have access to the bios or the system is already configured to try booting from the network, and you have a system which you can configure as a boot server, it&#8217;s more or less the same story as 5 and 6. Boot the system into a OS where you have root access and mount the disk, chroot and you are in.</p>
<p>If you can&#8217;t access the BIOS to change the boot sequence because it&#8217;s password protected, try searching Google for the master password for your BIOS. Or you can try removing the BIOS battery the BIOS battery is located on the motherboard and is there to keep the BIOS memory as the power is taken of the system. Unplug the system, remove the battery and wait for about 120 seconds. Be warned this will flush all BIOS information (configuration) most systems will boot fine when you reload default BIOS settings (not all). Some motherboards have jumpers for resetting BIOS, if you have the motherboard manual you can look it up. Laptops are sometimes equipped with security features which make flushing BIOS impossible or even render the system completely useless when trying to reset BIOS.</p>
<h2>8. place an extra disk in the machine</h2>
<p>In most cases the BIOS will auto-detect a new disk, so if you place a new disk containing a boot-able OS and make it the master and the old disk slave, you can make the system boot from the new disk.</p>
<h2>9. remove the disk and place it in another machine</h2>
<p>If you can&#8217;t do any of the above you can always take out the disk and place it in another Linux system. Than you can mount it, chroot to the disk and again use passwd to change the root password. Place back the disk and start the machine.</p>
<h2>10. Try to gain root trough known vulnerabilities</h2>
<p>If the system has been running for a long time (or not running) without anyone maintaining it, there&#8217;s a change it&#8217;s running a vulnerable service. This would probably take a lot of time to do. Try fingerprinting the system for running network services that have not been security patched. If there is a easy root exploit to run against the machine it might be possible to get in this way.</p>
<h2>Securing your system</h2>
<p>Securing yourself against all these options is very difficult. You can remove all removable medium drives, CD/DVD, diskette, fill your usb ports with glue, passwords on everything. The only real protection is encrypted disks on every device you can&#8217;t keep in a secure environment. If someone gains unattended physical access to your systems they have access to your data.</p>
<p>What you can do is make it very difficult, secure access to your computers as much as you think is appropriate considering the sensitivity of your data. When it comes to mobile devices, laptops netbooks and the like you should carefully consider what would happen if it gets lost or stolen and someone has access to all your data. Very good Encryption programs are freely available for Linux and you can even choose to encrypt your whole system, in some distributions this is an install option.</p>
<p>Think there is more to try? Easier ways? Think there are better ways to protect against it? Mistakes? Leave a comment. It can take a while before comments are published(different time zone)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/10-ways-of-resetting-a-lost-linux-root-password/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saved Password Locations</title>
		<link>http://www.whatsmypass.com/saved-password-locations</link>
		<comments>http://www.whatsmypass.com/saved-password-locations#comments</comments>
		<pubDate>Tue, 25 Nov 2008 21:12:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Password Info]]></category>
		<category><![CDATA[Trillian]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[America Online]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Internet Explorer stores]]></category>
		<category><![CDATA[Internet ExplorerIntelliFormsStorage2;]]></category>
		<category><![CDATA[LAN]]></category>
		<category><![CDATA[Messenger]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[Passport.Net]]></category>
		<category><![CDATA[Registry Editor]]></category>
		<category><![CDATA[Web browser]]></category>
		<category><![CDATA[Web Data;]]></category>
		<category><![CDATA[Windows NT]]></category>
		<category><![CDATA[XML;]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=405</guid>
		<description><![CDATA[Many people ask about the location in the Registry or file system that applications store the passwords. Here is a list of password storage locations for popular applications compiled by Nir Sofer.
Be aware that even if you know the location of the saved password, it doesn&#8217;t mean that you can move it from one computer [...]]]></description>
			<content:encoded><![CDATA[<p>Many people ask about the location in the Registry or file system that applications store the passwords. Here is a list of password storage locations for popular applications compiled by Nir Sofer.<br />
Be aware that even if you know the location of the saved password, it doesn&#8217;t mean that you can move it from one computer to another. many applications store the passwords in a way that prevent you from moving them to another computer or user profile.<span id="more-405"></span></p>
<ul>
<li><span style="color: #3333ff;">Internet Explorer 4.00 &#8211; 6.00:</span> The passwords are stored in a secret location in the Registry known as the &#8220;Protected Storage&#8221;.<br />
The base key of the Protected Storage is located under the following key:<br />
&#8220;HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider&#8221;.<br />
You can browse the above key in the Registry Editor (RegEdit), but you won&#8217;t be able to watch the passwords, because they are encrypted.<br />
Also, this key cannot easily moved from one computer to another, like you do with regular Registry keys.</p>
</li>
<li><span style="color: #3333ff;">Internet Explorer 7.00 &#8211; 8.00:</span> The new versions of Internet Explorer stores the passwords in 2 different locations.<br />
AutoComplete passwords are stored in the Registry under HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2.<br />
HTTP Authentication passwords are stored in the Credentials file under Documents and Settings\Application Data\Microsoft\Credentials , together with login passwords of LAN computers and other passwords.</p>
<p><a href="http://www.nirsoft.net/utils/internet_explorer_password.html">IE PassView</a> can be used to recover these passwords.</li>
<li><span style="color: #3333ff;">Firefox:</span> The passwords are stored in one of the following filenames: signons.txt, signons2.txt, and signons3.txt (depends on Firefox version)<br />
These password files are located inside the profile folder of Firefox, in [Windows Profile]\Application Data\Mozilla\Firefox\Profiles\[Profile Name]<br />
Also, key3.db, located in the same folder, is used for encryption/decription of the passwords.</li>
<li><span style="color: #3333ff;">Google Chrome Web browser:</span> The passwords are stored in [Windows Profile]\Local Settings\Application Data\Google\Chrome\User Data\Default\Web Data<br />
(This filename is SQLite database which contains encrypted passwords and other stuff)</li>
<li><span style="color: #3333ff;">Opera:</span> The passwords are stored in wand.dat filename, located under [Windows Profile]\Application Data\Opera\Opera\profile</li>
<li><span style="color: #3333ff;">Outlook Express (All Versions):</span> The POP3/SMTP/IMAP passwords Outlook Express are also stored in the Protected Storage, like the passwords of old versions of Internet Explorer.
</li>
<li><span style="color: #3333ff;">Outlook 98/2000:</span> Old versions of Outlook stored the POP3/SMTP/IMAP passwords in the Protected Storage, like the passwords of old versions of Internet Explorer.
<p>Both <a href="http://www.nirsoft.net/utils/mailpv.html">Mail PassView</a> and <a href="http://www.nirsoft.net/utils/pspv.html">Protected Storage PassView</a> utilities can recover these passwords.</li>
<li><span style="color: #3333ff;">Outlook 2002-2008:</span> All new versions of Outlook store the passwords in the same Registry key of the account settings.<br />
The accounts are stored in the Registry under HKEY_CURRENT_USER\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\[Profile Name]\9375CFF0413111d3B88A00104B2A6676\[Account Index]<br />
If you use Outlook to connect an account on Exchange server, the password is stored in the Credentials file, together with login passwords of LAN computers.</p>
</li>
<li><span style="color: #3333ff;">Windows Live Mail:</span> All account settings, including the encrypted passwords, are stored in [Windows Profile]\Local Settings\Application Data\Microsoft\Windows Live Mail\[Account Name]<br />
The account filename is an xml file with .oeaccount extension.
</li>
<li><span style="color: #3333ff;">ThunderBird:</span> The password file is located under [Windows Profile]\Application Data\Thunderbird\Profiles\[Profile Name]<br />
You should search a filename with .s extension.</li>
<li><span style="color: #3333ff;">Google Talk:</span> All account settings, including the encrypted passwords, are stored in the Registry under HKEY_CURRENT_USER\Software\Google\Google Talk\Accounts\[Account Name]</li>
<li><span style="color: #3333ff;">Google Desktop:</span> Email passwords are stored in the Registry under HKEY_CURRENT_USER\Software\Google\Google Desktop\Mailboxes\[Account Name]</li>
<li><span style="color: #3333ff;">MSN/Windows Messenger version 6.x and below:</span> The passwords are stored in one of the following locations:
<ol>
<li>Registry Key: HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger</li>
<li>Registry Key: HKEY_CURRENT_USER\Software\Microsoft\MessengerService</li>
<li>In the Credentials file, with entry named as &#8220;Passport.Net\\*&#8221;. (Only when the OS is XP or more)</li>
</ol>
</li>
<li><span style="color: #3333ff;">MSN Messenger version 7.x:</span> The passwords are stored under HKEY_CURRENT_USER\Software\Microsoft\IdentityCRL\Creds\[Account Name]</li>
<li><span style="color: #3333ff;">Windows Live Messenger version 8.x/9.x:</span> The passwords are stored in the Credentials file, with entry name begins with &#8220;WindowsLive:name=&#8221;.
</li>
<li><span style="color: #3333ff;">Yahoo Messenger 6.x:</span> The password is stored in the Registry, under HKEY_CURRENT_USER\Software\Yahoo\Pager<br />
(&#8221;EOptions string&#8221; value)</li>
<li><span style="color: #3333ff;">Yahoo Messenger 7.5 or later:</span> The password is stored in the Registry, under HKEY_CURRENT_USER\Software\Yahoo\Pager &#8211; &#8220;ETS&#8221; value.<br />
The value stored in &#8220;ETS&#8221; value cannot be recovered back to the original password.</li>
<li><span style="color: #3333ff;">AIM Pro:</span> The passwords are stored in the Registry, under HKEY_CURRENT_USER\Software\AIM\AIMPRO\[Account Name]</li>
<li><span style="color: #3333ff;">AIM 6.x:</span> The passwords are stored in the Registry, under HKEY_CURRENT_USER\Software\America Online\AIM6\Passwords</li>
<li><span style="color: #3333ff;">ICQ Lite 4.x/5.x/2003:</span> The passwords are stored in the Registry, under HKEY_CURRENT_USER\Software\Mirabilis\ICQ\NewOwners\[ICQ Number]<br />
(MainLocation value)</li>
<li><span style="color: #3333ff;">ICQ 6.x:</span> The password hash is stored in [Windows Profile]\Application Data\ICQ\[User Name]\Owner.mdb (Access Database)<br />
(The password hash cannot be recovered back to the original password)</li>
<li><span style="color: #3333ff;">Digsby:</span> The main password of Digsby is stored in [Windows Profile]\Application Data\Digsby\digsby.dat<br />
All other passwords are stored in Digsby servers.</li>
<li><span style="color: #3333ff;">PaltalkScene:</span> The passwords are stored in the Registry, under HKEY_CURRENT_USER\Software\Paltalk\[Account Name].</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/saved-password-locations/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WPA Wi-Fi encryption is cracked</title>
		<link>http://www.whatsmypass.com/wpa-wi-fi-encryption-is-cracked</link>
		<comments>http://www.whatsmypass.com/wpa-wi-fi-encryption-is-cracked#comments</comments>
		<pubDate>Thu, 06 Nov 2008 17:51:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[Aircrack-ng
 Wi-Fi encryption;]]></category>
		<category><![CDATA[AirTight Networks;]]></category>
		<category><![CDATA[attacker]]></category>
		<category><![CDATA[co-researcher]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[encryption hacking tool;]]></category>
		<category><![CDATA[Erik Tews;]]></category>
		<category><![CDATA[laptop computer;]]></category>
		<category><![CDATA[Martin Beck;]]></category>
		<category><![CDATA[private network software]]></category>
		<category><![CDATA[product management]]></category>
		<category><![CDATA[researcher]]></category>
		<category><![CDATA[Sri Sundaralingam;]]></category>
		<category><![CDATA[Store chain;]]></category>
		<category><![CDATA[T.J. Maxx]]></category>
		<category><![CDATA[Tokyo;]]></category>
		<category><![CDATA[United States]]></category>
		<category><![CDATA[vice president of product management]]></category>
		<category><![CDATA[virtual private network software;]]></category>
		<category><![CDATA[VPN;]]></category>
		<category><![CDATA[WEP]]></category>
		<category><![CDATA[Wi-Fi]]></category>
		<category><![CDATA[Wi-Fi technology;]]></category>
		<category><![CDATA[wireless data;]]></category>
		<category><![CDATA[wireless network security;]]></category>
		<category><![CDATA[wireless networks]]></category>
		<category><![CDATA[wireless standard;]]></category>
		<category><![CDATA[WPA encryption;]]></category>
		<category><![CDATA[WPA router;]]></category>
		<category><![CDATA[WPA Wi-Fi encryption;]]></category>
		<category><![CDATA[WPA2 routers;]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=387</guid>
		<description><![CDATA[Security researchers say they&#8217;ve developed a way to partially crack the Wi-Fi Protected Access (WPA) encryption standard used to protect data on many wireless networks.
The attack, described as the first practical attack on WPA, will be discussed at the PacSec conference in Tokyo next week. There, researcher Erik Tews will show how he was able [...]]]></description>
			<content:encoded><![CDATA[<p>Security researchers say they&#8217;ve developed a way to partially crack the Wi-Fi Protected Access (WPA) encryption standard used to protect data on many wireless networks.</p>
<p>The attack, described as the first practical attack on WPA, will be discussed at the <a href="http://pacsec.jp/">PacSec conference</a> in Tokyo next week. There, researcher Erik Tews will show how he was able to crack WPA encryption, in order to read data being sent from a router to a laptop computer. The attack could also be used to send bogus information to a client connected to the router.<br />
<span id="more-387"></span></p>
<p>To do this, Tews and his co-researcher Martin Beck found a way to break the Temporal Key Integrity Protocol (TKIP) key, used by WPA, in a relatively short amount of time: 12 to 15 minutes, according to Dragos Ruiu, the PacSec conference&#8217;s organizer.</p>
<p>They have not, however, managed to crack the encryption keys used to secure data that goes from the PC to the router in this particular attack</p>
<p>Security experts had known that TKIP could be cracked using what&#8217;s known as a dictionary attack. Using massive computational resources, the attacker essentially cracks the encryption by making an extremely large number of educated guesses as to what key is being used to secure the wireless data.</p>
<p>The work of Tews and Beck does not involve a dictionary attack, however.</p>
<p>To pull off their trick, the researchers first discovered a way to trick a WPA router into sending them large amounts of data. This makes cracking the key easier, but this technique is also combined with a &#8220;mathematical breakthrough,&#8221; that lets them crack WPA much more quickly than any previous attempt, Ruiu said.</p>
<p>Tews is planning to publish the cryptographic work in an academic journal in the coming months, Ruiu said. Some of the code used in the attack was quietly added to Beck&#8217;s <a href="http://www.aircrack-ng.org/doku.php">Aircrack-ng</a> Wi-Fi encryption hacking tool two weeks ago, he added.</p>
<p>WPA is widely used on today&#8217;s Wi-Fi networks and is considered a better alternative to the original WEP (Wired Equivalent Privacy) standard, which was developed in the late 1990s. Soon after the development of WEP, however, hackers found a way to break its encryption and it is now considered insecure by most security professionals. Store chain T.J. Maxx was in the process of upgrading from WEP to WPA encryption when it experienced one of the most widely publicized data breaches in U.S. history, in which hundreds of millions of credit card numbers were stolen over a two-year period.</p>
<p>A new wireless standard known as WPA2 is considered safe from the attack developed by Tews and Beck, but many WPA2 routers also support WPA.</p>
<p>&#8220;Everybody has been saying, &#8216;Go to WPA because WEP is broken,&#8217;&#8221; Ruiu said. &#8220;This is a break in WPA.&#8221;</p>
<p>If WPA is significantly compromised, it would be a big blow for enterprise customers who have been increasingly adopting it, said Sri Sundaralingam, vice president of product management with wireless network security vendor AirTight Networks. Although customers can adopt Wi-Fi technology such as WPA2 or virtual private network software that will protect them from this attack, there are still may devices that connect to the network using WPA, or even the thoroughly cracked WEP standard, he said.</p>
<p>Ruiu expects a lot more WPA research to follow this work. &#8220;Its just the starting point,&#8221; he said. &#8220;Erik and Martin have just opened the box on a whole new hacker playground.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/wpa-wi-fi-encryption-is-cracked/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WIFI Cracking Using GPUs</title>
		<link>http://www.whatsmypass.com/wifi-cracking-using-gpus</link>
		<comments>http://www.whatsmypass.com/wifi-cracking-using-gpus#comments</comments>
		<pubDate>Sat, 11 Oct 2008 01:23:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Password Info]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[ElcomSoft Co. Ltd.]]></category>
		<category><![CDATA[Elcomsoft Distributed Password Recovery]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[GPU-accelerated algorithms]]></category>
		<category><![CDATA[Minox GT-X 35mm Film Camera]]></category>
		<category><![CDATA[nVidia]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[password recovery tool]]></category>
		<category><![CDATA[security audit]]></category>
		<category><![CDATA[super-scalar processors]]></category>
		<category><![CDATA[USD]]></category>
		<category><![CDATA[WEP]]></category>
		<category><![CDATA[Wi-Fi]]></category>
		<category><![CDATA[WLAN]]></category>
		<category><![CDATA[WPA/WPA2 encryption]]></category>
		<category><![CDATA[WPA2 encryption]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=296</guid>
		<description><![CDATA[We all know cracking techniques through graphics cards speciifically CUDA based NVidia is on the rise. Now the programmers have set their sights on WIFI cracking. One group reportedly bored through WPA and WPA2 encryptions using a brute-force technique juiced with one of Nvidia&#8217;s latest graphics cards . The card supposedly made the &#8220;password recovery&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>We all know cracking techniques through graphics cards speciifically CUDA based NVidia is on the rise. Now the programmers have set their sights on WIFI cracking. One group reportedly bored through WPA and WPA2 encryptions using a brute-force technique juiced with one of Nvidia&#8217;s latest graphics cards . The card supposedly made the &#8220;password recovery&#8221; process up to 10,000 percent faster than CPU-based cracking. <span id="more-296"></span><br />
Elcomsoft Distributed Password Recovery (http://wpa.elcomsoft.com) supports both WPA and the newer WPA2 encryption used in the majority of Wi-Fi networks, allowing breaking Wi-Fi protection quickly and efficiently with most laptop and desktop computers. The support of NVIDIA graphic accelerators increases the recovery speed by an average of 10 to 15 times when Elcomsoft Distributed Password Recovery is used on a moderate laptop with NVIDIA GeForce 8800M or 9800M series GPU, or up to 100 times when running on a desktop with two or more NVIDIA GTX 280 boards installed. Governments, forensic and corporate users will benefit from vastly increased speed of breaking Wi-Fi protection provided by Elcomsoft Distributed Password Recovery.</p>
<p>Breaking Wi-Fi Protection with Elcomsoft Distributed Password Recovery</p>
<p>With growing numbers of Wi-Fi networks used by businesses and individuals all over the world, security becomes utterly important. There are currently two methods of protecting Wi-Fi networks, WEP and WPA/WPA2. Unlike enterprise, RADIUS protected networks, consumer-grade WPA and WPA2 protection methods rely on passwords and encryption to protect traffic transferred between users and network access points. However, WEP, the older protection method, is no longer considered secure even for home users, as sometimes it can be broken in less than two minutes due to security flaws discovered in the algorithm.</p>
<p>The newer WPA/WPA2 encryption is inherently more secure than WEP. The only way to break WPA and WPA2 encryption is to use a brute force attack, which involves trying all possible passwords in the hope to discover the only correct one. With billions of possible combinations, it can take years to break into a WPA/WPA2 protected network. However, WPA/WPA2 protected networks are not immune against distributed attacks performed with GPU-accelerated algorithms.</p>
<p>With the latest version of Elcomsoft Distributed Password Recovery, it is now possible to crack WPA and WPA2 protection on Wi-Fi networks up to 100 times quicker with the use of massively parallel computational power of the newest NVIDIA chips. Elcomsoft Distributed Password Recovery only needs a few packets intercepted in order to perform the attack. The new product of ElcomSoft Co. Ltd. makes it possible to quickly perform security audit of corporate Wi-Fi networks, allowing to test network security against threats such as inappropriate WLAN security policy.</p>
<p>Using NVIDIA Cards to Break Wi-Fi Protection Faster</p>
<p>Today&#8217;s video cards such as NVIDIA GeForce GTX280 can process hundreds of billions fixed-point calculations per second. Add as much as 1 GB of onboard video memory and up to 240 processing units, multiply it by two by using a couple of NVIDIA cards, and enter the whole new world of super-parallel computational power for just a few hundred dollars.</p>
<p>Until recently, all the power of highly parallel, super-scalar processors in 3D graphic accelerators could only be used for gaming. ElcomSoft Co. Ltd. has invented a way to utilize the massively parallel computational power of NVIDIA gaming cards for increasing the speed of password recovery . Elcomsoft Distributed Password Recovery, its flagship password recovery tool, is able to fully utilize recent NVIDIA chips used in laptop, desktop and server computers, increasing the speed of Wi-Fi password recovery up to 100 times compared to conventional CPUs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/wifi-cracking-using-gpus/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>McAfee SafeBoot Device Encryption Plain Text Password Disclosure</title>
		<link>http://www.whatsmypass.com/mcafee-safeboot-device-encryption-plain-text-password-disclosure</link>
		<comments>http://www.whatsmypass.com/mcafee-safeboot-device-encryption-plain-text-password-disclosure#comments</comments>
		<pubDate>Thu, 25 Sep 2008 16:01:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Password Info]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[attacker]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[RAM]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=203</guid>
		<description><![CDATA[The password checking routine of SafeBoot Device Encryption fails to sanitize the BIOS keyboard buffer after reading passwords, resulting in plain text password leakage to unprivileged local users.

Vulnerable Systems:
* SafeBoot Device Encryption version 4 Build 4750 and below
Immune Systems:
* SafeBoot Device Encryption version 4 Build 4760 and above
* SafeBoot Device Encryption version 5.x
SafeBoot&#8217;s pre-boot authentication [...]]]></description>
			<content:encoded><![CDATA[<p>The password checking routine of SafeBoot Device Encryption fails to sanitize the BIOS keyboard buffer after reading passwords, resulting in plain text password leakage to unprivileged local users.<br />
<span id="more-203"></span><br />
<strong>Vulnerable Systems:</strong><br />
* SafeBoot Device Encryption version 4 Build 4750 and below</p>
<p><strong>Immune Systems:</strong><br />
* SafeBoot Device Encryption version 4 Build 4760 and above<br />
* SafeBoot Device Encryption version 5.x</p>
<p>SafeBoot&#8217;s pre-boot authentication routines use the BIOS API to read user input via the keyboard. The BIOS internally copies the keystrokes in a RAM structure called the BIOS Keyboard buffer inside the BIOS Data Area. This buffer is not flushed after use, resulting in potential plain text password leakage once the OS is fully booted, assuming the attacker can read the password at physical memory location 0&#215;40:0&#215;1e.<br />
<a href="http://www.ivizsecurity.com/security-advisory-iviz-sr-08010.html">http://www.ivizsecurity.com/security-advisory-iviz-sr-08010.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/mcafee-safeboot-device-encryption-plain-text-password-disclosure/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Google Chrome Stores Passwords</title>
		<link>http://www.whatsmypass.com/how-google-chrome-stores-passwords</link>
		<comments>http://www.whatsmypass.com/how-google-chrome-stores-passwords#comments</comments>
		<pubDate>Mon, 15 Sep 2008 08:42:56 +0000</pubDate>
		<dc:creator>Dev Team</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[form_manager]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[pretty straight forward]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[web_data_service]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=151</guid>
		<description><![CDATA[Every browser released in the last decade has some sort of password management system, and Google Chrome is no different. Sift through the Chrome source code, released under the open source project Chromium, and you&#8217;ll found out how they do it.
Let&#8217;s start at the top and work our way down.  Any time a password [...]]]></description>
			<content:encoded><![CDATA[<p>Every browser released in the last decade has some sort of password management system, and Google Chrome is no different. Sift through the Chrome source code, released under the open source project <a href="http://code.google.com/chromium/">Chromium</a>, and you&#8217;ll found out how they do it.</p>
<p>Let&#8217;s start at the top and work our way down.  Any time a password is saved, you&#8217;re first prompted with the save password bar.<br />
<span id="more-151"></span></p>
<p><img style="border: 1px solid #000000;" src="http://blog.paranoidferret.com/files/Tutorials/Chrome/Passwords/save_password.jpg" alt="Google Chrome save password prompt" /></p>
<p>In Chrome, this object is called <code>PasswordManager</code>.  This object is responsible for a lot of stuff, but what we really care about is what happens when you click &#8220;Save Password&#8221;.</p>
<p><img style="border: 1px solid #000000;" src="http://blog.paranoidferret.com/files/Tutorials/Chrome/Passwords/save_password_buttons.jpg" alt="Google Chrome save password buttons" /></p>
<p>When you click the save button, it calls the following function:</p>
<div class="syntax_hilite">
<div id="csharp-1">
<div class="csharp"><span style="color: #0000ff;">void</span> PasswordManager::<span style="color: #2b91af;">SavePasswordBar</span>::<span style="color: #2b91af;">OKButtonPressed</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
form_manager_-&gt;Save<span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
BeginClose<span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
<span style="color: #000000;">}</span></div>
<div class="csharp"></div>
</div>
</div>
<table border="0">
<tbody>
<tr>
<td style="padding-left: 10px;" valign="top"><code>form_manager</code> is another object, PasswordFormManager, that sits between the user interface and the database. All this function does is call that object&#8217;s <code>Save</code> method.  It then instructs the save password prompt to close.  Here&#8217;s what the <code>Save</code> function looks like.</td>
</tr>
</tbody>
</table>
<div class="syntax_hilite">
<div id="csharp-2">
<div class="csharp"></div>
<div class="csharp"><span style="color: #0000ff;">void</span> PasswordFormManager::<span style="color: #2b91af;">Save</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
DCHECK_EQ<span style="color: #000000;">(</span>state_, POST_MATCHING_PHASE<span style="color: #000000;">)</span>;<br />
DCHECK<span style="color: #000000;">(</span>!profile_-&gt;IsOffTheRecord<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;</div>
<div class="csharp">
<p><span style="color: #0000ff;">if</span> <span style="color: #000000;">(</span>IsNewLogin<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><br />
SaveAsNewLogin<span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
<span style="color: #0000ff;">else</span><br />
UpdateLogin<span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
<span style="color: #000000;">}</span></div>
</div>
</div>
<p>Again, pretty straight forward. The first two items will log information for debugging purposes and aren&#8217;t compiled in release mode. It then checks if it is adding a new password or updating an existing one. For the purposes of this tutorial, let&#8217;s look at adding a new password.</p>
<div class="syntax_hilite">
<div id="csharp-3">
<div class="csharp"></div>
<div class="csharp"><span style="color: #0000ff;">void</span> PasswordFormManager::<span style="color: #2b91af;">SaveAsNewLogin</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
DCHECK_EQ<span style="color: #000000;">(</span>state_, POST_MATCHING_PHASE<span style="color: #000000;">)</span>;<br />
DCHECK<span style="color: #000000;">(</span>IsNewLogin<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;<br />
<span style="font-style: italic; color: #007f00;">// The new_form is being used to sign in, so it is preferred.</span><br />
DCHECK<span style="color: #000000;">(</span>pending_credentials_.<span style="color: #2b91af;">preferred</span><span style="color: #000000;">)</span>;<br />
<span style="font-style: italic; color: #007f00;">// new_form contains the same basic data as observed_form_ (because its the</span><br />
<span style="font-style: italic; color: #007f00;">// same form), but with the newly added credentials.</span></div>
<div class="csharp">
<p>DCHECK<span style="color: #000000;">(</span>!profile_-&gt;IsOffTheRecord<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;</p>
<p>WebDataService* web_data_service =<br />
profile_-&gt;GetWebDataService<span style="color: #000000;">(</span>Profile::<span style="color: #2b91af;">IMPLICIT_ACCESS</span><span style="color: #000000;">)</span>;<br />
<span style="color: #0000ff;">if</span> <span style="color: #000000;">(</span>!web_data_service<span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
NOTREACHED<span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
<span style="color: #0000ff;">return</span>;<br />
<span style="color: #000000;">}</span><br />
pending_credentials_.<span style="color: #2b91af;">date_created</span> = Time::<span style="color: #2b91af;">Now</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
web_data_service-&gt;AddLogin<span style="color: #000000;">(</span>pending_credentials_<span style="color: #000000;">)</span>;<br />
<span style="color: #000000;">}</span></div>
</div>
</div>
<p>Most of this function is debug code.  What we care about is the call to <code>AddLogin</code>.  The <code>WebDataService</code> object is responsible for meta data associated with a web page.</p>
<div class="syntax_hilite">
<div id="csharp-4">
<div class="csharp"></div>
<div class="csharp"><span style="color: #0000ff;">void</span> WebDataService::<span style="color: #2b91af;">AddLogin</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span> PasswordForm&amp; form<span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
GenericRequest&lt;PasswordForm&gt;* request =<br />
<span style="color: #0000ff;">new</span> GenericRequest&lt;PasswordForm&gt;<br />
<span style="color: #000000;">(</span><span style="color: #0000ff;">this</span>, GetNextRequestHandle<span style="color: #000000;">(</span><span style="color: #000000;">)</span>, <span style="color: #0000ff;">NULL</span>, form<span style="color: #000000;">)</span>;<br />
RegisterRequest<span style="color: #000000;">(</span>request<span style="color: #000000;">)</span>;<br />
ScheduleTask<span style="color: #000000;">(</span>NewRunnableMethod<br />
<span style="color: #000000;">(</span><span style="color: #0000ff;">this</span>, &amp;WebDataService::<span style="color: #2b91af;">AddLoginImpl</span>, request<span style="color: #000000;">)</span><span style="color: #000000;">)</span>;<br />
<span style="color: #000000;">}</span></div>
</div>
</div>
<p>Now we&#8217;re getting a little more complicated. Adding a password is done asynchronously and this function handles scheduling that task. It seemed to be very important that nothing interrupt Chrome&#8217;s user interface &#8211; this keeps it feeling fast and responsive. Now let&#8217;s take a look at what happens when this task is run.</p>
<div class="syntax_hilite">
<div id="csharp-5">
<div class="csharp"></div>
<div class="csharp"><span style="color: #0000ff;">void</span> WebDataService::<span style="color: #2b91af;">AddLoginImpl</span><span style="color: #000000;">(</span><br />
GenericRequest&lt;PasswordForm&gt;* request<span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
<span style="color: #0000ff;">if</span> <span style="color: #000000;">(</span>db_ &amp;&amp; !request-&gt;IsCancelled<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
<span style="color: #0000ff;">if</span> <span style="color: #000000;">(</span>db_-&gt;AddLogin<span style="color: #000000;">(</span>request-&gt;GetArgument<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><br />
ScheduleCommit<span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
<span style="color: #000000;">}</span><br />
request-&gt;RequestComplete<span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
<span style="color: #000000;">}</span></div>
</div>
</div>
<p>We&#8217;re almost at the heart of it all.  The important call here is <code>AddLogin</code>, so let&#8217;s dive into that.</p>
<div class="syntax_hilite">
<div id="csharp-6">
<div class="csharp"></div>
<div class="csharp"><span style="color: #0000ff;">bool</span> WebDatabase::<span style="color: #2b91af;">AddLogin</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span> PasswordForm&amp; form<span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
SQLStatement s;<br />
std::<span style="color: #0000ff;">string</span> encrypted_password;<br />
<span style="color: #0000ff;">if</span> <span style="color: #000000;">(</span>s.<span style="color: #2b91af;">prepare</span><span style="color: #000000;">(</span>db_,<br />
<span style="color: #a31515;">&#8220;INSERT OR REPLACE INTO logins &#8220;</span><br />
<span style="color: #a31515;">&#8220;(origin_url, action_url, username_element, username_value, &#8220;</span><br />
<span style="color: #a31515;">&#8221; password_element, password_value, submit_element, &#8220;</span><br />
<span style="color: #a31515;">&#8221; signon_realm, ssl_valid, preferred, date_created, &#8220;</span><br />
<span style="color: #a31515;">&#8221; blacklisted_by_user, scheme) &#8220;</span><br />
<span style="color: #a31515;">&#8220;VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)&#8221;</span><span style="color: #000000;">)</span> != SQLITE_OK<span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
NOTREACHED<span style="color: #000000;">(</span><span style="color: #000000;">)</span> &lt;&lt;<span style="color: #a31515;">&#8220;Statement prepare failed&#8221;</span>;<br />
<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span>;<br />
<span style="color: #000000;">}</span></div>
<div class="csharp">
<p>s.<span style="color: #2b91af;">bind_string</span><span style="color: #000000;">(</span><span style="color: #ff0000;">0</span>, form.<span style="color: #2b91af;">origin</span>.<span style="color: #2b91af;">spec</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_string</span><span style="color: #000000;">(</span><span style="color: #ff0000;">1</span>, form.<span style="color: #2b91af;">action</span>.<span style="color: #2b91af;">spec</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_wstring</span><span style="color: #000000;">(</span><span style="color: #ff0000;">2</span>, form.<span style="color: #2b91af;">username_element</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_wstring</span><span style="color: #000000;">(</span><span style="color: #ff0000;">3</span>, form.<span style="color: #2b91af;">username_value</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_wstring</span><span style="color: #000000;">(</span><span style="color: #ff0000;">4</span>, form.<span style="color: #2b91af;">password_element</span><span style="color: #000000;">)</span>;<br />
Encryptor::<span style="color: #2b91af;">EncryptWideString</span><span style="color: #000000;">(</span>form.<span style="color: #2b91af;">password_value</span>, &amp;encrypted_password<span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_blob</span><span style="color: #000000;">(</span><span style="color: #ff0000;">5</span>, encrypted_password.<span style="color: #2b91af;">data</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span>,<br />
static_cast&lt;int&gt;<span style="color: #000000;">(</span>encrypted_password.<span style="color: #2b91af;">length</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_wstring</span><span style="color: #000000;">(</span><span style="color: #ff0000;">6</span>, form.<span style="color: #2b91af;">submit_element</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_string</span><span style="color: #000000;">(</span><span style="color: #ff0000;">7</span>, form.<span style="color: #2b91af;">signon_realm</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_int</span><span style="color: #000000;">(</span><span style="color: #ff0000;">8</span>, form.<span style="color: #2b91af;">ssl_valid</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_int</span><span style="color: #000000;">(</span><span style="color: #ff0000;">9</span>, form.<span style="color: #2b91af;">preferred</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_int64</span><span style="color: #000000;">(</span><span style="color: #ff0000;">10</span>, form.<span style="color: #2b91af;">date_created</span>.<span style="color: #2b91af;">ToTimeT</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_int</span><span style="color: #000000;">(</span><span style="color: #ff0000;">11</span>, form.<span style="color: #2b91af;">blacklisted_by_user</span><span style="color: #000000;">)</span>;<br />
s.<span style="color: #2b91af;">bind_int</span><span style="color: #000000;">(</span><span style="color: #ff0000;">12</span>, form.<span style="color: #2b91af;">scheme</span><span style="color: #000000;">)</span>;<br />
<span style="color: #0000ff;">if</span> <span style="color: #000000;">(</span>s.<span style="color: #2b91af;">step</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> != SQLITE_DONE<span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
NOTREACHED<span style="color: #000000;">(</span><span style="color: #000000;">)</span>;<br />
<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span>;<br />
<span style="color: #000000;">}</span><br />
<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span>;<br />
<span style="color: #000000;">}</span></div>
</div>
</div>
<p>We&#8217;ve finally reached the end of the line. This function actually builds the SQL statement for adding a new password to Chrome&#8217;s SQLite database. Of course, the password isn&#8217;t stored in plain text so Chrome has an <code>Encryptor</code> object responsible for encrypting the password first.  Let&#8217;s take a look at that.</p>
<div class="syntax_hilite">
<div id="csharp-7">
<div class="csharp"></div>
<div class="csharp"><span style="color: #0000ff;">bool</span> Encryptor::<span style="color: #2b91af;">EncryptString</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span> std::<span style="color: #2b91af;">string</span>&amp; plaintext,<br />
std::<span style="color: #0000ff;">string</span>* ciphertext<span style="color: #000000;">)</span> <span style="color: #000000;">{</span><br />
DATA_BLOB input;<br />
input.<span style="color: #2b91af;">pbData</span> = const_cast&lt;BYTE*&gt;<span style="color: #000000;">(</span><br />
reinterpret_cast&lt;const <span style="color: #0000ff;">BYTE</span>*&gt;<span style="color: #000000;">(</span>plaintext.<span style="color: #2b91af;">data</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;<br />
input.<span style="color: #2b91af;">cbData</span> = static_cast&lt;DWORD&gt;<span style="color: #000000;">(</span>plaintext.<span style="color: #2b91af;">length</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>;</div>
<div class="csharp">
<p>DATA_BLOB output;<br />
<span style="color: #0000ff;">BOOL</span> result = CryptProtectData<span style="color: #000000;">(</span>&amp;input, L<span style="color: #a31515;">&#8220;&#8221;</span>, <span style="color: #0000ff;">NULL</span>, <span style="color: #0000ff;">NULL</span>, <span style="color: #0000ff;">NULL</span>,<br />
<span style="color: #ff0000;">0</span>, &amp;output<span style="color: #000000;">)</span>;<br />
<span style="color: #0000ff;">if</span> <span style="color: #000000;">(</span>!result<span style="color: #000000;">)</span><br />
<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span>;</p>
<p><span style="font-style: italic; color: #007f00;">// this does a copy</span><br />
ciphertext-&gt;assign<span style="color: #000000;">(</span>reinterpret_cast&lt;std::<span style="color: #0000ff;">string</span>::<span style="color: #2b91af;">value_type</span>*&gt;<br />
<span style="color: #000000;">(</span>output.<span style="color: #2b91af;">pbData</span><span style="color: #000000;">)</span>, output.<span style="color: #2b91af;">cbData</span><span style="color: #000000;">)</span>;</p>
<p>LocalFree<span style="color: #000000;">(</span>output.<span style="color: #2b91af;">pbData</span><span style="color: #000000;">)</span>;<br />
<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span>;<br />
<span style="color: #000000;">}</span></div>
</div>
</div>
<p>The important piece here is <code><a href="http://msdn.microsoft.com/en-us/library/aa380261.aspx">CryptProtectData</a></code>, which is a Windows API function for encrypting data. Data encrypted with this function is pretty solid. It can only be decrypted on the same machine and by the same user that encrypted it in the first place.</p>
<p>So what&#8217;d we learn by investigating Chrome&#8217;s password management system? Well, we learned that Google uses SQLite as the storage mechanism for passwords and other web page related data. We also see that Google has done a great job extracting Windows specific code from the cross-platform stuff. The only Windows specific code here is the encryption function, which can easily be ported by creating a different Encryptor object for each OS.</p>
<p>Credits to: <a href="http://blog.paranoidferret.com">http://blog.paranoidferret.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/how-google-chrome-stores-passwords/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Recovering Internet Explorer Passwords: Theory and Practice</title>
		<link>http://www.whatsmypass.com/recovering-internet-explorer-passwords-theory-and-practice</link>
		<comments>http://www.whatsmypass.com/recovering-internet-explorer-passwords-theory-and-practice#comments</comments>
		<pubDate>Mon, 07 Jul 2008 00:54:47 +0000</pubDate>
		<dc:creator>Dev Team</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Password Info]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[AES algorithms]]></category>
		<category><![CDATA[alternative file manager]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[basic Internet Explorer password recovery modes]]></category>
		<category><![CDATA[built-in technologies]]></category>
		<category><![CDATA[cached websites Identities passwords AutoForms Data Content Advisor]]></category>
		<category><![CDATA[California]]></category>
		<category><![CDATA[Content Advisor]]></category>
		<category><![CDATA[data protection services]]></category>
		<category><![CDATA[data protection technology]]></category>
		<category><![CDATA[ElcomSoft]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[encryption algorithm]]></category>
		<category><![CDATA[encryption algorithms]]></category>
		<category><![CDATA[happy owner]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[improved encryption algorithms]]></category>
		<category><![CDATA[Internet  Explorer\IntelliForms\SPW]]></category>
		<category><![CDATA[Internet credentials
 mean user]]></category>
		<category><![CDATA[Internet Credentials]]></category>
		<category><![CDATA[Internet Credentials dialog]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Internet Explorer AutoComplete settings]]></category>
		<category><![CDATA[Internet Explorer Internet Credentials]]></category>
		<category><![CDATA[Internet Explorer Key]]></category>
		<category><![CDATA[Internet Explorer Password]]></category>
		<category><![CDATA[Internet Explorer password recovery]]></category>
		<category><![CDATA[Internet Explorer Password Recovery Programs]]></category>
		<category><![CDATA[Internet Explorer Password Recovery Programs PIEPR]]></category>
		<category><![CDATA[Internet Explorer Passwords]]></category>
		<category><![CDATA[Internet Explorer stores]]></category>
		<category><![CDATA[Internet Explorer window]]></category>
		<category><![CDATA[Internet Password Recovery Toolbox]]></category>
		<category><![CDATA[Internet passwords]]></category>
		<category><![CDATA[Items]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[leader]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[manager in their arsenal]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[Minolta Vectis S-1 Film Camera]]></category>
		<category><![CDATA[online users]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[Passcape Software]]></category>
		<category><![CDATA[Password]]></category>
		<category><![CDATA[PIEPR]]></category>
		<category><![CDATA[PIEPR source code checking Content Advisor]]></category>
		<category><![CDATA[Private Key]]></category>
		<category><![CDATA[Rixler Software]]></category>
		<category><![CDATA[Selecting Protected Storage owner]]></category>
		<category><![CDATA[simplified algorithm]]></category>
		<category><![CDATA[software developer]]></category>
		<category><![CDATA[stored Internet Explorer resources]]></category>
		<category><![CDATA[System Protected Storage]]></category>
		<category><![CDATA[text editor]]></category>
		<category><![CDATA[the Private]]></category>
		<category><![CDATA[Thegrideon Software]]></category>
		<category><![CDATA[Type]]></category>
		<category><![CDATA[Web address]]></category>
		<category><![CDATA[Web application]]></category>
		<category><![CDATA[Web applications]]></category>
		<category><![CDATA[Web browser]]></category>
		<category><![CDATA[Web page address]]></category>
		<category><![CDATA[Web page name]]></category>
		<category><![CDATA[Web password encryption algorithm]]></category>
		<category><![CDATA[Web server]]></category>
		<category><![CDATA[Web site passwords]]></category>
		<category><![CDATA[Windows 2000]]></category>
		<category><![CDATA[Windows Credential manager]]></category>
		<category><![CDATA[Windows NT]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[Windows XP]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=30</guid>
		<description><![CDATA[Brief introduction on how Internet Explorer stores its passwords


Introduction
Types of passwords stored in Internet Explorer

Internet Credentials
AutoComplete data
AutoComplete passwords
FTP passwords
Synchronization passwords
Identities passwords
AutoForms data
Content Advisor password


Brief overview of Internet Explorer password recovery programs
PIEPR &#8211; the first acquaintance
Three real-life examples

Recovering current user&#8217;s FTP passwords
Recovering website passwords from unloadable operating system
Recovering uncommonly stored passwords


Conclusion

Introduction
Nobody will likely dispute the fact [...]]]></description>
			<content:encoded><![CDATA[<p>Brief introduction on how Internet Explorer stores its passwords</p>
<p><span id="more-26"></span></p>
<ul>
<li><a href="#a1">Introduction</a></li>
<li><a href="#a2">Types of passwords stored in Internet Explorer</a>
<ul>
<li><a href="#a21">Internet Credentials</a></li>
<li><a href="#a22">AutoComplete data</a></li>
<li><a href="#a23">AutoComplete passwords</a></li>
<li><a href="#a24">FTP passwords</a></li>
<li><a href="#a25">Synchronization passwords</a></li>
<li><a href="#a26">Identities passwords</a></li>
<li><a href="#a27">AutoForms data</a></li>
<li><a href="#a28">Content Advisor password</a></li>
</ul>
</li>
<li><a href="#a3">Brief overview of Internet Explorer password recovery programs</a></li>
<li><a href="#a4">PIEPR &#8211; the first acquaintance</a></li>
<li><a href="#a51">Three real-life examples</a>
<ul>
<li><a href="#a51">Recovering current user&#8217;s FTP passwords</a></li>
<li><a href="#a52">Recovering website passwords from unloadable operating system</a></li>
<li><a href="#a53">Recovering uncommonly stored passwords</a></li>
</ul>
</li>
<li><a href="#a6">Conclusion</a></li>
</ul>
<h5><a name="a1"></a>Introduction</h5>
<p>Nobody will likely dispute the fact that Internet Explorer is today&#8217;s most popular Web browser. According to the statistics, approximately 70 percent of online users prefer to use just this program. Arguments about its pros and cons may last forever; still, this browser is the leader of its industry, and this is a fact that requires no proof. Internet Explorer carries several built-in technologies, designed to make average user&#8217;s life easier. One of them &#8211; IntelliSense &#8211; is made for taking care of the routine tasks, like the automatic completion of visited webpage addresses, automatic filling of form fields, users&#8217; passwords, etc.</p>
<p>Many of today&#8217;s websites require registration, which means, user would have to enter user name and password. If you use more than a dozen of such websites, you will likely need a password manager. All modern browsers have a built-in password manager in their arsenal, and Internet Explorer is not an odd. Indeed, why would one have to remember yet another password if <a href="#s1">it is going to be forgotten some time soon<sup><span style="font-size: x-small;">1</span></sup></a> anyway? Much easier would be to have browser do the routine work of remembering and storing passwords for you. It&#8217;s convenient and comfortable.</p>
<p>This would be a totally perfect solution; however, if your Windows operating system crashed or reinstalled not the way it&#8217;s supposed to be reinstalled, you can easily lose the entire list of your precious passwords. That&#8217;s the toll for the comfort and convenience. It&#8217;s good just about every website has a saving &#8220;<em>I forgot password</em>&#8221; button. However, this button will not always take your headache from you.</p>
<p>Each software developer solves the forgotten password recovery problem their own way. Some of them officially recommend copying a couple of important files to another folder, while other send all registered users a special utility that allows managing the migration of private data, and the third ones pretend they are not seeing the problem. Nevertheless, the demand creates the offer, and password recovery programs are currently on a great demand.</p>
<p>In this article, let&#8217;s try to classify types of private data stored in Internet Explorer, look at programs for the recovery of the data, and study real-life examples of recovering lost Internet passwords.</p>
<h5><a name="a2"></a>Types of Passwords Stored in Internet Explorer</h5>
<p>Internet Explorer may store the following types of passwords:</p>
<ul>
<li>Internet Credentials</li>
<li>AutoComplete Data</li>
<li>AutoComplete Passwords</li>
<li>FTP Passwords</li>
<li>Synchronization Passwords for cached websites</li>
<li>Identities Passwords</li>
<li>AutoForms Data</li>
<li>Content Advisor Password</li>
</ul>
<p>Let&#8217;s take a closer look at each listed item.</p>
<h5><a name="a21"></a>Internet Credentials for websites</h5>
<p><strong>Internet credentials</strong> mean user&#8217;s logins and passwords required for accessing certain websites, which are processed by the wininet.dll library. For example, when you try to enter the protected area of a website, you may see the following user name and password prompt (Figure 1).</p>
<p align="center"><img id="Picture245" title="Web site passwords" src="http://www.whatsmypass.com/explorer/pc002_1.png" border="0" alt="Web site passwords" width="326" height="289" /></p>
<p class="small" align="center"><strong>Figure 1</strong>. Internet Credentials dialog.</p>
<p>If the option &#8220;<em>Remember my password</em>&#8221; is selected in that prompt, the user credentials will be saved to your local computer. The older versions of Windows 9х stored that data in <a href="#s2">user&#8217;s PWL file<sup><span style="font-size: x-small;">2</span></sup></a>; Windows 2000 and newer store it in the <a href="#s3">Protected Storage<sup><span style="font-size: x-small;">2</span></sup></a>.</p>
<h5><a name="a22"></a>AutoComplete Data</h5>
<p><strong>AutoComplete data</strong> (passwords will be covered further) are also stored in the Protected Storage and appear as lists of HTML form field names and the corresponding user data. For example, if an HTML page contains an e-mail address entry dialog: once user has entered his e-mail address, the Protected Storage will have the HTML field name, the address value, and the time the record was last accessed.</p>
<p>The HTML page title and website address are not stored. Is that good or bad? It&#8217;s difficult to determine; more likely to be good than bad. Here are the obvious pros: it saves free space and speeds up browser&#8217;s performance. If you think the last note is insignificant, try to imagine how you would have to perform several extra checkups in a multi-thousand (this is not as rare as it may seem to be) auto-fill list.</p>
<p>Another obvious plus is that data for identical by name (and often by subject) HTML form fields will be stored in the same place, and the common data will be used for the automatic filling of such pages. We will see this by this example. If one HTML page contains an auto-fill field with the name &#8216;email&#8217;, and user entered his e-mail address in that field, IE will put in the storage, roughly, &#8216;email=my@email.com&#8217;. From now on, if the user opens another website, which has a page with the same field name &#8216;email&#8217;, the user will be suggested to auto-fill it with the value that he entered on the first page (my@email.com). Thus, the browser somewhat discovers AI capabilities within itself.</p>
<p>The major drawback of this data storage method comes out of its advantage that we just described. Imagine, user has entered auto-fill data on a webpage. If someone knows the HTML form field name, that person can create his own simplest HTML page with the same field name and open it from a local disk. To uncover the data entered in this field, such person will not even have to connect to the Internet and open the original WWW address.</p>
<h5><a name="a23"></a>AutoComplete Passwords</h5>
<p>In the case with passwords data, however, as you might have guessed, the data will not be filled in automatically. Since <strong>auto-complete passwords</strong> are stored along with the Web page name, and each password is bound to only one specific HTML page.</p>
<p>In the new version, Internet Explorer 7, both AutoComplete passwords and data are encrypted completely different; the new encryption method is free from the shortcoming just described (if that can be classified as a shortcoming.)</p>
<p>It is worth noticing that Internet Explorer allows users to manage auto-fill parameters manually, (Figure 2) through the options menu.</p>
<p align="center"><img id="Picture246" title="IE AutoComplete settings" src="http://www.whatsmypass.com/explorer/pc002_2.png" border="0" alt="IE AutoComplete settings" width="405" height="458" /></p>
<p class="small" align="center"><strong>Figure 2.</strong> Internet Explorer AutoComplete settings.</p>
<h5><a name="a24"></a>FTP passwords</h5>
<p><strong>FTP site passwords</strong> are stored pretty much the same way. It would be relevant to notice that beginning with Windows XP FTP passwords are additionally encrypted with <a href="#s4">DPAPI<sup><span style="font-size: x-small;">4</span></sup></a>. This encryption method uses logon password. Naturally, this makes it much more difficult to recover such lost passwords manually, since now one would need to have the user&#8217;s <a href="#s5">Master Key<sup><span style="font-size: x-small;">5</span></sup></a>, <a href="#s6">SID<sup><span style="font-size: x-small;">6</span></sup></a> and the account password.</p>
<h5><a name="a25"></a>Synchronization Passwords for cached websites</h5>
<p><strong>Synchronization passwords</strong> free user from having to enter passwords for cached websites (sites set to be available offline.) Passwords of this type are also stored in IE&#8217;s Protected Storage.</p>
<h5><a name="a26"></a>Identities passwords</h5>
<p>So are <strong>identities passwords</strong>. The identity-based access management mechanism is not widespread in Microsoft&#8217;s products, except, perhaps, Outlook Express.</p>
<h5><a name="a27"></a>AutoForms Data</h5>
<p>A special paragraph must cover the <strong>form auto-fill</strong> method, which constitutes a hybrid way of storing data. This method stores the actual data in the Protected Storage, and the URL, which the data belong to, is stored in user&#8217;s registry. The URL written in the registry is stored not as plaintext &#8211; it is stored as hash. Here is the algorithm for reading form auto-fill data in IE 4 &#8211; 6:</p>
<div class="code"><span style="color: #008000;">//Get autoform password by given URL<br />
</span><span style="color: #0000ff;">BOOL</span> CAutoformDecrypter::LoadPasswords(<span style="color: #0000ff;">LPCTSTR</span> cszUrl, <span style="color: #0000ff;">CStringArray</span> *saPasswords)<br />
{<br />
<span style="color: #a000a0;">assert</span>(cszUrl &amp;&amp; saPasswords);</p>
<p>saPasswords-&gt;RemoveAll();</p>
<p><span style="color: #008000;">//Check if autoform passwords are present in registry</span><br />
<span style="color: #0000ff;">if</span> ( EntryPresent(cszUrl) )<br />
{<br />
<span style="color: #008000;">//Read PStore autoform passwords</span><br />
<span style="color: #0000ff;">return</span> PStoreReadAutoformPasswords(cszUrl,saPasswords);<br />
}</p>
<p><span style="color: #0000ff;">return</span> <span style="color: #a000a0;">FALSE</span>;<br />
}</p>
<p><span style="color: #008000;">//Check if autoform passwords are present<br />
</span><span style="color: #0000ff;">BOOL</span> CAutoformDecrypter::EntryPresent(<span style="color: #0000ff;">LPCTSTR</span> cszUrl)<br />
{<br />
<span style="color: #a000a0;">assert</span>(cszUrl);</p>
<p><span style="color: #0000ff;">DWORD</span> dwRet, dwValue, dwSize=<span style="color: #0000ff;">sizeof</span>(dwValue);<br />
<span style="color: #0000ff;">LPCTSTR</span> cszHash=GetHash(cszUrl);</p>
<p><span style="color: #008000;">//problems computing the hash</span><br />
<span style="color: #0000ff;">if</span> ( !cszHash )<br />
<span style="color: #0000ff;">return</span> <span style="color: #a000a0;">FALSE</span>;</p>
<p><span style="color: #008000;">//Check the registry</span><br />
dwRet=SHGetValue(<span style="color: #a000a0;">HKCU</span>,<span style="color: #a000a0;">_T</span>(&#8221;Software\\Microsoft\\Internet  Explorer\\IntelliForms\\SPW&#8221;),cszHash,<span style="color: #a000a0;">NULL</span>,&amp;dwValue,&amp;dwSize);<br />
<span style="color: #0000ff;">delete</span>((<span style="color: #0000ff;">LPTSTR</span>)cszHash);</p>
<p><span style="color: #0000ff;">if</span> ( dwRet==<span style="color: #a000a0;">ERROR_SUCCESS</span> )<br />
<span style="color: #0000ff;">return</span> <span style="color: #a000a0;">TRUE</span>;</p>
<p>m_dwLastError=<span style="color: #a000a0;">E_NOTFOUND</span>;<br />
<span style="color: #0000ff;">return</span> <span style="color: #a000a0;">FALSE</span>;<br />
}</p>
<p>//retrieve hash by given URL text and translate it into hex format<br />
<span style="color: #0000ff;">LPCTSTR</span> CAutoformDecrypter::GetHash(<span style="color: #0000ff;">LPCTSTR</span> cszUrl)<br />
{<br />
<span style="color: #a000a0;">assert</span>(cszUrl);</p>
<p><span style="color: #0000ff;">BYTE</span> buf[<span style="color: #ff0000;">0x10</span>];<br />
<span style="color: #0000ff;">LPTSTR</span> pRet=<span style="color: #a000a0;">NULL</span>;<br />
<span style="color: #0000ff;">int</span> i;</p>
<p><span style="color: #0000ff;">if</span> ( HashData(cszUrl,buf,<span style="color: #0000ff;">sizeof</span>(buf)) )<br />
{<br />
<span style="color: #008000;">//Allocate some space</span><br />
pRet=<span style="color: #0000ff;">new</span> <span style="color: #0000ff;">TCHAR</span> [<span style="color: #0000ff;">sizeof</span>(buf) * <span style="color: #0000ff;">sizeof</span>(<span style="color: #0000ff;">TCHAR</span>) + <span style="color: #0000ff;">sizeof</span>(<span style="color: #0000ff;">TCHAR</span>)];<br />
<span style="color: #0000ff;">if</span> ( pRet)<br />
{<br />
<span style="color: #0000ff;">for</span> ( i=<span style="color: #ff0000;">0</span>; i&lt;<span style="color: #0000ff;">sizeof</span>(buf); i++ )<br />
{<br />
/<span style="color: #008000;">/ Translate it into human readable format</span><br />
pRet[i]=(<span style="color: #0000ff;">TCHAR</span>) ((buf[i] &amp; <span style="color: #ff0000;">0&#215;3F</span>) + <span style="color: #ff0000;">0&#215;20</span>);<br />
}<br />
pRet[i]=<span style="color: #a000a0;">_T</span>(&#8217;<span style="color: #ff0000;">\0</span>&#8216;);<br />
}<br />
<span style="color: #0000ff;">else</span><br />
m_dwLastError=<span style="color: #a000a0;">E_OUTOFMEMORY</span>;<br />
}</p>
<p><span style="color: #0000ff;">return</span> pRet;<br />
}</p>
<p><span style="color: #008000;">//DoHash wrapper<br />
</span><span style="color: #0000ff;">BOOL</span> CAutoformDecrypter::HashData(<span style="color: #0000ff;">LPCTSTR</span> cszData, <span style="color: #0000ff;">LPBYTE</span> pBuf, <span style="color: #0000ff;">DWORD</span> dwBufSize)<br />
{<br />
<span style="color: #a000a0;">assert</span>(cszData &amp;&amp; pBuf);</p>
<p><span style="color: #0000ff;">if</span> ( !cszData || !pBuf )<br />
{<br />
m_dwLastError=<span style="color: #a000a0;">E_ARG</span>;<br />
<span style="color: #0000ff;">return</span> <span style="color: #a000a0;">FALSE</span>;<br />
}</p>
<p>DoHash((<span style="color: #0000ff;">LPBYTE</span>)cszData,strlen(cszData),pBuf,dwBufSize);<br />
<span style="color: #0000ff;">return</span> <span style="color: #a000a0;">TRUE</span>;<br />
}</p>
<p><span style="color: #0000ff;">void</span> CAutoformDecrypter::DoHash(<span style="color: #0000ff;">LPBYTE</span> pData, <span style="color: #0000ff;">DWORD</span> dwDataSize, <span style="color: #0000ff;">LPBYTE</span> pHash, <span style="color: #0000ff;">DWORD</span> dwHashSize)<br />
{<br />
<span style="color: #0000ff;">DWORD</span> dw=dwHashSize, dw2;</p>
<p><span style="color: #008000;">//pre-init loop</span><br />
<span style="color: #0000ff;">while</span> ( dw&#8211;&gt;<span style="color: #ff0000;">0</span> )<br />
pHash[dw]=(<span style="color: #0000ff;">BYTE</span>)dw;</p>
<p><span style="color: #008000;">//actual hashing stuff</span><br />
<span style="color: #0000ff;">while</span> ( dwDataSize&#8211;&gt;<span style="color: #ff0000;">0</span> )<br />
{<br />
for ( dw=dwHashSize; dw&#8211;&gt;<span style="color: #ff0000;">0</span>; )<br />
{<br />
<span style="color: #008000;">//m_pPermTable = permutation table</span><br />
pHash[dw]=m_pPermTable[pHash[dw]^pData[dwDataSize]];<br />
}<br />
}<br />
}</p>
</div>
<p>The next, seventh generation of the browser, is most likely going to make this user&#8217;s data storage mechanism its primary data storage method, declining the good old Protected Storage. Better to say, auto-fill data and passwords, from now on, are going to be stored here.</p>
<p>What is so special and interesting in this mechanism that made MS decide to use it as primary? Well, first of all, it was the encryption idea, which isn&#8217;t new at all but still simple and genius, to disgrace. The idea is to quit storing encryption keys and generate them whenever that would be necessary. The raw material for such keys would be HTML page&#8217;s Web address.</p>
<p>Let&#8217;s see how this idea works in action. Here is IE7&#8217;s simplified algorithm for saving auto-fill data and password fields:</p>
<ol>
<li>Save Web page&#8217;s address. We will use this address as the encryption key (<strong>EncryptionKey</strong>).</li>
<li>Obtain Record Key.<strong> RecordKey </strong>= SHA(<strong>EncryptionKey</strong>).</li>
<li>Calculate checksum for <strong>RecordKey</strong> to ensure the integrity of the record key (the integrity of the actual data will be guaranteed by DPAPI.) <strong>RecordKeyCrc</strong> = CRC(<strong>RecordKey</strong>).</li>
<li>Encrypt data (passwords) with the encryption key <strong>EncryptedData </strong>= DPAPI_Encrypt(Data, <strong>EncryptionKey</strong>).</li>
<li>Save <strong>RecordKeyCrc</strong> + <strong>RecordKey</strong> + <strong>EncryptedData</strong> in the registry.</li>
<li>Discard <strong>EncryptionKey</strong>.</li>
</ol>
<p>It is very, very difficult to recover password without having the original Web page address. The decryption looks pretty much trivial:</p>
<ol>
<li>When the original Web page is open, we take its address (<strong>EncryptionKey</strong>) and obtain the record key <strong>RecordKey</strong> = SHA(<strong>EncryptionKey</strong>).</li>
<li>Browse through the list of all record keys trying to locate the <strong>RecordKey</strong>.</li>
<li>If the <strong>RecordKey</strong> is found, decrypt data stored along with this key using the <strong>EncryptionKey</strong>. Data = DPAPI_Decrypt(<strong>EncryptedData</strong>, <strong>EncryptionKey</strong>).</li>
</ol>
<p>In spite of the seeming simplicity, this Web password encryption algorithm is one of today&#8217;s strongest. However, it has a major drawback (or advantage, depending which way you look at it.) If you change or forget the original Web page address, it will be impossible to recover password for it.</p>
<h5><a name="a28"></a>Content Advisor password</h5>
<p>And the last item on our list is <strong>Content Advisor password</strong>. CA was originally developed as a tool for restricting access to certain websites. However, for some reason it was unloved by many users (surely, you may disagree with this.) If you once turned CA on, entered a password and then forgot it, you will not be able to access the majority of websites on the Internet. Fortunately (or unfortunately), this can be easily fixed.</p>
<p>The actual CA password is not stored as plaintext. Instead, the system calculates its MD5 hash and stores it in Windows registry. On an attempt to access the restricted area, the password entered by user is also hashed, and the obtained hash is compared with the one stored in the registry. Take a look at PIEPR source code checking Content Advisor password:</p>
<div class="code"><span style="color: #0000ff;">void</span> CContentAdvisorDlg::CheckPassword()<br />
{<br />
<span style="color: #0000ff;">CRegistry</span> registry;</p>
<p><span style="color: #008000;">//read the registry</span><br />
registry.SetKey(<span style="color: #a000a0;">HKLM,</span>&#8220;SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\Ratings&#8221;);</p>
<p><span style="color: #0000ff;">BYTE</span> pKey[<span style="color: #a000a0;">MD5_DIGESTSIZE</span>], pCheck[<span style="color: #a000a0;">MD5_DIGESTSIZE</span>];<br />
<span style="color: #0000ff;">if</span> ( !registry.GetBinaryData(&#8221;Key&#8221;,pKey,<span style="color: #a000a0;">MD5_DIGESTSIZE</span>) )<br />
{<br />
MessageBox(<span style="color: #a000a0;">MB_ERR</span>,&#8221;Can&#8217;t read the password.&#8221;);<br />
<span style="color: #0000ff;">return</span>;<br />
}</p>
<p><span style="color: #008000;">//Get one set by user</span><br />
<span style="color: #0000ff;">CString</span> cs;<br />
m_wndEditPassword.GetWindowText(cs);<br />
MD5Init();<br />
MD5Update((<span style="color: #0000ff;">LPBYTE</span>)(<span style="color: #0000ff;">LPCTSTR</span>)cs,cs.GetLength()+<span style="color: #ff0000;">1</span>);<br />
MD5Final(pCheck);</p>
<p><span style="color: #008000;">//Check hashes</span><br />
<span style="color: #0000ff;">if</span> ( memcmp(pKey,pCheck,<span style="color: #a000a0;">MD5_DIGESTSIZE</span>)==<span style="color: #ff0000;">0</span> )<br />
MessageBox(<span style="color: #a000a0;">MB_OK</span>,&#8221;The password is correct!&#8221;);<br />
<span style="color: #0000ff;">else</span><br />
MessageBox(<span style="color: #a000a0;">MB_OK</span>,&#8221;Wrong password.&#8221;);<br />
}<br />
}</p>
</div>
<p>The first thing you may think about is to try to pick the password by using the brute force or dictionary attack. However, there is a more elegant way to that. You can simply remove the hash from the registry. That&#8217;s it; so simple&#8230; Well, it&#8217;s better to rename it instead, so that if you ever need it, you can restore it back. Some programs also let users check CA password, &#8220;drag out&#8221; password hint, toggle password on/off, etc.</p>
<h5><a name="a3"></a>Brief Overview of Internet Explorer Password Recovery Programs</h5>
<p>It&#8217;s worth noticing that not all password recovery programs suspect there are so many ways to recover passwords. Most likely, this is related to the fact that some passwords (e.g., synchronization passwords) are not often used in the real life, and FTP passwords are not so simple to be &#8220;dragged out&#8221;. Here is a brief overview of the most popular commercial products for recovering passwords for the most popular browser on earth <img src='http://www.whatsmypass.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong><span style="text-decoration: underline;">Advanced Internet Explorer Password Recovery</span></strong> from the not unknown company, ElcomSoft &#8211; does not recognize AutoForm passwords and encrypted FTP passwords. Not to be excluded, the last version of the program may have learnt to do that. Simple, convenient user interface. The program can be upgraded online automatically.</p>
<p><strong><span style="text-decoration: underline;">Internet Explorer Key</span></strong> from PassWare &#8211; similarly, does not recognize certain types of passwords. Sometimes the program halts with a critical error when reading some uncommon types of IE&#8217;s URLs. Displays first two characters of passwords being recovered. The advantages worth noticing are the Spartan user interface and operating convenience.</p>
<p><strong><span style="text-decoration: underline;">Internet Explorer Password</span></strong> from Thegrideon Software &#8211; not bad, but can recover just three types of Internet Explorer passwords (this is enough for the majority of cases.) Deals with FTP passwords properly. Version 1.1 has problems recovering AutoForm passwords. Has convenient user interface, which in some way reminds one from AIEPR. One can be totally overwhelmed with the beauty and helpfulness of the company&#8217;s website.</p>
<p><strong><span style="text-decoration: underline;">Internet Password Recovery Toolbox</span></strong> from Rixler Software &#8211; offers some greater functionality than the previously covered competitors. It can recover encrypted FTP passwords and delete selected resources. However, it has some programming errors. For example, some types of IE records cannot be deleted. The program comes with a great, detailed help file.</p>
<p><strong><span style="text-decoration: underline;">ABF Password Recovery</span></strong> from ABF software &#8211; quite a good program with friendly user interface. The list of IE record types supported by the program is not long. Nevertheless, it deals with all of them properly. The program can be classified as a multi-functional one, since it can restore passwords for other programs also.</p>
<p>The major drawback of all programs named here is the capability to recover passwords only for user currently logged on.</p>
<p>As it was said above, the general body of stored Internet Explorer resources is kept in a special storage called Protected Storage. Protected Storage was developed specially for storing personal data. Therefore the functions for working with it (called PS API) are not documented. Protected Storage was first introduced with the release of the version 4 of Internet Explorer, which, by the way, unlike the third version, was written from scratch.</p>
<p>So, until very recent time, all programs for recovering Internet Explorer passwords used those undocumented API. That&#8217;s the reason why one significant restriction was applied to the recovery work: PS API can only work with passwords for user that is currently logged on. When the system encrypts data stored in Protected Storage, besides everything else it uses user&#8217;s SID, without which it is literally impossible (taking into account the current level of computers&#8217; calculating performance) to recover stored passwords.</p>
<p>Protected Storage uses a very well thought through data encryption method, which uses master keys and strong algorithms, such as des, sha, and shahmac. Similar data encryption methods are now used in the majority of modern browsers; e.g. in Opera or FireFox. Microsoft, meanwhile, quietly but surely develops and tests new ones. When this article is written, in the pre-Beta version of Internet Explorer 7 Protected Storage was only used for storing FTP passwords.</p>
<p>The analysis of this preliminary version suggests that Microsoft is preparing another &#8220;surprise&#8221; in the form of new, interesting encryption algorithms. It is not known for sure, but most likely the new company&#8217;s data protection technology <strong>InfoCard</strong> will be involved in the encryption of private data.</p>
<p>Thus, with a great deal of confidence one can assert that with the release of Windows Vista and the 7th version of Internet Explorer passwords will be stored and encrypted with fundamentally new algorithms, and the Protected Storage interface, to all appearances, will become open for third-party developers.</p>
<p>It is somewhat sad, for we think the true potential of Protected Storage was still not uncovered. And this is why we think so:</p>
<ul>
<li>First, Protected Storage is based on module structure, which allows plugging other storage providers to it. However, for the last 10 years while Protected Storage exists, not a single new storage provider was created. System Protected Storage is the only storage provider in the operating system, which is used by default.</li>
<li>Second, Protected Storage has its own, built-in access management system, which, for some reason, is not used in Internet Explorer or in other MS products.</li>
<li>Third, it is not very clear why MS have decided to decline Protected Storage in storing AutoComplete data and passwords. Decline it as a tried and true data storage, and not data encryption mechanism. It would be more logically proven to keep Protected Storage at least for storing data when implementing a new encryption algorithm. Without fail, there were weighty reasons for that. Therefore, it would be interesting to hear the opinion of MS specialists concerning this subject matter.</li>
</ul>
<h5><a name="a4"></a>PIEPR &#8211; the First Acquaintance</h5>
<p><a href="http://www.passcape.com/html/piepr.html">Passcape Internet Explorer Password Recovery</a> was developed specifically to bypass the PS API&#8217;s restriction and make it possible to recover passwords directly, from the registry&#8217;s binary files. Besides, it has a number of additional features for advanced users. The program&#8217;s wizard allows you to choose one of several operating modes:</p>
<p><strong><span style="text-decoration: underline;">Automatic.</span></strong> Current user&#8217;s passwords will be recovered by accessing the closed PS API interface. All current user&#8217;s passwords currently stored in Internet Explorer will be recovered with a single click of the mouse.</p>
<p><strong><span style="text-decoration: underline;">Manual.</span></strong> Passwords will be recovered without PS API. This method&#8217;s main advantage is the capability to recover passwords from your old Windows account. For that purpose, you will need to enter path to the user&#8217;s registry file. Registry files are normally not available for reading; however, the technology used in PIEPR allows doing that (provided you have the local administrative rights.)</p>
<p>User&#8217;s registry file name is ntuser.dat; its resides in the user&#8217;s profile, which is normally %SYSTEMDRIVE%:\Documents and Settings\%USERNAME%, where %SYSTEMDRIVE% stands for the system disk with the operating system, and %USERNAME% is normally account name. For instance, path to registry file may look like this: C:\Documents and Settings\John\ntuser.dat</p>
<p>If you have ever been a happy owner of Windows 9x/ME, after you upgrade your operating system to Windows NT, Protected Storage will providently save a copy of your old private data. As a result of that, Protected Storage may contain several user identifiers, so PIEPR will ask you to select the right one before it gets to the decryption of the data (Figure 3).</p>
<p align="center"><img id="Picture247" title="Protected Storage user selection" src="http://www.whatsmypass.com/explorer/pc002_3.png" border="0" alt="Protected Storage user selection" width="386" height="169" /></p>
<p class="small" align="center"><strong>Figure 3.</strong> Selecting Protected Storage owner.</p>
<p>One of the listed SIDs will contain data left by the old Windows 9x/ME. That data is additionally encrypted with user&#8217;s logon password, and PIEPR currently does not support the decryption of such data.</p>
<p>If ntuser.dat contains encrypted passwords (e.g., FTP sites passwords), the program will need additional information in order to decrypt them (Figure 4):</p>
<ol>
<li>Logon password of user whose data are to be decrypted</li>
<li>Full path to the user&#8217;s MasterKey</li>
<li>User&#8217;s SID</li>
</ol>
<p align="center"><img id="Picture249" title="DPAPI decryption" src="http://www.whatsmypass.com/explorer/pc002_4.png" border="0" alt="DPAPI decryption" width="428" height="302" /></p>
<p class="small" align="center"><strong>Figure 4.</strong> DPAPI decryption dialog for FTP passwords.</p>
<p>Normally, the program finds the last two items in user&#8217;s profile and fills that data automatically. However, if ntuser.dat was copied from another operating system, you will have to take care of that on your own. The easiest way to get the job done is to copy the entire folder with user&#8217;s Master Key (there may be several of them) to the folder with ntuser.dat. Master Key resides in the following folder on your local computer: %SYSTEMDRIVE%:\Documents and Settings\%USERNAME%\Application Data\Microsoft\Protect\%UserSid%, where %SYSTEMDRIVE% stands for the system disk with the operating system, %USERNAME% &#8211; account name, %UserSid% &#8211; user&#8217;s SID. For example, path to the folder with a master key may look as follows: C:\Documents and Settings\John\Application Data\Microsoft\Protect\S-1-5-21-1587165142-6173081522-185545743-1003. Let&#8217;s make it clear that it is recommended to copy the entire folder S-1-5-21-1587165142-6173081522-185545743-1003, for it may contain several Master Keys. Then PIEPR will select the right key automatically.</p>
<p>Windows marks some folders as hidden or system, so they are invisible in Windows Explorer. To make them visible, enable showing hidden and system objects in the view settings or use an alternative file manager.</p>
<p>Once the folder with user&#8217;s Master Key was copied to the folder with ntuser.dat, PIEPR will automatically find the required data, so you will only have to enter user&#8217;s password for recovering FTP passwords.</p>
<p><strong><span style="text-decoration: underline;">Content Advisor.</span></strong> CA passwords, as it was said already, is not kept as plain text; instead, it is stored as hash. In the CA password management dialog, it is enough to just delete (you can restore the deleted password at any time later) or change this hash to unlock sites locked with CA. PIEPR will also display your password hint if there is one.</p>
<p><strong><span style="text-decoration: underline;">Asterisks passwords.</span></strong> PIEPR&#8217;s fourth operating mode, which allows recovering Internet Explorer passwords hidden behind asterisks. To recover such password, simply drag the magnifier to the window with a **** password. This tool allows recovering passwords for other programs that use IE Frames as well; e.g., Windows Explorer, some IE-based browsers, etc.</p>
<p>We have reviewed the basic Internet Explorer password recovery modes. There is also a number of additional features for viewing and editing <a href="#s7">cookies<sup><span style="font-size: x-small;">7</span></sup></a>, cache, visited pages history, etc. We are not going to cover them in detail; instead, we are going to look at a few password recovery examples done with PIEPR.</p>
<h5><a name="a51"></a>Three Real-Life Examples</p>
<p>Example 1: Recovering current user&#8217;s FTP password.</h5>
<p>When opening an FTP site, Internet Explorer pops up the log on dialog (Figure 5).</p>
<p align="center"><img id="Picture251" title="FTP password dialog" src="http://www.whatsmypass.com/explorer/pc002_5.png" border="0" alt="FTP password dialog" width="486" height="341" /></p>
<p class="small" align="center"><strong>Figure 5.</strong> FTP logon dialog.</p>
<p>If you have opened this site and set the &#8220;Save password&#8221; option in the authentication dialog, the password must be saved in Protected Storage, so recovering it is a pretty trivial job. Select the automatic operating mode in PIEPR and then click &#8220;Next&#8221;. Locate our resource in the dialog with decrypted passwords that appears (the site name must appear in the Resource Name column.)</p>
<p>As we see, the decryption of current user&#8217;s password should not cause any special difficulties. Oh, if the password is not found for some reason &#8211; don&#8217;t forget to check IE&#8217;s Auto-Complete Settings (Figure 2). Possibly, you have simply not set the program to save passwords.</p>
<h5><a name="a52"></a>Example 2: We will need to recover Web site passwords. The operating system is unbootable.</h5>
<p>This is a typical, but not fatal situation. The necessity to recover Internet Explorer passwords after unsuccessful Windows reinstallation occurs just as often.</p>
<p>In either case, we will have user&#8217;s old profile with all files within it. This set is normally enough to get the job done. In the case with the reinstallation, Windows providently saves the old profile under a different name. For example, if your account name was John, after renaming it may look like John.WORK-72C39A18.</p>
<p>The first and the foremost what you must do is to gain access to files in the old profile. There are two ways to doing this:</p>
<ol>
<li>Install a new operating system on a different hard drive; e.g., Windows XP, and hook the old hard drive to it.</li>
<li>Create a Windows NT boot disk. There are many different utilities for creating boot disks and USB flash disks available online. For instance, you can use WinPE or BartPE. Or a different one. If your old profile was stored on an NTFS part of your hard drive, the boot disk will have to support NTFS.</li>
</ol>
<p>Let&#8217;s take the first route. Once we gain access to the old profile, we will need to let the system show hidden and system files. Otherwise, the files we need will be invisible. Open <em>Control Panel</em>, then click on <em>Folder Options</em>, and then select the <em>View</em> tab. On this tab, find the option &#8216;<em>Show hidden files and folders</em>&#8216; and select it. Clear the option &#8216;<em>Hide protected operating system files</em>&#8216;. When the necessary passwords are recovered, it&#8217;s better to reset these options to the way they were set before.</p>
<p>Open the program&#8217;s wizard in the manual mode and enter path to the old profile&#8217;s registry file. In our case, that is C:\Documents And Settings\ John.WORK-72C39A18\ntuser.dat. Where John.WORK-72C39A18 is the old account name. Click &#8216;<em>Next</em>&#8216;.</p>
<p>This data should normally be sufficient for recovering Internet Explorer passwords. However, if there is at least a single encrypted FTP password, the program will request additional data, without which it will not be able to recover such types of passwords (Figure 4):</p>
<ul>
<li>User&#8217;s password</li>
<li>User&#8217;s Master Key</li>
<li>User&#8217;s SID.</li>
</ul>
<p>Normally, the program finds the last two items in user&#8217;s profile and fills that data automatically. However, if that didn&#8217;t happen, you can do that by hand: copy ntuser.dat and the folder with the Master Key to a separate folder. It is important to copy the entire folder, for it may contain several keys, and the program will select the right one automatically. Then enter path to file ntuser.dat that you have copied to another folder.</p>
<p>That&#8217;s it. Now we need to enter the old account password, and the recovery will be completed. If you don&#8217;t care for FTP password, you can skip the user&#8217;s password, Master Key, and SID entry dialog.</p>
<h5><a name="a53"></a>Example 3: Recovering uncommonly stored passwords.</h5>
<p>When we sometimes open a website in the browser, the  authentication dialog appears. However, PIEPR fails to recover it in either automatic or manual mode. The &#8216;<em>Save password</em>&#8216; option in Internet Explorer is enabled. We will need to recover this password.</p>
<p>Indeed, some websites don&#8217;t let browser to save passwords in the auto-complete passwords list. Often, such websites are written in JAVA or they use alternative password storage methods; e.g., they store passwords in cookies.</p>
<p>If the password field is filled with asterisks, the solution is clear: select the ASTERISKS PASSWORDS operating mode and then open the magic magnifier dialog. Then simply drag the magnifier to the Internet Explorer window (Figure 6).</p>
<p align="center"><img id="Picture252" title="Asterisks password revealer" src="http://www.whatsmypass.com/explorer/pc002_6.png" border="0" alt="Asterisks password revealer" width="470" height="437" /></p>
<p class="small" align="center"><strong>Figure 6.</strong> The password is behind asterisks.</p>
<p>The password (passwords, if the Internet Explorer window has several fields with asterisks) is to appear in the PIEPR window (Figure 7).</p>
<p align="center"><img id="Picture253" title="Internet Explorer asterisks passwords" src="http://www.whatsmypass.com/explorer/pc002_7.png" border="0" alt="Internet Explorer asterisks passwords" width="554" height="460" /></p>
<p class="small" align="center"><strong>Figure 7.</strong> Magnifying glass in use.</p>
<p>But it&#8217;s not always that simple. The password field may be empty or that field may indeed contain *****. In this case, as you have guessed by now, the ASTERISKS PASSWORDS tool will be useless.</p>
<p>We can suppose, the password is stored in cookies. Let&#8217;s try to locate it. Choose the IE Cookie Explorer tool (Figure 8).</p>
<p align="center"><img id="Picture254" title="IE Cookie Explorer" src="http://www.whatsmypass.com/explorer/pc002_8.png" border="0" alt="IE Cookie Explorer" width="478" height="200" /></p>
<p class="small" align="center"><strong>Figure 8.</strong> IE Cookie Explorer.</p>
<p>The dialog that appears will list the websites that store cookies on your computer. Click on the URL column header to order the websites list alphabetically. This will help us find the right website easier. Go through the list of websites and select the one we need. The list below will display the decrypted cookies for this website (Figгку 9).</p>
<p align="center"><img id="Picture257" title="Decrypted cookies" src="http://www.whatsmypass.com/explorer/pc002_9.png" border="0" alt="Decrypted cookies" width="532" height="332" /></p>
<p class="small" align="center"><strong>Figure 9.</strong> Decrypted cookies.</p>
<p>As the figure shows, in our case the login and password are not encrypted and are stored as plain text.</p>
<p>Cookies are often encrypted. In this case, you are not likely to succeed recovering the password. The only thing you can try doing in order to recover the old account is to create a new account. Then you will be able to copy the old cookies in a text editor and replace them with the new ones. However, this is only good when the worst comes to the worst; it is not recommended to use it normally.</p>
<p>Don&#8217;t forget also that just about all pages and forms with passwords have the &#8216;<em>Forgot password</em>&#8216; button.</p>
<h5><a name="a6"></a>Conclusion</h5>
<p>As this article shows, recovering Internet Explorer passwords is a pretty simple job, which does not require any special knowledge or skills. However, despite of the seeming simplicity, password encryption schemes and algorithms are very well thought through and just as well implemented. Although the Protected Storage concept is over 10 years of age, don&#8217;t forget that it has proven the very best recommendations of the experts and has been implemented through three generations of this popular browser.</p>
<p>With the release of the next, 7th version of IE, Microsoft is preparing fundamentally new schemes for protecting our private data, where it uses improved encryption algorithms and eliminates shortages peculiar to Protected Storage.</p>
<p>In particular, the analysis of the preliminary beta versions of Internet Explorer 7 has revealed that autoform password encryption keys are no longer stored along with data. They are not stored, period! This is a little know-how, which is to be estimated at its true worth by both professionals and end users, who, finally, will benefits of it anyway.</p>
<p>But the main thing is, the release of the new concept will eliminate the major drawback peculiar to Protected Storage, which is the possibility to recover passwords without knowing the additional information. Better to say, was enough for a potential hacker to gain physical access to the contents of a hard drive, in order to steal or damage passwords and user&#8217;s other private data. With the release of Internet Explorer 7, the situation will somewhat change.</p>
<p>Meanwhile, we will only have to wait impatiently for the advent of Windows Vista and IE 7 to take a closer look at new encryption mechanisms used in the next generation of this popular browser.</p>
<p align="right"><em>This document may be freely distributed or reproduced provided that the<br />
reference to the original article is placed  on each copy of this document.<br />
(c) 2006 Passcape Software. All rights reserved.<br />
</em><a href="http://www.passcape.com">http://www.passcape.com</a></p>
<hr /><a name="s1"></a><em><strong>*1</strong> Human&#8217;s memory can be split into two categories: short-term memory and long-term memory. For the purposes of memorizing information, human beings activate short-term memory, which is characterized by limited volume. When the volume is overloaded, new information that enters the memory, partially pushes the old information out, which permanently disappears. To store information in the short-term memory, one needs to keep constant attention to material being memorized for the entire period while the material is to be in the memory. If one doesn&#8217;t repeat the information stored in the memory for a certain period of time (e.g., a new password), that information can permanently or fragmentarily fall out of the conscience sphere and never end up in the long-term memory.</em></p>
<p><a name="s2"></a><em><strong>*2</strong> USERNAME.<strong>PWL</strong> (where USERNAME is your logon name) is a <strong>P</strong>ass<strong>W</strong>ord <strong>L</strong>ist file. It records passwords to resources on the network and uses them to reconnect to those resources so you don&#8217;t have to type the password again.</em></p>
<p><em><a name="s3"></a><strong>*3</strong> <strong>Protected Storage</strong> provides applications with an interface to store user data that must be kept secure or free from modification. Units of data stored are called Items. The structure and content of the stored data is opaque to the Protected Storage system. Access to Items is subject to confirmation according to a user-defined Security Style, which specifies what confirmation is required to access the data, such as whether a password is required. In addition, access to Items is subject to an Access rule set. There is an Access rule for each Access Mode: for example, read/write. Access rule sets are composed of Access Clauses. Two kinds of Access Clauses are currently supported: Authenticode and Binary Check of caller. Typically at application setup time, a mechanism is provided to allow a new application to request from the user access to Items that may have been created previously by another application.<br />
Items are uniquely identified by the combination of a Key, Type, Subtype, and Name. The Key is a constant that specifies whether the Item is global to this computer or associated only with this user. The Name is a string, generally chosen by the user. Type and Subtype are GUIDs, generally specified by the application. Additional information about Types and Subtypes is kept in the system registry and include attributes such as Display Name and UI hints. For Subtypes, the parent Type is fixed and included in the system registry as an attribute. The Type group Items is used for a common purpose: for example, Payment or Identification. The Subtype group Items share a common data format.<br />
We&#8217;ll try to cover the Protected Storage structure in one of the upcoming articles.</em></p>
<p><em><a name="s4"></a><strong>*4</strong> Starting with Microsoft® Windows® 2000, the operating system began to provide a <strong>D</strong>ata <strong>P</strong>rotection <strong>A</strong>pplication-<strong>P</strong>rogramming <strong>I</strong>nterface (<strong>DPAPI</strong>) (API). This is simply a pair of function calls that provide OS-level data protection services to user and system processes. By OS-level, we mean a service that is provided by the operating system itself and does not require any additional libraries. By data protection, we mean a service that provides confidentiality of data through encryption. Since the data protection is part of the OS, every application can now secure data without needing any specific cryptographic code other than the necessary function calls to DPAPI. These calls are two simple functions with various options to modify DPAPI behavior. Overall, DPAPI is a very easy-to-use service that will benefit developers that must provide protection for sensitive application data, such as passwords and private keys.<br />
DPAPI is a password-based data protection service: it requires a password to provide protection. The drawback, of course, is that all protection provided by DPAPI rests on the password provided. This is offset by DPAPI using proven cryptographic routines, specifically the strong Triple-DES and AES algorithms, and strong keys, which we&#8217;ll cover in more detail later. Since DPAPI is focused on providing protection for users and requires a password to provide this protection, it logically uses the user&#8217;s logon password for protection.<br />
DPAPI is not responsible for storing the confidential information it protects. It is only responsible for encrypting and decrypting data for programs that call it, such as Windows Credential manager, the Private Key storage mechanism, or any third-party programs.<br />
Please refer to <a href="http://support.microsoft.com/kb/309408/">microsoft.com</a> for more information.</em></p>
<p><em><a name="s5"></a><strong>*5</strong> A <strong>Master Key</strong> is key data material from which other encryption/decryption keys are derived.</em></p>
<p><em><a name="s6"></a><strong>*6</strong> <strong>SID</strong> &#8211; <strong>S</strong>ecurity <strong>ID</strong>entifier.</em></p>
<p><a name="s7"></a><em><strong>*7</strong> A <strong>cookie</strong> is a small bit of text that accompanies requests and pages as they go between the Web server and browser. The cookie contains information the Web application can read whenever the user visits the site. Cookies provide a useful means in Web applications to store user-specific information. For example, when a user visits your site, you can use cookies to store user preferences or other information. When the user visits your Web site another time, the application can retrieve the information it stored earlier.<br />
Cookies are used for all sorts of purposes, all relating to helping the Web site remember you. In essence, cookies help Web sites store information about visitors. A cookie also acts as a kind of calling card, presenting pertinent identification that helps an application know how to proceed.<br />
But often cookies criticized for weak security and inaccurate user identification.<br />
Please refer to <a href="http://www.microsoft.com/info/cookies.mspx">this</a> page to read more.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/recovering-internet-explorer-passwords-theory-and-practice/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To Crack WEP and WPA</title>
		<link>http://www.whatsmypass.com/how-to-crack-wep-and-wpa</link>
		<comments>http://www.whatsmypass.com/how-to-crack-wep-and-wpa#comments</comments>
		<pubDate>Mon, 30 Jun 2008 04:33:47 +0000</pubDate>
		<dc:creator>Dev Team</dc:creator>
				<category><![CDATA[Password Info]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[Alkaloid Networks]]></category>
		<category><![CDATA[AP MAC]]></category>
		<category><![CDATA[ARP]]></category>
		<category><![CDATA[Brute Force]]></category>
		<category><![CDATA[Bryan Rite]]></category>
		<category><![CDATA[Dictionary Brute Force]]></category>
		<category><![CDATA[encrypted wireless network]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[encryption algorithm]]></category>
		<category><![CDATA[excellent tool]]></category>
		<category><![CDATA[fancy dancy algorithms]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[MAC address]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[OSX's Airport]]></category>
		<category><![CDATA[pretty straight forward]]></category>
		<category><![CDATA[temporal key integrity protocol]]></category>
		<category><![CDATA[WEP]]></category>
		<category><![CDATA[wireless card]]></category>
		<category><![CDATA[wireless connection]]></category>
		<category><![CDATA[wireless connections]]></category>
		<category><![CDATA[Wireless interface]]></category>
		<category><![CDATA[wireless networks]]></category>
		<category><![CDATA[wireless routers]]></category>
		<category><![CDATA[www.lucidinteractive.ca)]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=29</guid>
		<description><![CDATA[

What else are you gonna do next Friday night? Play Counter Strike?


Written By: Bryan Rite
Shout out to: Jeff :: (www.lucidinteractive.ca) for using OSX&#8217;s Airport to try and generate traffic on our first crack
Also would like to thank Alkaloid Networks for support
To all the noobies: Don&#8217;t call us and asking about how to crack networks.
Like this [...]]]></description>
			<content:encoded><![CDATA[<div class="center">
<a class="internal" title="What else are you gonna do next Friday night? Play Counter Strike?" href="http://docs.lucidinteractive.ca/index.php/Image:48699.png"><img longdesc="/index.php/Image:48699.png" src="http://docs.lucidinteractive.ca/images/0/01/48699.png" alt="What else are you gonna do next Friday night? Play Counter Strike?" width="460" height="275" /></a><br />
What else are you gonna do next Friday night? Play Counter Strike?
</div>
<p><span id="more-25"></span><br />
Written By: <a title="User:Brite" href="http://docs.lucidinteractive.ca/index.php/User:Brite">Bryan Rite</a></p>
<p>Shout out to: <a title="User:Jsmith" href="http://docs.lucidinteractive.ca/index.php/User:Jsmith">Jeff</a> :: <a class="external text" title="http://www.lucidinteractive.ca/" rel="nofollow" href="http://www.lucidinteractive.ca/">(www.lucidinteractive.ca)</a> for using OSX&#8217;s Airport to try and generate traffic on our first crack</p>
<p>Also would like to thank <a class="external text" title="http://www.alkaloid.net" rel="nofollow" href="http://www.alkaloid.net/">Alkaloid Networks</a> for support</p>
<p><strong>To all the noobies:</strong> Don&#8217;t call us and asking about how to crack networks.</p>
<p><a class="external text" title="http://jeffsey.com/files/docupedia-hacking-help.wav" rel="nofollow" href="http://jeffsey.com/files/docupedia-hacking-help.wav">Like this guy actually did</a></p>
<p>Date: 11/23/2005</p>
<table id="toc" class="toc" border="0">
<tbody>
<tr>
<td>
<div id="toctitle">
<h2>Contents</h2>
<p><span class="toctoggle">[<a id="togglelink" class="internal" href="javascript:toggleToc()">hide</a>]</span></div>
<ul>
<li class="toclevel-1"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Overview"><span class="tocnumber">1</span> <span class="toctext">Overview</span></a></li>
<li class="toclevel-1"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Pre-Installation"><span class="tocnumber">2</span> <span class="toctext">Pre-Installation</span></a>
<ul>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Checklist"><span class="tocnumber">2.1</span> <span class="toctext">Checklist</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#WEP_Crackin"><span class="tocnumber">3</span> <span class="toctext">WEP Crackin</span></a>
<ul>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Theory"><span class="tocnumber">3.1</span> <span class="toctext">Theory</span></a></li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Setting_up_your_tools"><span class="tocnumber">3.2</span> <span class="toctext">Setting up your tools</span></a></li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Finding_the_Network"><span class="tocnumber">3.3</span> <span class="toctext">Finding the Network</span></a></li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Capturing_IVs"><span class="tocnumber">3.4</span> <span class="toctext">Capturing IVs</span></a></li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Using_IVs_to_Decrypt_the_Key"><span class="tocnumber">3.5</span> <span class="toctext">Using IVs to Decrypt the Key</span></a></li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Anticipated_Problems"><span class="tocnumber">3.6</span> <span class="toctext">Anticipated Problems</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#WPA_Crackin"><span class="tocnumber">4</span> <span class="toctext">WPA Crackin</span></a>
<ul>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Differences"><span class="tocnumber">4.1</span> <span class="toctext">Differences</span></a></li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#WPA_Flavours"><span class="tocnumber">4.2</span> <span class="toctext">WPA Flavours</span></a></li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#The_Handshake"><span class="tocnumber">4.3</span> <span class="toctext">The Handshake</span></a></li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Dictionary_Brute_Force"><span class="tocnumber">4.4</span> <span class="toctext">Dictionary Brute Force</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Using_Aireplay"><span class="tocnumber">5</span> <span class="toctext">Using Aireplay</span></a>
<ul>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#WEP_Attacks"><span class="tocnumber">5.1</span> <span class="toctext">WEP Attacks</span></a>
<ul>
<li class="toclevel-3"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#ARP_Injection"><span class="tocnumber">5.1.1</span> <span class="toctext">ARP Injection</span></a></li>
<li class="toclevel-3"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Interactive_Packet_Replay"><span class="tocnumber">5.1.2</span> <span class="toctext">Interactive Packet Replay</span></a></li>
<li class="toclevel-3"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Fake_Authentication_Attack"><span class="tocnumber">5.1.3</span> <span class="toctext">Fake Authentication Attack</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#WPA_Attacks"><span class="tocnumber">5.2</span> <span class="toctext">WPA Attacks</span></a>
<ul>
<li class="toclevel-3"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Deauthentication_Attack"><span class="tocnumber">5.2.1</span> <span class="toctext">Deauthentication Attack</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1"><a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Conclusion"><span class="tocnumber">6</span> <span class="toctext">Conclusion</span></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><script type="text/javascript"><!--
 if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); }
// --></script></p>
<h2>Overview</h2>
<p>This is a good one, let me tell you! There can be so many issues setting up your box to actually get the tools working and i&#8217;m not even touching on that, but if you can get everything to work, you&#8217;ll be cracking wireless networks like a pro in no time.</p>
<p><small>Disclaimer: I&#8217;m not a pro.</small></p>
<h2>Pre-Installation</h2>
<h3>Checklist</h3>
<ul>
<li>Tools
<ul>
<li>I&#8217;ve been really, really successful with basically one tool set called <a class="external text" title="http://www.cr0.net:8040/code/network/" rel="nofollow" href="http://www.cr0.net:8040/code/network/">AirCrack</a>.  Download that.</li>
<li><a class="external text" title="http://www.kismetwireless.net/" rel="nofollow" href="http://www.kismetwireless.net/">Kismet</a> is an excellent tool for sniffing out wireless networks as well and could prove useful.</li>
</ul>
</li>
<li>An encrypted wireless network.
<ul>
<li>We&#8217;ll be working on WEP encrypted networks as well as static passkey WPA or WPA-PSK</li>
</ul>
</li>
</ul>
<p><em>Note:</em> Make sure you can get your card into monitor mode (sometimes called raw monitor or rfmon).  <strong>This is VERY important</strong></p>
<h2>WEP Crackin</h2>
<h3>Theory</h3>
<p>A little theory first. WEP is a really crappy and old encryption techinque to secure a wireless connection. A 3-byte vector, called an <em>Initalization Vector</em> or <em>IV</em>, is prepended onto packets and its based on a pre-shared key that all the authenticated clients know&#8230; think of it as the network key you need to authenticate.</p>
<p>Well if its on <small>(almost)</small> <em>every</em> packet generated by the client or AP, then if we collect enough of them, like a few hundred thousand, we should be able to dramatically reduce the keyspace to check and brute force becomes a realistic proposition.</p>
<p>A couple of things will cause us some problems.</p>
<ul>
<li>If the key is not static, then you&#8217;ll mix up all your IVs and it&#8217;ll take forever to decrypt the key.</li>
<li>Theres no traffic, therefore no packets &#8211; we can fix this.</li>
<li>MAC Address Filtering &#8211; we can fix this too.</li>
</ul>
<h3>Setting up your tools</h3>
<p>We&#8217;re gonna need 3 or 4 shells open, we have 5 tools:</p>
<ul>
<li>airodump &#8211; Grabbing IVs</li>
<li>aircrack &#8211; Cracking the IVs</li>
<li>airdecap &#8211; Decoding captured packets</li>
<li>airreplay &#8211; (My Favourite) Packet injector to attack APs.</li>
<li>kismet &#8211; Network Sniffer, can grab IVs as well.</li>
</ul>
<p>For a standard WEP hack we&#8217;ll usally only need airodump, aircrack, and kismet (server and client). If we run into some problems we might have to use airreplay to fiddle about.</p>
<p>I&#8217;ll leave you to config all these tools up, for the most part they should just be defaults with the exception of kismet.</p>
<h3>Finding the Network</h3>
<p>First step is we need to find a netork to crack. Start up kismet and start sniffing for APs. Leave it on for a bit so that it can discover all the important information about the networks around. What we want from kismet is:</p>
<ul>
<li>Encryption type: Is it WEP 64-bit? 128-bit?</li>
<li>What channel is it on? Can <em>greatly</em> speed up IV collection.</li>
<li>AP&#8217;s IP Address</li>
<li>BSSID</li>
<li>ESSID</li>
</ul>
<p>All this info isn&#8217;t required but the more you have, the more options you have later to crack and sniff. We can get a lot of this from airodump as well but I find the <em>channel</em> is important.</p>
<h3>Capturing IVs</h3>
<p>Alright, we know what we wanna crack, so lets start capturing packets. You can use kismet to capture files but I prefer airodump because it keeps a running count of all the IVs I&#8217;ve captured and I can crack and airodump will automatically update aircrack with new IVs as it finds them.</p>
<p><em>Note:</em> kimset can interfere with airodump so make sure you close it down before starting airodump.</p>
<p>Airodump is pretty straight forward with its command line looking something like this:</p>
<pre> ./airodump &lt;interface&gt; &lt;output prefix&gt; [channel] [IVs flag]</pre>
<ul>
<li>interface is your wireless interface to use &#8211; required.</li>
<li>output prefix is just the filname it&#8217;ll prepend, &#8211; required.</li>
<li>channel is the specific channel we&#8217;ll scan, leave blank or use 0 to channel hop.</li>
<li>IVs flag is either 0 or 1, depending on whether you want <em>all</em> packets logged, or just IVs.</li>
</ul>
<p>My wireless card is ath0, output prefix i&#8217;ll use &#8220;lucid&#8221;, the channel we sniffed from kismet is 6, and IVs flag is 1 because we just want IVs. So we run:</p>
<pre> ./airodump ath0 lucid 6 1</pre>
<p>Airodump will come up with a graph showing us all the APs and their relevant info, as well as client stations connected to any of the APs.</p>
<pre> BSSID              PWR  Beacons   # Data  CH  MB  ENC   ESSID

 00:23:1F:55:04:BC   76    21995   213416   6  54. WEP   hackme 

 BSSID              STATION            PWR  Packets  Probes

 00:23:1F:55:04:BC  00:12:5B:4C:23:27  112     8202  hackme
 00:23:1F:55:04:BC  00:12:5B:DA:2F:6A   21     1721  hackme</pre>
<p>The second line shows us some info about the AP as well as the number of beacons and data packets we&#8217;ve collected from the AP. The two last lines show us two authenticated clients. Where they are connected to and the packets they are sending. We won&#8217;t use this client info in a straight theory hack but in practice we&#8217;ll need this info to actively attack the AP.</p>
<p>This step may take a long time or could be very short. It depends how busy the AP is and how many IVs we are collecting. What we are doing is populating a file &#8220;lucid.ivs&#8221; with all the IV important packet info. Next, we&#8217;ll feed this to aircrack. To move onto the next step, we&#8217;ll want at least 100,000 packets (under # Data in airodump) but probably more.</p>
<h3>Using IVs to Decrypt the Key</h3>
<p>Ok, pretend you have enough IVs now to attempt a crack. Goto a new terminal (without stopping airodump &#8211; remember it&#8217;ll autoupdate as new IVs are found) and we&#8217;ll start aircrack. It looks something like this:</p>
<pre> ./aircrack [options] &lt;input file&gt;</pre>
<p>There are a lot of options so you can look them up yourself, i&#8217;ll be using common ones here that should get you a crack. Our input file is &#8220;lucid.ivs&#8221;, the options we will use are:</p>
<ul>
<li>-a 1 : forces a WEP attack mode (2 forces WPA)</li>
<li>either -b for the bssid or -e for the essid : whichever is easier to type but I like using a BSSID because its more unique.</li>
<li>-n 64 or -n 128 : WEP key length, omit if not known by now.</li>
</ul>
<p>So our command will look like:</p>
<pre> ./aircrack -a 1 -b 00:23:1F:55:04:BC -n 128 lucid.ivs</pre>
<p>and off it goes, resembling the picture from the top. Keep an eye on the Unique IV count as it should increase if airodump is still running. For all intents and purposes you are done. That&#8217;ll pop open most old wireless routers with some traffic on them.</p>
<h3>Anticipated Problems</h3>
<p>There are lots of problems that can come up that will make the above fail, or work very slowly.</p>
<ul>
<li>No traffic
<ul>
<li>No traffic is being passed, therefore you can&#8217;t capture any IVs.</li>
<li>What we need to do is inject some special packets to trick the AP into broadcasting.</li>
<li>Covered below in <a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#WEP_Attacks">WEP Attacks</a></li>
</ul>
</li>
<li>MAC Address filtering
<ul>
<li>AP is only responding to connected clients.  Probably because MAC address filtering is on.</li>
<li>Using airodumps screen you can find the MAC address of authenticated users so just change your MAC to theirs and continue on.</li>
<li>Using the -m option you can specify aircrack to filter packets by MAC Address, ex. -m 00:12:5B:4C:23:27</li>
</ul>
</li>
<li>Can&#8217;t Crack even with tons of IVs
<ul>
<li>Some of the statistical attacks can create false positives and lead you in the wrong direction.</li>
<li>Try using -k N (where N=1..17) or -y to vary your attack method.</li>
<li>Increase the fudge factor. By default it is at 2, by specifying -f N (where N&gt;=2) will increase your chances of a crack, but take much longer. I find that doubling the previous fudge factor is a nice progression if you are having trouble.</li>
</ul>
</li>
<li>Still Nothing
<ul>
<li>Find the AP by following the signal strength and ask the admin what the WEP key is.</li>
</ul>
</li>
</ul>
<h2>WPA Crackin</h2>
<h3>Differences</h3>
<p>WPA is an encryption algorithm that takes care of a lot of the vunerablities inherent in WEP. WEP is, by design, flawed. No matter how good or crappy, long or short, your WEP key is, it can be cracked. WPA is different. A WPA key <em>can</em> be made good enough to make cracking it unfeasible. WPA is also a little more cracker friendly. By capturing the right type of packets, you can do your cracking offline. This means you only have to be near the AP for a matter of seconds to get what you need. Advantages and disadvantages.</p>
<h3>WPA Flavours</h3>
<p>WPA basically comes in two flavours RADIUS or PSK.  PSK is crackable, RADIUS is not so much.</p>
<p>PSK uses a user defined password to initialize the TKIP, temporal key integrity protocol. There is a password and the user is involved, for the most part that means it is flawed. The TKIP is not really crackable as it is a per-packet key but upon the initialization of the TKIP, like during an authentication, we get the password (well the PMK anyways). A robust dictionary attack will take care of a lot of consumer passwords.</p>
<p>Radius involves physical transferring of the key and encrypted channels blah blah blah, look it up to learn more about it but 90% of commerical APs do not support it, it is more of an enterprise solution then a consumer one.</p>
<h3>The Handshake</h3>
<p>The WPA handshake was designed to occur over insecure channels and in plaintext so the password is not actually sent across. There are some fancy dancy algorithms in the background that turn it into a primary master key, PMK, and the like but none of that really matters cause the PMK is enough to connect to the network.</p>
<p>The only step we need to do is capture a full authenication handshake from a real client and the AP. This can prove tricky without some packet injection, but if you are lucky to capture a <strong>full</strong> handshake, then you can leave and do the rest of the cracking at home.</p>
<p>We can force an authenication handshake by launching a <a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Deauthentication_Attack">Deauthentication Attack</a>, but <strong>only</strong> if there is a real client already connected (you can tell in airodump).  If there are no connected clients, you&#8217;re outta luck.</p>
<p>Like for WEP, we want to know the channel the WPA is sitting on, but the airodump command is slightly different. We don&#8217;t want just IVs so we don&#8217;t specify an IV flag. This will produce &#8220;lucid.cap&#8221; instead of &#8220;lucid.ivs&#8221;. Assume WPA is on channel 6 and wireless interface is ath0.</p>
<pre> ./airodump ath0 lucid 6</pre>
<h3>Dictionary Brute Force</h3>
<p>The most important part of brute forcing a WPA password is a good dictionary.  Check out <a class="external free" title="http://www.openwall.com/wordlists/" rel="nofollow" href="http://www.openwall.com/wordlists/">http://www.openwall.com/wordlists/</a> for a &#8216;<strong>really&#8217;</strong> good one. It costs money, but its the biggest and best I&#8217;ve ever seen (40 Million words, no duplicates, one .txt file). There is also a free reduced version from the same site but i&#8217;m sure resourceful people can figure out where to get a good dictionary from.</p>
<p>When you have a good dictionary the crack is a simple brute force attack:</p>
<pre> ./aircrack -a 2 -b 00:23:1F:55:04:BC -w /path/to/wordlist</pre>
<p>Either you&#8217;ll get it or you won&#8217;t&#8230; depends on the strength of the password and if a dictionary attack can crack it.</p>
<h2>Using Aireplay</h2>
<p>Aireplay is the fun part.  You get to manipulate packets to trick the network into giving you what you want.</p>
<h3>WEP Attacks</h3>
<p>Attacks used to create more traffic on WEP networks to get more IVs.</p>
<h4>ARP Injection</h4>
<p>ARP Replay is a classic way of getting more IV traffic from the AP. It is the turtle. Slow but steady and almost always works. We need the BSSID of the AP and the BSSID of an associated client. If there are no clients connected, it is possible to create one with <em>another</em> WEP attack explained below: <a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Fake_Authentication_Attack">Fake Authentication Attack</a>.</p>
<p>With airodump listening, we attack:</p>
<pre> ./aireplay -3 -b &lt;AP MAC Address&gt; -h &lt;Client MAC Address&gt; ath0</pre>
<p><em>Note:</em> The -3 specifys the type of attack (3=ARP Replay).</p>
<p>This will continue to run, and airodump, listening fron another terminal, will pick up any reply IVs.</p>
<h4>Interactive Packet Replay</h4>
<p>Interactive Packet Reply is quite a bit more advanced and requires capturing packets and constructing your own. It can prove more effective then simple ARP requests but I won&#8217;t get into packet construction here.</p>
<p>A useful attack you might try is the re-send all data attack, basically you are asking the AP to re-send you everything. This only works if the AP re-encrypts the packets before sending them again (and therefore giving you a new IV). Some APs do, some don&#8217;t.</p>
<pre> aireplay -2 -b &lt;AP MAC&gt; -h &lt;Client MAC&gt; -n 100 -p 0841 -c FF:FF:FF:FF:FF:FF ath0</pre>
<h4>Fake Authentication Attack</h4>
<p>This attack won&#8217;t generate any more traffic but it does create an associative client MAC Address useful for the above two attacks. Its definately not as good as having a real, connected client, but you gots to do what you gots to do.</p>
<p>This is done easiest with another machine because we need a new MAC address but if you can manually change your MAC then that&#8217;ll work too. We&#8217;ll call your new MAC address &#8220;Fake MAC&#8221;.</p>
<p>Now most APs need clients to reassociate every 30 seconds or so or they think they&#8217;re disconnected. This is pretty arbitrary but I use it and it has worked but if your Fake MAC gets disconnected, reassociate quicker. We need <strong>both</strong> the essid and bssid and our Fake MAC.</p>
<pre> ./aireplay -1 30 -e '&lt;ESSID&gt;' -a &lt;BSSID&gt; -h &lt;Fake MAC&gt; ath0</pre>
<p>If successful, you should see something like this:</p>
<pre> 23:47:29  Sending Authentication Request
 23:47:29  Authentication successful
 23:47:30  Sending Association Request
 23:47:30  Association successful :-)</pre>
<p>Awesome! Now you can use the above two attacks even though there were no clients connected in the first place! If it fails, there may be MAC Address Filtering on so if you really want to use this, you&#8217;ll have to sniff around until a client provides you with a registered MAC to fake.</p>
<h3>WPA Attacks</h3>
<p>So far, the only way to really crack WPA is to force a re-authentication of a <em>valid</em> client.  We need a real, actively connected client to break WPA.  You might have to wait a while.</p>
<h4>Deauthentication Attack</h4>
<p>This is a simple and very effective attack. We just force the connected client to disconnect then we capture the re-connect and authentication, saves time so we don&#8217;t have to wait for the client to do it themselves (a tad less &#8220;waiting outside in the car&#8221; creepiness as well). With airodump running in another console, your attack will look something like this:</p>
<pre> aireplay -0 5 -a &lt;AP MAC&gt; -c &lt;Client MAC&gt; ath0</pre>
<p>After a few seconds the re-authentication should be complete and we can attempt to <a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks#Dictionary_Brute_Force"> Dictionary Brute Force</a> the PMK.</p>
<h2>Conclusion</h2>
<p>Well thats that.  APs crack fairly often but sometimes there is just nothing you can do.  <em>Obviously</em> you are not allowed to illegally crack other people&#8217;s wireless connections, this is purely for penetration testing purposes and some fun.</p>
<hr />&#8211;<a title="User:Brite" href="http://docs.lucidinteractive.ca/index.php/User:Brite">- Bryan Rite</a> 13:57, 24 Nov 2005 (PST)</p>
<p>Via: <a href="http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks">http://docs.lucidinteractive.ca</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/how-to-crack-wep-and-wpa/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
<enclosure url="http://jeffsey.com/files/docupedia-hacking-help.wav" length="2457004" type="audio/x-wav" />
		</item>
		<item>
		<title>Trillian Passwords</title>
		<link>http://www.whatsmypass.com/trillian-passwords</link>
		<comments>http://www.whatsmypass.com/trillian-passwords#comments</comments>
		<pubDate>Thu, 27 Mar 2008 16:50:54 +0000</pubDate>
		<dc:creator>Dev Team</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Trillian]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[xor encryption]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=17</guid>
		<description><![CDATA[The trillian passwords are stored separately in .ini files (i.e. msn.ini,yahoo.ini aim.ini etc). These are stored in your trillian directory (usually c:\program files\trillian\) in the &#8220;users&#8221; folder.
Within the users folder, the ini files will either be in a folder called &#8220;default&#8221; or a folder named after your username.
c:\program files\trillian\users\default\msn.ini
msn.ini contains:

[msn]
auto reconnect=1
save passwords=1
idle time=15
show buddy status=1
port=1863
server=messenger.hotmail.com
last [...]]]></description>
			<content:encoded><![CDATA[<p>The trillian passwords are stored separately in .ini files (i.e. msn.ini,yahoo.ini aim.ini etc). These are stored in your trillian directory (usually c:\program files\trillian\) in the &#8220;users&#8221; folder.</p>
<p>Within the users folder, the ini files will either be in a folder called &#8220;default&#8221; or a folder named after your username.</p>
<p>c:\program files\trillian\users\default\msn.ini<span id="more-15"></span></p>
<p>msn.ini contains:<br />
<!--c1--></p>
<p class="codemain"><!--ec1--><em>[msn]<br />
auto reconnect=1<br />
save passwords=1<br />
idle time=15<br />
show buddy status=1<br />
port=1863<br />
server=messenger.hotmail.com<br />
last msn=haxor@hotmail.com<br />
connect num=10<br />
connect sec=60<br />
save status=1<br />
ft port=6891<br />
[profile 0]<br />
name=haxor@hotmail.com<br />
password=A347F2B74EE9A9F6</em><!--c2--></p>
<p><!--ec2--></p>
<p>&#8220;password=<font color="#ff0000">A347F2B74EE9A9F6</font>&#8221; is our encrypted password. The encryption used here is a simple xor encryption of the original password, which is then hexxed.</p>
<p>A3 47 F2 B7 4E E9 A9 F6</p>
<p>Ok, when beating an xor encryption&#8230;you need to know what each letter of the original password was xor&#8217;d with. Thankfully, there is an easy way to find this out &#8211; so long as you know the original pass. And, as you may guess &#8211; knowing the xor key that trillian uses to encrypt passwords, is also the key to being able to decrypt passwords that we don&#8217;t know!</p>
<p>First, we need to know what the hex value &#8220;A3&#8243; (the first value of the encrypted password) represents in standard numbers. The value of &#8220;A3&#8243; is 163. The first letter of my password is &#8220;P&#8221;, therefore &#8211; to find out what trillian xor&#8217;d with my original &#8220;P&#8221; in order to get 163 &#8211; we do the following calculation:</p>
<p>Numeric value of A3 = 163<br />
Numeric (ascii) value of P = 80</p>
<p>Calculation: 80 XOR 163 = 243</p>
<p>243 is the number that the first value of your password is xor&#8217;d with. We can test this by doing the process in reverse:</p>
<p>First letter of password = P<br />
Ascii value of P = 80<br />
XOR key for 1st char = 243<br />
Calculation = 80 xor 243 = 163<br />
163 in Hex = A3<br />
Encrypted password so far: A3<br />
Go on to 2nd character&#8230;and so on&#8230;</p>
<p>The xor key numbers for each char are (in order):</p>
<p>243, 038, 129, 196, 057, 134, 219, 146, 113, 163, 185, 230, 083, 122, 149, 124, 000, 000, 000, 000, 000, 000, 255, 000, 000, 128, 000, 000, 000, 128, 128, 000, 255, 000, 000, 000, 128, 000, 128, 000, 128, 128, 000, 000, 000, 128, 255, 000, 128, 000, 255, 000, 128, 128, 128, 000, 085, 110, 097, 098, 108, 101, 032, 116, 111, 032, 114, 101, 115, 111, 108, 118, 101, 032, 072, 084, 084, 080, 032, 112, 114, 111, 120, 000</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/trillian-passwords/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Yahoo Messenger</title>
		<link>http://www.whatsmypass.com/yahoo-messenger</link>
		<comments>http://www.whatsmypass.com/yahoo-messenger#comments</comments>
		<pubDate>Thu, 27 Mar 2008 14:14:39 +0000</pubDate>
		<dc:creator>Dev Team</dc:creator>
				<category><![CDATA[Password Info]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[Messenger]]></category>
		<category><![CDATA[Private]]></category>
		<category><![CDATA[USER]]></category>

		<guid isPermaLink="false">http://www.whatsmypass.com/?p=16</guid>
		<description><![CDATA[The old Yahoo Messenger, i think prior to 7.0 ,used to keep the encrypted password in the registry HKEY_CURRENT_USER\Software\Yahoo\Pager under a key called
&#8220;EOptions String&#8221; this can be decrypted by using Yahoo&#8217;s own dll located in the Yahoo Install directory &#8220;ycrwin32.dll&#8221;
below is some VB code that demonstrates how to make a call to this dll from [...]]]></description>
			<content:encoded><![CDATA[<p>The old Yahoo Messenger, i think prior to 7.0 ,used to keep the encrypted password in the registry HKEY_CURRENT_USER\Software\Yahoo\Pager under a key called<br />
&#8220;EOptions String&#8221; this can be decrypted by using Yahoo&#8217;s own dll located in the Yahoo Install directory &#8220;ycrwin32.dll&#8221;<span id="more-14"></span></p>
<p>below is some VB code that demonstrates how to make a call to this dll from what i gather is that versions above either 7.0 or 7.5 use a new method to store the password im not sure of the encryption used but the pass is still in the registry under a new key called &#8216;ETS&#8217; this reg entry along with the user ID under the &#8220;Yahoo! User ID&#8221; key  can be exported from the registry copied from one computer to another and allow you to login as that user</p>
<p>declare &#8220;ycrwin32.dll&#8221; as YCRYPTO<br />
text1.text is the username/yahoo id<br />
text2.text  will be the eoptions/encrypted password</p>
<p>[code]</p>
<p>Public Sub Grab(RegistryKey As String, RegistryInformation As String, Grab As Integer)<br />
Dim WSHShell, RegTemp<br />
Set WSHShell = CreateObject("WScript.Shell")<br />
If Grab = 1 Then<br />
RegTemp = WSHShell.RegRead(RegistryKey)<br />
Text1.Text = RegTemp<br />
End If<br />
End Sub</p>
<p>Public Sub Grab1(RegistryKey As String, RegistryInformation As String, Grab1 As Integer)<br />
Dim WSHShell, RegTemp<br />
Set WSHShell = CreateObject("WScript.Shell")<br />
If Grab1 = 1 Then<br />
RegTemp = WSHShell.RegRead(RegistryKey)<br />
Text2.Text = RegTemp<br />
End If<br />
End Sub</p>
<p>Private Sub Command2_Click()<br />
Dim ycc As New YCrypto<br />
Call ycc.Init(1, 1, Text1.Text)<br />
Text3.Text = ycc.Decrypt(Text2.Text)<br />
End Sub<br />
Private Sub Command1_Click()<br />
On Error GoTo error<br />
Call Grab("HKEY_CURRENT_USER\Software\Yahoo\pager\Yahoo! User ID")<br />
[/code]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whatsmypass.com/yahoo-messenger/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
