Example #1
0
        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);
            }
        }
Example #2
0
        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));
            }
        }
Example #3
0
        public static List <SID> ResolveNames(ISMBClient client, List <string> names, out NTStatus status)
        {
            List <SID> output = null;

            using (RPCCallHelper rpc = new RPCCallHelper(client, LsaRemoteService.ServicePipeName, LsaRemoteService.ServiceInterfaceGuid, LsaRemoteService.ServiceVersion))
            {
                status = rpc.BindPipe();
                if (status != NTStatus.STATUS_SUCCESS)
                {
                    return(null);
                }

                LsaHandle handle = LsaOpenPolicy(rpc, (AccessMask)0x801, out status);
                if (handle != null)
                {
                    output = LsaLookupNames(rpc, handle, names, out status);

                    LsaClose(rpc, handle, out status);
                }
            }
            return(output);
        }
Example #4
0
        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());
            }
        }