public static DomainControllerInfo DsGetDCNames(ISMBClient client, string ServerName, string DomainName, string SiteName, uint Flags, out NTStatus status) { using (RPCCallHelper rpc = new RPCCallHelper(client, NetlogonService.ServicePipeName, NetlogonService.ServiceInterfaceGuid, NetlogonService.ServiceVersion)) { status = rpc.BindPipe(); if (status != NTStatus.STATUS_SUCCESS) { return(null); } DsrGetDcNameRequest getDcNameRequest = new DsrGetDcNameRequest(); getDcNameRequest.ServerName = ServerName; getDcNameRequest.DomainName = DomainName; getDcNameRequest.SiteName = SiteName; getDcNameRequest.Flags = Flags; DsrGetDcNameResponse getDcNameResponse; status = rpc.ExecuteCall((ushort)NetlogonServiceOpName.DsrGetDcName, getDcNameRequest, out getDcNameResponse); if (status != NTStatus.STATUS_SUCCESS) { return(null); } return(new DomainControllerInfo(getDcNameResponse.DCInfo)); } }
public static NetrServerStatisticsGetResponse NetrServerStatisticsGet(ISMBClient client, string serverName, string service, uint level, uint options, out NTStatus status) { using (RPCCallHelper rpc = new RPCCallHelper(client, ServerService.ServicePipeName, ServerService.ServiceInterfaceGuid, ServerService.ServiceVersion)) { status = rpc.BindPipe(); if (status != NTStatus.STATUS_SUCCESS) { return(null); } NetrServerStatisticsGetRequest netrServerStatisticsGetRequest = new NetrServerStatisticsGetRequest(); netrServerStatisticsGetRequest.ServerName = serverName; netrServerStatisticsGetRequest.Service = service; netrServerStatisticsGetRequest.Level = level; netrServerStatisticsGetRequest.Options = options; NetrServerStatisticsGetResponse netrServerStatisticsGetResponse; status = rpc.ExecuteCall((ushort)ServerServiceOpName.NetrServerStatisticsGet, netrServerStatisticsGetRequest, out netrServerStatisticsGetResponse); if (status != NTStatus.STATUS_SUCCESS) { return(null); } return(netrServerStatisticsGetResponse); } }
public static void LsaClose(RPCCallHelper rpc, LsaHandle handle, out NTStatus status) { LsarCloseRequest closeRequest = new LsarCloseRequest(); closeRequest.handle = handle; LsarCloseResponse closeResponse; status = rpc.ExecuteCall((ushort)LsaRemoteServiceOpName.LsarClose, closeRequest, out closeResponse); if (status != NTStatus.STATUS_SUCCESS) { return; } }
public static LsaHandle LsaOpenPolicy(RPCCallHelper rpc, AccessMask desiredAccess, out NTStatus status) { LsarOpenPolicyRequest openPolicyRequest = new LsarOpenPolicyRequest(); openPolicyRequest.DesiredAccess = desiredAccess; LsarOpenPolicyResponse openPolicyResponse; status = rpc.ExecuteCall((ushort)LsaRemoteServiceOpName.LsarOpenPolicy, openPolicyRequest, out openPolicyResponse); if (status != NTStatus.STATUS_SUCCESS) { return(null); } return(openPolicyResponse.PolicyHandle); }
public static void EfsRpcCloseRaw(RPCCallHelper rpc, ref EXImportContextHandle handle, out NTStatus status) { EfsRpcCloseRawRequest closeRequest = new EfsRpcCloseRawRequest(); closeRequest.handle = handle; EfsRpcCloseRawResponse closeResponse; status = rpc.ExecuteCall((ushort)LsaRemoteServiceOpName.LsarClose, closeRequest, out closeResponse); if (status != NTStatus.STATUS_SUCCESS) { return; } handle = closeResponse.Handle; }
public static UInt32 EfsRpcOpenFileRaw(RPCCallHelper rpc, out EXImportContextHandle hContext, string FileName, Int32 Flags, out NTStatus status) { EfsRpcOpenFileRawRequest openFileRequest = new EfsRpcOpenFileRawRequest(); openFileRequest.FileName = FileName; openFileRequest.Flags = Flags; EfsRpcOpenFileRawResponse openFileResponse; status = rpc.ExecuteCall((ushort)EFSServiceOpName.EfsRpcOpenFileRaw, openFileRequest, out openFileResponse); if (status != NTStatus.STATUS_SUCCESS) { hContext = new EXImportContextHandle(); return(0); } hContext = openFileResponse.ContextHandle; return(openFileResponse.Return); }
public static List <string> LsaLookupSids(RPCCallHelper rpc, LsaHandle handle, List <SID> sids, out NTStatus status) { LsarLookupSidsRequest lookupSidsRequest = new LsarLookupSidsRequest(); lookupSidsRequest.handle = handle; lookupSidsRequest.SIDEnumBuffer = new LsaSIDEnumBuffer(); lookupSidsRequest.SIDEnumBuffer.Entries = (uint)sids.Count; lookupSidsRequest.SIDEnumBuffer.SIDInfos = new LsaSIDArray(); lookupSidsRequest.SIDEnumBuffer.SIDInfos.SIDs = sids; lookupSidsRequest.TranslatedNames = new LsaTranslatedArray <LsaTranslatedName>(); LsarLookupSidsResponse lookupSidsResponse; status = rpc.ExecuteCall((ushort)LsaRemoteServiceOpName.LsarLookupSids, lookupSidsRequest, out lookupSidsResponse); if (status != NTStatus.STATUS_SUCCESS) { return(null); } if (sids.Count != lookupSidsResponse.TranslatedSids.Items.Count) { status = NTStatus.STATUS_NOT_SUPPORTED; return(null); } List <string> output = new List <string>(); foreach (LsaTranslatedName translated in lookupSidsResponse.TranslatedSids.Items) { if (translated.Use == LsaSIDNameUse.SidTypeUnknown) { output.Add(null); } else { string domain = lookupSidsResponse.DomainList.Names[(int)translated.DomainIndex].Name; output.Add(domain + "\\" + translated.Name); } } return(output); }
public static List <SID> LsaLookupNames(RPCCallHelper rpc, LsaHandle handle, List <string> names, out NTStatus status) { LsarLookupNamesRequest lookupNamesRequest = new LsarLookupNamesRequest(); lookupNamesRequest.handle = handle; lookupNamesRequest.Names = new NDRConformantArray <LsaUnicodeString>(); foreach (string name in names) { lookupNamesRequest.Names.Add(new LsaUnicodeString(name)); } lookupNamesRequest.TranslatedSids = new LsaTranslatedArray <LsaTranslatedSid>(); LsarLookupNamesResponse lookupNamesResponse; status = rpc.ExecuteCall((ushort)LsaRemoteServiceOpName.LsarLookupNames, lookupNamesRequest, out lookupNamesResponse); if (status != NTStatus.STATUS_SUCCESS) { return(null); } if (names.Count != lookupNamesResponse.TranslatedNames.Items.Count) { status = NTStatus.STATUS_NOT_SUPPORTED; return(null); } List <SID> output = new List <SID>(); foreach (LsaTranslatedSid sid in lookupNamesResponse.TranslatedNames.Items) { if (sid.Use == LsaSIDNameUse.SidTypeUnknown) { output.Add(null); } else { output.Add(sid.GetSID(lookupNamesResponse.DomainList.Names[(int)sid.DomainIndex].Sid)); } } return(output); }
public static DateTime NetrRemoteTOD(ISMBClient client, string ServerName, out NTStatus status) { using (RPCCallHelper rpc = new RPCCallHelper(client, ServerService.ServicePipeName, ServerService.ServiceInterfaceGuid, ServerService.ServiceVersion)) { status = rpc.BindPipe(); if (status != NTStatus.STATUS_SUCCESS) { return(DateTime.MinValue); } NetrRemoteTODRequest netrRemoteTODRequest = new NetrRemoteTODRequest(); netrRemoteTODRequest.ServerName = ServerName; NetrRemoteTODResponse netrRemoteTODResponse; status = rpc.ExecuteCall((ushort)ServerServiceOpName.NetrRemoteTOD, netrRemoteTODRequest, out netrRemoteTODResponse); if (status != NTStatus.STATUS_SUCCESS) { return(DateTime.MinValue); } return(netrRemoteTODResponse.TimeOfDayInfo.ToDateTime()); } }