Эм а че там... юзаются функции стандартные виндовые вот читай http://msdn.microsoft.com/en-us/library/aa374789(v=VS.85).aspx http://msdn.microsoft.com/en-us/library/aa374731(v=VS.85).aspx#credentials_management_functions ну прокоментить лан... void EnumerateDotNetPassportPassword() берется какой-то GUID char *strSalt={"82BD0E67-9FEA-4748-8672-D5EFE5B779B0"}; из него делается ентрапия для расшифровки for(int i=0; i< 37; i++) tmpSalt = (short int)(strSalt * 4); каждая буковка кода умножается на 4 и сохраняется в массиве в виде 2х байт потом вызывается функция CredEnumerate, которая перечисляет учетные данные от учетной группы пользователя циклом проходимся по записям вытаскиваем пароли в бинарном виде и вызываем CryptUnprotectData, которая дешифрует и делает проверку целостности данных в структуре DATA_BLOB (обычно, единственный пользователь, который может дешифровать данные, является пользователем с теми же самыми удостоверениями защиты при входе в систему как пользователь, который зашифровал данные. Кроме того, шифрование и дешифрование должны быть сделаны на том же самом компьютере) и выводим результат... дальше аналогично можешь сам разобрать MSDN и переводчик тебе в руки