qué tipo de estructura debe usar para obtener el desafío MSV1_0 llamando a la API LsaCallAuthenticationPackage en C#. mi código de muestra está debajo.
UInt32 msvAuthPackageId; using(OSCalls.LsaStringWrapper msvPackageName = new OSCalls.LsaStringWrapper("MICROSOFT_AUTHENTICATION_PACKAGE_V1_0")) { status = OSCalls.LsaLookupAuthenticationPackage(lsaHandle, ref msvPackageName._string, out msvAuthPackageId); Console.WriteLine("NtlmLogon status check again after LsaLookupAuthenticationPackage {0} ", status); if (status != OSCalls.WinStatusCodes.STATUS_SUCCESS) throw new System.ComponentModel.Win32Exception((int) OSCalls.LsaNtStatusToWinError(status)); }El estado es un éxito, pero el valor de protocolReturnBuf está vacío (siempre obtiene el valor cero y returnBufLen muestra 12)
donde authPackage, estoy usando la siguiente estructura para construir el puntero y usando MSV1_0_PROTOCOL_MESSAGE_TYPE.MsV1_0Lm20ChallengeRequest para obtener el desafío
public struct MSV1_0_LM20_LOGON // { public MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; public LSA_UNICODE_STRING LogonDomainName; public LSA_UNICODE_STRING UserName; public LSA_UNICODE_STRING Workstation; }