示例#1
0
        static int RunScanSMBShareDir(ScanSMBShareDirOptions options)
        {
            SetCommonOptions(options);
            SetDirScanMTOptions(options);

            Config.TryResolveHostName = options.ResolveHostname;
            Config.RecursiveLevel     = options.RecursiveLevel;


            List <ScanDirectoryResult> result = new List <ScanDirectoryResult>();

            foreach (string hostname in SharesMapperUtils.AddrParser.ParseTargets(options.target))
            {
                if (Config.TryResolveHostName && !SharesScanner.TryResolveHostName(hostname))
                {
                    Console.WriteLine("[-][" + DateTime.Now + "] Could not resolve " + hostname);
                    continue;
                }
                result.Add(SharesScanner.ScanShareDirectory("\\\\" + hostname + "\\" + options.Path, Config.RecursiveLevel));
            }

            if (options.OutReport.Length > 0)
            {
                if (File.Exists(options.SIDFileIn))
                {
                    ReportGenerator.XLSXReport.LoadSIDResolutionFile(options.SIDFileIn);
                }
                ReportGenerator.XLSXReport.GenerateSMBDirectoryScanResultReport(result, options.OutReport);
                ReportGenerator.XLSXReport.SIDCahe.Clear();
            }

            return(0);
        }
示例#2
0
        static int RunGetSMBSharesVerb(GetSMBSharesOptions options)
        {
            SetCommonOptions(options);

            Config.PrintACL = options.PrintACL;

            SharesScanner.PreviewHostShares(options.HostName);

            return(0);
        }
示例#3
0
        static int RunRescanSMBVerb(RescanSMBOptions options)
        {
            Dictionary <string, SMBHost> hosts;

            SetCommonOptions(options);
            SetScanCommonOptions(options);
            SetMTOptions(options);
            SetDirScanMTOptions(options);

            Config.ScanForNewShares = options.ScanForNewShares;
            Config.ScanForNewSharesRecusiveLevel      = options.RecursiveLevel;
            Config.ScanForNewSharesTryResolveHostName = options.ResolveHostname;

            if (File.Exists(options.InputFile))
            {
                hosts = SMBSharesMapperSerializer.DeserializeHosts(options.InputFile);
                if (hosts == null)
                {
                    return(-1);
                }

                if (options.AppendHosts != null)
                {
                    SharesScanner.AppendHosts(hosts, options.AppendHosts.Split(','), Config.ScanForNewSharesTryResolveHostName);
                }

                if (options.AppendHostsFile != null)
                {
                    SharesScanner.AppendHosts(hosts, options.AppendHostsFile, Config.ScanForNewSharesTryResolveHostName);
                }

                if (options.MaxThreads > 1)
                {
                    SharesScanner.MTReScanHosts(hosts);
                }
                else
                {
                    SharesScanner.ReScanHosts(hosts);
                }

                SMBSharesMapperSerializer.SerializeHosts(hosts, options.OutData);

                if (options.OutReport.Length > 0)
                {
                    if (File.Exists(options.SIDFileIn))
                    {
                        ReportGenerator.XLSXReport.LoadSIDResolutionFile(options.SIDFileIn);
                    }
                    ReportGenerator.XLSXReport.GenerateSMBHostsReport(hosts, options.OutReport);
                    ReportGenerator.XLSXReport.SIDCahe.Clear();
                }
            }

            return(0);
        }
示例#4
0
        static int RunscanSMBVerb(SMBOptions options)
        {
            Dictionary <string, SMBHost> hosts = new Dictionary <string, SMBHost>();

            SetCommonOptions(options);
            SetScanCommonOptions(options);
            SetMTOptions(options);
            SetDirScanMTOptions(options);

            if (options.TargetType.ToLower() == "hosts")
            {
                if (options.MaxThreads > 1)
                {
                    hosts = SharesScanner.MTScanHosts(SharesMapperUtils.AddrParser.ParseTargets(options.Target).ToArray());
                }
                else
                {
                    hosts = SharesScanner.ScanHosts(SharesMapperUtils.AddrParser.ParseTargets(options.Target).ToArray());
                }
            }
            else if (options.TargetType.ToLower() == "file")
            {
                if (options.MaxThreads > 1)
                {
                    hosts = SharesScanner.MTScanHosts(options.Target);
                }
                else
                {
                    hosts = SharesScanner.ScanHosts(options.Target);
                }
            }
            else
            {
                throw new ArgumentException("Unknown targetType value.");
            }

            SMBSharesMapperSerializer.SerializeHosts(hosts, options.OutData);

            if (options.OutReport.Length > 0)
            {
                if (File.Exists(options.SIDFileIn))
                {
                    ReportGenerator.XLSXReport.LoadSIDResolutionFile(options.SIDFileIn);
                }
                ReportGenerator.XLSXReport.GenerateSMBHostsReport(hosts, options.OutReport);
                ReportGenerator.XLSXReport.SIDCahe.Clear();
            }

            return(0);
        }