#include #include #include #include #include #include #include void print_bytes(const DWORD length, const LPBYTE bytes) { if (length == 0) return; std::cout << "\t"; std::stringstream ss; for (DWORD i = 0; i < length; ++i) ss << bytes[i]; auto s = ss.str(); if (s.c_str()[1] == '\0') for (size_t i = 0; i < s.length(); i += 2) std::cout << s.at(i); else std::cout << ss.str(); std::cout << std::endl; } int main(int argc, char* argv[]) { DWORD count; PCREDENTIAL *creds = 0x0; CredEnumerate(0x0, CRED_ENUMERATE_ALL_CREDENTIALS, &count, &creds); for (auto cred = creds; *cred != nullptr; ++cred) { std::wcout << (*cred)->TargetName << L":" << std::endl; print_bytes((*cred)->CredentialBlobSize, (*cred)->CredentialBlob); } CredFree(creds); std::cout << "Press any key to continue..." << std::endl; std::cout.flush(); _getch(); return 0; }