├── PwnedPasswordsDLL-API.sln ├── PwnedPasswordsDLL-API ├── PwnedPasswordsDLL-API.cpp ├── PwnedPasswordsDLL-API.vcxproj ├── PwnedPasswordsDLL-API.vcxproj.filters ├── PwnedPasswordsDLL-API.vcxproj.user ├── ReadMe.txt ├── dllmain.cpp ├── stdafx.cpp ├── stdafx.h ├── targetver.h └── x64 │ ├── Debug │ ├── PwnedPas.2778C83C.tlog │ │ ├── CL.command.1.tlog │ │ ├── CL.read.1.tlog │ │ ├── CL.write.1.tlog │ │ ├── PwnedPasswordsDLL-API.lastbuildstate │ │ ├── link-cvtres.read.1.tlog │ │ ├── link-cvtres.write.1.tlog │ │ ├── link-rc.read.1.tlog │ │ ├── link-rc.write.1.tlog │ │ ├── link.command.1.tlog │ │ ├── link.read.1.tlog │ │ └── link.write.1.tlog │ ├── PwnedPasswordsDLL-API.log │ ├── PwnedPasswordsDLL-API.obj │ ├── PwnedPasswordsDLL-API.pch │ ├── dllmain.obj │ ├── stdafx.obj │ ├── vc141.idb │ └── vc141.pdb │ └── Release │ ├── PwnedPas.2778C83C.tlog │ ├── CL.command.1.tlog │ ├── CL.read.1.tlog │ ├── CL.write.1.tlog │ ├── PwnedPasswordsDLL-API.lastbuildstate │ ├── PwnedPasswordsDLL-API.write.1u.tlog │ ├── link.command.1.tlog │ ├── link.delete.1.tlog │ ├── link.read.1.tlog │ └── link.write.1.tlog │ ├── PwnedPasswordsDLL-API.log │ ├── PwnedPasswordsDLL-API.obj │ ├── PwnedPasswordsDLL-API.pch │ ├── dllmain.obj │ ├── stdafx.obj │ └── vc141.pdb ├── README.md └── x64 └── Release ├── PwnedPasswordsDLL-API.dll ├── PwnedPasswordsDLL-API.exp ├── PwnedPasswordsDLL-API.iobj ├── PwnedPasswordsDLL-API.ipdb ├── PwnedPasswordsDLL-API.lib └── PwnedPasswordsDLL-API.pdb /PwnedPasswordsDLL-API.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26403.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PwnedPasswordsDLL-API", "PwnedPasswordsDLL-API\PwnedPasswordsDLL-API.vcxproj", "{2778C83C-1B47-4884-A39E-CC16AD27BF94}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {2778C83C-1B47-4884-A39E-CC16AD27BF94}.Debug|x64.ActiveCfg = Release|x64 17 | {2778C83C-1B47-4884-A39E-CC16AD27BF94}.Debug|x64.Build.0 = Release|x64 18 | {2778C83C-1B47-4884-A39E-CC16AD27BF94}.Debug|x86.ActiveCfg = Debug|Win32 19 | {2778C83C-1B47-4884-A39E-CC16AD27BF94}.Debug|x86.Build.0 = Debug|Win32 20 | {2778C83C-1B47-4884-A39E-CC16AD27BF94}.Release|x64.ActiveCfg = Release|x64 21 | {2778C83C-1B47-4884-A39E-CC16AD27BF94}.Release|x64.Build.0 = Release|x64 22 | {2778C83C-1B47-4884-A39E-CC16AD27BF94}.Release|x86.ActiveCfg = Release|Win32 23 | {2778C83C-1B47-4884-A39E-CC16AD27BF94}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/PwnedPasswordsDLL-API.cpp: -------------------------------------------------------------------------------- 1 | // PwnedPasswordsDLL-API.cpp : Defines the exported functions for the DLL application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | 7 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/PwnedPasswordsDLL-API.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {2778C83C-1B47-4884-A39E-CC16AD27BF94} 24 | Win32Proj 25 | PwnedPasswordsDLLAPI 26 | 10.0.15063.0 27 | 28 | 29 | 30 | DynamicLibrary 31 | true 32 | v141 33 | Unicode 34 | 35 | 36 | DynamicLibrary 37 | false 38 | v141 39 | true 40 | Unicode 41 | 42 | 43 | DynamicLibrary 44 | true 45 | v141 46 | Unicode 47 | 48 | 49 | DynamicLibrary 50 | false 51 | v141 52 | true 53 | Unicode 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | true 75 | 76 | 77 | true 78 | $(LibraryPath);C:\Users\Jackson Van Dyke\OneDrive\Documents\Personal\Programming\Programs\Collection\CryptoPP\x64\Output\Release;C:\Users\Jackson Van Dyke\OneDrive\Documents\Personal\Programming\Programs\PwnedPasswordsDLL\libcurl-master\lib\static-debug-x64 79 | $(IncludePath);C:\Users\Jackson Van Dyke\OneDrive\Documents\Personal\Programming\Programs\Collection\CryptoPP\include;C:\Users\Jackson Van Dyke\OneDrive\Documents\Personal\Programming\Programs\PwnedPasswordsDLL\libcurl-master\include\curl 80 | 81 | 82 | false 83 | 84 | 85 | false 86 | $(LibraryPath) 87 | $(IncludePath) 88 | $(ExecutablePath) 89 | 90 | 91 | 92 | Use 93 | Level3 94 | Disabled 95 | WIN32;_DEBUG;_WINDOWS;_USRDLL;PWNEDPASSWORDSDLLAPI_EXPORTS;%(PreprocessorDefinitions) 96 | 97 | 98 | Windows 99 | 100 | 101 | 102 | 103 | Use 104 | Level3 105 | Disabled 106 | _DEBUG;_WINDOWS;_USRDLL;PWNEDPASSWORDSDLLAPI_EXPORTS;%(PreprocessorDefinitions);CURL_STATICLIB 107 | MultiThreadedDebug 108 | 109 | 110 | Windows 111 | libcurl_a_debug.lib;cryptlib.lib;%(AdditionalDependencies) 112 | 113 | 114 | 115 | 116 | Level3 117 | Use 118 | MaxSpeed 119 | true 120 | true 121 | WIN32;NDEBUG;_WINDOWS;_USRDLL;PWNEDPASSWORDSDLLAPI_EXPORTS;%(PreprocessorDefinitions) 122 | 123 | 124 | Windows 125 | true 126 | true 127 | 128 | 129 | 130 | 131 | Level3 132 | Use 133 | MaxSpeed 134 | true 135 | true 136 | CURL_STATICLIB;NDEBUG;_WINDOWS;_USRDLL;PWNEDPASSWORDSDLLAPI_EXPORTS;%(PreprocessorDefinitions) 137 | MultiThreaded 138 | 139 | 140 | Windows 141 | true 142 | true 143 | %(AdditionalDependencies) 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | false 156 | 157 | 158 | false 159 | 160 | 161 | false 162 | 163 | 164 | false 165 | 166 | 167 | 168 | 169 | 170 | Create 171 | Create 172 | Create 173 | Create 174 | 175 | 176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/PwnedPasswordsDLL-API.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | 30 | Source Files 31 | 32 | 33 | Source Files 34 | 35 | 36 | Source Files 37 | 38 | 39 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/PwnedPasswordsDLL-API.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | DYNAMIC LINK LIBRARY : PwnedPasswordsDLL-API Project Overview 3 | ======================================================================== 4 | 5 | AppWizard has created this PwnedPasswordsDLL-API DLL for you. 6 | 7 | This file contains a summary of what you will find in each of the files that 8 | make up your PwnedPasswordsDLL-API application. 9 | 10 | 11 | PwnedPasswordsDLL-API.vcxproj 12 | This is the main project file for VC++ projects generated using an Application Wizard. 13 | It contains information about the version of Visual C++ that generated the file, and 14 | information about the platforms, configurations, and project features selected with the 15 | Application Wizard. 16 | 17 | PwnedPasswordsDLL-API.vcxproj.filters 18 | This is the filters file for VC++ projects generated using an Application Wizard. 19 | It contains information about the association between the files in your project 20 | and the filters. This association is used in the IDE to show grouping of files with 21 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the 22 | "Source Files" filter). 23 | 24 | PwnedPasswordsDLL-API.cpp 25 | This is the main DLL source file. 26 | 27 | When created, this DLL does not export any symbols. As a result, it 28 | will not produce a .lib file when it is built. If you wish this project 29 | to be a project dependency of some other project, you will either need to 30 | add code to export some symbols from the DLL so that an export library 31 | will be produced, or you can set the Ignore Input Library property to Yes 32 | on the General propert page of the Linker folder in the project's Property 33 | Pages dialog box. 34 | 35 | ///////////////////////////////////////////////////////////////////////////// 36 | Other standard files: 37 | 38 | StdAfx.h, StdAfx.cpp 39 | These files are used to build a precompiled header (PCH) file 40 | named PwnedPasswordsDLL-API.pch and a precompiled types file named StdAfx.obj. 41 | 42 | ///////////////////////////////////////////////////////////////////////////// 43 | Other notes: 44 | 45 | AppWizard uses "TODO:" comments to indicate parts of the source code you 46 | should add to or customize. 47 | 48 | ///////////////////////////////////////////////////////////////////////////// 49 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/dllmain.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DLLMain.cpp is the code for the custom password filter that is to be utilised by 3 | * LSA to check the validity of password requests. 4 | * The DLL sends an API request to the PwnedPasswords API, and subsequently selects 5 | * whether or not the password is valid, based on whether or not it exists as a 6 | * previously breached password. 7 | * The code utilises k-Anonymity by querying the API with the first five characters of the 8 | * prospective password hash, then checks to see if the remaining suffix exists in the 9 | * return from the API. This way, any external system can only possibly receive the first 10 | * five characters in an SHA1 hash. 11 | * 12 | * Content Author: JacksonVD 13 | * Contact: jacksonvd.com 14 | * Date Written: 25-02-18 15 | * Last Modified: 18-04-18 16 | */ 17 | 18 | #include "stdafx.h" 19 | 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | 30 | #pragma comment(lib, "Ws2_32.lib") 31 | 32 | 33 | // Visual Studio DLL Boilerplate 34 | 35 | BOOL APIENTRY DllMain(HMODULE hModule, 36 | DWORD ul_reason_for_call, 37 | LPVOID lpReserved 38 | ) 39 | { 40 | switch (ul_reason_for_call) 41 | { 42 | case DLL_PROCESS_ATTACH: 43 | case DLL_THREAD_ATTACH: 44 | case DLL_THREAD_DETACH: 45 | case DLL_PROCESS_DETACH: 46 | break; 47 | } 48 | return TRUE; 49 | } 50 | 51 | /* 52 | * Quick and dirty function callback function for writing with cURL - append to string rather than using fwrite 53 | */ 54 | 55 | size_t cURL_Callback(void *contents, size_t size, size_t nmemb, std::string *s) 56 | { 57 | ((std::string*)s)->append((char*)contents, size * nmemb); 58 | return size * nmemb; 59 | } 60 | 61 | /* 62 | * This function will be called by LSA - the function imports calling account information, including the prospective password 63 | * and exports a Boolean value (either TRUE or FALSE). This return value is then used by LSA in determining whether or not 64 | * the password has passed the in-place password policy. 65 | */ 66 | 67 | extern "C" __declspec(dllexport) BOOLEAN __stdcall PasswordFilter(PUNICODE_STRING accountName, 68 | PUNICODE_STRING fullName, 69 | PUNICODE_STRING password, 70 | BOOLEAN operation) { 71 | // Declare and initialise the returnValue Boolean expresion as true by default - allow the password change by default 72 | BOOLEAN returnValue = TRUE; 73 | 74 | // Declare the String to hold the SHA1 hash 75 | std::string hash = ""; 76 | 77 | // Long and convoluted way of getting password String from PUNICODE_STRING 78 | std::wstring wStrBuffer(password->Buffer, password->Length / sizeof(WCHAR)); 79 | const wchar_t *wideChar = wStrBuffer.c_str(); 80 | std::wstring wStr(wideChar); 81 | std::string str(wStr.begin(), wStr.end()); 82 | 83 | // Generate an SHA1 hash of the requesting password string through Crypto++ 84 | CryptoPP::SHA1 sha1; 85 | CryptoPP::StringSource(str, true, new CryptoPP::HashFilter(sha1, new CryptoPP::HexEncoder(new CryptoPP::StringSink(hash)))); 86 | 87 | // Declare and initialise cURL 88 | CURL *curl = curl_easy_init(); 89 | 90 | // Initialise URL String as being the API address, as well as the first 5 letters of the password hash 91 | std::string URL("https://api.pwnedpasswords.com/range/" + hash.substr(0, 5)); 92 | 93 | // Declare String for the API response 94 | std::string APIResponse; 95 | 96 | int http_status_code; // Declare the http_status_code variable 97 | if (curl) { // If cURL has been initialised.. 98 | CURLcode res; 99 | curl_easy_setopt(curl, CURLOPT_URL, URL.c_str()); // Set the URL for CURL to the URL string 100 | curl_easy_setopt(curl, CURLOPT_USERAGENT, "API Scraper/1.0"); // Troy requires a user-agent when calling API 101 | curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cURL_Callback); // Set the write function for cURL to cURL_Callback 102 | curl_easy_setopt(curl, CURLOPT_WRITEDATA, &APIResponse); // Set up cURL to write the API response to the APIResponse String 103 | 104 | res = curl_easy_perform(curl); // Perform the request on the above URL with the above user-agent 105 | 106 | if (res == CURLE_OK) { // If no errors occurred.. 107 | 108 | curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_status_code); // Retrieve the HTTP status code 109 | 110 | if (http_status_code == 404) { // If the status code is 404 (i.e. password doesn't exist in pwned passwords data) THEN.. 111 | returnValue = TRUE; // Set returnValue Boolean to true (password is fine to use as it doesn't exist as a previously breached password) 112 | } 113 | else if (http_status_code / 100 == 3 || http_status_code / 100 == 4 || http_status_code / 100 == 5) // If there are any client, server errors or redirects 114 | { 115 | returnValue = TRUE; // Set returnValue Boolean to true (fail open) 116 | } 117 | else // If there was a response from the API 118 | { 119 | std::size_t found = APIResponse.find(hash.substr(5)); // Attempt to find the hash suffix 120 | 121 | if (found != std::string::npos) // The find function will return string::npos if the requested string was no found 122 | { 123 | returnValue = FALSE; // If the hash exists, then set the return value to false (i.e. don't allow the password to be changed) 124 | } 125 | } 126 | } 127 | curl_easy_cleanup(curl); // Clean-up for cURL 128 | } 129 | 130 | return returnValue; // Return the Boolean value to LSA 131 | 132 | } 133 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // PwnedPasswordsDLL-API.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #include "targetver.h" 9 | 10 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 11 | // Windows Header Files: 12 | #include 13 | 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/PwnedPasswordsDLL-API.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.15063.0 2 | Debug|x64|C:\Users\Jackson Van Dyke\Desktop\PwnedPasswordsDLL-API-master\| 3 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link-cvtres.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link-cvtres.read.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link-cvtres.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link-cvtres.write.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link-rc.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link-rc.read.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link-rc.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link-rc.write.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPas.2778C83C.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPasswordsDLL-API.log: -------------------------------------------------------------------------------- 1 | cryptlib.lib(cryptlib.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 2 | cryptlib.lib(cryptlib.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 3 | cryptlib.lib(misc.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 4 | cryptlib.lib(misc.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 5 | cryptlib.lib(filters.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 6 | cryptlib.lib(filters.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 7 | cryptlib.lib(iterhash.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 8 | cryptlib.lib(iterhash.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 9 | cryptlib.lib(sha.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 10 | cryptlib.lib(sha.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 11 | cryptlib.lib(algparam.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 12 | cryptlib.lib(algparam.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 13 | cryptlib.lib(basecode.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 14 | cryptlib.lib(basecode.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 15 | cryptlib.lib(hex.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 16 | cryptlib.lib(hex.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 17 | cryptlib.lib(pch.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 18 | cryptlib.lib(pch.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 19 | cryptlib.lib(integer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 20 | cryptlib.lib(integer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 21 | cryptlib.lib(queue.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 22 | cryptlib.lib(queue.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 23 | cryptlib.lib(fips140.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 24 | cryptlib.lib(fips140.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 25 | cryptlib.lib(mqueue.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 26 | cryptlib.lib(mqueue.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 27 | cryptlib.lib(dll.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 28 | cryptlib.lib(dll.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 29 | cryptlib.lib(nbtheory.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 30 | cryptlib.lib(nbtheory.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 31 | cryptlib.lib(asn.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 32 | cryptlib.lib(asn.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 33 | cryptlib.lib(pubkey.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 34 | cryptlib.lib(pubkey.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 35 | cryptlib.lib(rijndael.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 36 | cryptlib.lib(rijndael.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 37 | cryptlib.lib(cpu.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 38 | cryptlib.lib(cpu.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 39 | cryptlib.lib(modes.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 40 | cryptlib.lib(modes.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 41 | cryptlib.lib(gfpcrypt.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 42 | cryptlib.lib(gfpcrypt.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 43 | cryptlib.lib(gf2n.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 44 | cryptlib.lib(gf2n.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 45 | cryptlib.lib(ec2n.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 46 | cryptlib.lib(ec2n.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 47 | cryptlib.lib(ecp.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 48 | cryptlib.lib(ecp.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 49 | cryptlib.lib(rng.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 50 | cryptlib.lib(rng.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 51 | cryptlib.lib(osrng.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 52 | cryptlib.lib(osrng.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 53 | cryptlib.lib(rdtables.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 54 | cryptlib.lib(rdtables.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 55 | cryptlib.lib(randpool.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 56 | cryptlib.lib(randpool.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 57 | cryptlib.lib(hrtimer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in dllmain.obj 58 | cryptlib.lib(hrtimer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in dllmain.obj 59 | Creating library C:\Users\Jackson Van Dyke\Desktop\PwnedPasswordsDLL-API-master\x64\Debug\PwnedPasswordsDLL-API.lib and object C:\Users\Jackson Van Dyke\Desktop\PwnedPasswordsDLL-API-master\x64\Debug\PwnedPasswordsDLL-API.exp 60 | LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library 61 | C:\Users\Jackson Van Dyke\Desktop\PwnedPasswordsDLL-API-master\x64\Debug\PwnedPasswordsDLL-API.dll : fatal error LNK1319: 58 mismatches detected 62 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPasswordsDLL-API.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPasswordsDLL-API.obj -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/PwnedPasswordsDLL-API.pch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/PwnedPasswordsDLL-API.pch -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/dllmain.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/dllmain.obj -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/stdafx.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/stdafx.obj -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/vc141.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/vc141.idb -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Debug/vc141.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Debug/vc141.pdb -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/PwnedPasswordsDLL-API.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.17763.0 2 | Release|x64|C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\| 3 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/PwnedPasswordsDLL-API.write.1u.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/PwnedPasswordsDLL-API.write.1u.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/link.delete.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/link.delete.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPas.2778C83C.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPasswordsDLL-API.log: -------------------------------------------------------------------------------- 1 |  dllmain.cpp 2 | Creating library C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\PwnedPasswordsDLL-API.lib and object C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\PwnedPasswordsDLL-API.exp 3 | Generating code 4 | 1 of 494 functions ( 0.2%) were compiled, the rest were copied from previous compilation. 5 | 0 functions were new in current compilation 6 | 0 functions had inline decision re-evaluated but remain unchanged 7 | Finished generating code 8 | cryptlib.lib(cryptlib.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(cryptlib.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 9 | cryptlib.lib(cpu.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(cpu.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 10 | cryptlib.lib(integer.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(integer.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 11 | cryptlib.lib(algparam.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(algparam.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 12 | cryptlib.lib(asn.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(asn.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 13 | cryptlib.lib(basecode.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(basecode.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 14 | cryptlib.lib(dll.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(dll.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 15 | cryptlib.lib(ec2n.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(ec2n.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 16 | cryptlib.lib(ecp.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(ecp.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 17 | cryptlib.lib(filters.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(filters.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 18 | cryptlib.lib(fips140.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(fips140.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 19 | cryptlib.lib(gf2n.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(gf2n.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 20 | cryptlib.lib(gfpcrypt.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(gfpcrypt.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 21 | cryptlib.lib(hex.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(hex.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 22 | cryptlib.lib(hrtimer.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(hrtimer.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 23 | cryptlib.lib(iterhash.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(iterhash.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 24 | cryptlib.lib(misc.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(misc.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 25 | cryptlib.lib(modes.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(modes.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 26 | cryptlib.lib(mqueue.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(mqueue.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 27 | cryptlib.lib(nbtheory.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(nbtheory.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 28 | cryptlib.lib(osrng.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(osrng.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 29 | cryptlib.lib(pch.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(pch.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 30 | cryptlib.lib(pubkey.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(pubkey.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 31 | cryptlib.lib(queue.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(queue.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 32 | cryptlib.lib(randpool.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(randpool.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 33 | cryptlib.lib(rdtables.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(rdtables.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 34 | cryptlib.lib(rijndael.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(rijndael.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 35 | cryptlib.lib(rng.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(rng.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 36 | cryptlib.lib(sha.obj) : warning LNK4099: PDB 'cryptlib.pdb' was not found with 'cryptlib.lib(sha.obj)' or at 'C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\cryptlib.pdb'; linking object as if no debug info 37 | PwnedPasswordsDLL-API.vcxproj -> C:\Users\jacko\OneDrive\Documents\Personal\IT\Programming\Programs\Pwned Passwords\Pwned Passwords DLL V2\PwnedPasswordsDLL-API-master\x64\Release\PwnedPasswordsDLL-API.dll 38 | -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPasswordsDLL-API.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPasswordsDLL-API.obj -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/PwnedPasswordsDLL-API.pch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/PwnedPasswordsDLL-API.pch -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/dllmain.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/dllmain.obj -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/stdafx.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/stdafx.obj -------------------------------------------------------------------------------- /PwnedPasswordsDLL-API/x64/Release/vc141.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/PwnedPasswordsDLL-API/x64/Release/vc141.pdb -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | PwnedPasswordsDLL is a DLL that allows password requests through any form of Active Directory integration to be checked against over 500 million previously breached passwords using Troy Hunt's Pwned Passwords API and k-Anonymity. 4 | 5 | Check out https://jacksonvd.com/checking-for-breached-passwords-ad-using-k-anonymity/ for more information on the background of the tool. 6 | 7 | # Compiling the Code (Visual Studio) 8 | 9 | 1. Download the PwnedPasswordsDLL-API source from here 10 | 2. Download Crypto++ from the following link (https://www.cryptopp.com/#download) 11 | 3. Build Crypto++ as a library in x64 mode – the following link is a good resource on compiling it for use in Visual Studio (http://programmingknowledgeblog.blogspot.com.au/2013/04/compiling-and-integrating-crypto-into.html) 12 | 4. Include the Crypto++ header directories through Project –> PwnedPasswordsDLL-API Properties –> Configuration Properties –> VC++ Directories. Edit the Include Directories and add the include directory 13 | 5. Then, edit the Library Directories and add the Debug directory from the x64\Output directory. 14 | 6. Add cryptlib.lib to your Additional Dependencies list under Project –> PwnedPasswordsDLL-API Properties –> Configuration Properties -> Linker –>Input –> Additional Dependencies 15 | 7. Build libCurl as a library in x64 mode – this is a great resource from Github that will build libcurl on Windows (https://github.com/blackrosezy/build-libcurl-windows) 16 | 8. Include the libCurl header directories through Project –> PwnedPasswordsDLL-API Properties –> Configuration Properties –> VC++ Directories. 17 | 9. Edit the Include Directories and add the include directory 18 | 10. Then, edit the Library Directories and add the relevant libCurl library directory. 19 | 11. Add libcurl_a.lib to your Additional Dependencies list under Project –> PwnedPasswordsDLL-API Properties –> Configuration Properties –> Linker –>Input –> Additional Dependencies 20 | 12. Add  CURL_STATICLIB to your Preprocessor Definitions under  Project –> PwnedPasswordsDLL-API Properties –> Configuration Properties –>  C/C++ -> Preprocessor 21 | 13. Change Runtime Library to Multi-threaded Debug (/MTd) under Project –> PwnedPasswordsDLL-API Properties –> Configuration Properties –>  C/C++ –> Code Generation 22 | 14. All that’s left now is to Build and then test out the DLL! 23 | 24 | # Implementing the DLL 25 | 26 | The implementation of the DLL is the easy part - just download or build the DLL, place it in system32 and add a registry key! 27 | 28 | Note: These instructions need to be followed on all Domain Controllers in the domain if you wish to implement this for Active Directory, as any of them may end up servicing a password change request. 29 | 30 | 1. Download or build the DLL 31 | 2. The DLL itself needs to be placed in your system root directory (generally C:\Windows\System32). 32 | 3. The DLL name needs to be added to the multi-string “Notification Packages” registry subkey under HKLM\System\CurrentControlSet\Control\LSA – note that you only need to add the name of the DLL, not including the file extension. 33 | 4. To ensure that the DLL works alongside your Group Policy password filtering settings,  ensure that the Passwords must meet complexity requirements policy setting is enabled through your relevant GPO(s). 34 | 5. Reboot the DC(s). Any password change request should now be filtered through the DLL. 35 | -------------------------------------------------------------------------------- /x64/Release/PwnedPasswordsDLL-API.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/x64/Release/PwnedPasswordsDLL-API.dll -------------------------------------------------------------------------------- /x64/Release/PwnedPasswordsDLL-API.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/x64/Release/PwnedPasswordsDLL-API.exp -------------------------------------------------------------------------------- /x64/Release/PwnedPasswordsDLL-API.iobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/x64/Release/PwnedPasswordsDLL-API.iobj -------------------------------------------------------------------------------- /x64/Release/PwnedPasswordsDLL-API.ipdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/x64/Release/PwnedPasswordsDLL-API.ipdb -------------------------------------------------------------------------------- /x64/Release/PwnedPasswordsDLL-API.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/x64/Release/PwnedPasswordsDLL-API.lib -------------------------------------------------------------------------------- /x64/Release/PwnedPasswordsDLL-API.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacksonVD/PwnedPasswordsDLL-API/f9dfcf564ad1aa6981a6548b1db6a8a57af5a887/x64/Release/PwnedPasswordsDLL-API.pdb --------------------------------------------------------------------------------