def KerberosInit():
hLsaConnection = HANDLE()
status = DWORD(0)
LPTR = (0x0000 | 0x0040)
MICROSOFT_KERBEROS_NAME_A = PWSTR()
MICROSOFT_KERBEROS_NAME_A = windll.kernel32.LocalAlloc(LPTR, len("Kerberos") + 1)
memmove(MICROSOFT_KERBEROS_NAME_A, "Kerberos", len("Kerberos"))
status = LsaConnectUntrusted(byref(hLsaConnection))
if status != STATUS_SUCCESS:
print "LsaConnectUntrusted, cannot get LSA handle, error %d " % status
windll.kernel32.LocalFree(MICROSOFT_KERBEROS_NAME_A)
return None, None
kerberosPackageName = UNICODE_STRING()
kerberosPackageName.Length = USHORT(8)
kerberosPackageName.MaximumLength = USHORT(9)
kerberosPackageName.Buffer = MICROSOFT_KERBEROS_NAME_A
dwKerberosAuthenticationPackageId = DWORD(0)
status = LsaLookupAuthenticationPackage(hLsaConnection, byref(kerberosPackageName), byref(dwKerberosAuthenticationPackageId))
windll.kernel32.LocalFree(MICROSOFT_KERBEROS_NAME_A)
if status == STATUS_SUCCESS:
return hLsaConnection, dwKerberosAuthenticationPackageId
else:
return None, None
评论列表
文章目录