cred-investigator/main.cpp
neko.py 725f88fa6f Ready to go
1. Code in place to enumerate the windows cred store and dump credential materials
2. Naive handling for wide characters
3. This probably could have been in C lol
4. Who needs braces? lol
2019-03-10 18:30:05 -07:00

41 lines
867 B
C++

#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <windows.h>
#include <wincred.h>
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);
return 0;
}