コード例 #1
0
        public void GetGPP()
        {
            IDisplay displayer       = new DisplayFileObjects();
            var      gppSearchString = new SMBSearchString
            {
                Title          = "Group Policy Preference Passwords",
                FileAttributes = new List <string> {
                    "cpassword"
                }
            };

            displayer.DisplayTitle(gppSearchString.Title);
            if (!CanConnectSYSVOL)
            {
                return;
            }

            var xmlFileList = AsyncCollection.GetGPPXML().Result;

            gppSearchString.FilePathList = xmlFileList;
            var sysvol = AsyncCollection.GetSYSVOLAsync(gppSearchString).Result;

            if (sysvol.Count == 0)
            {
                return;
            }
            foreach (var file in sysvol)
            {
                displayer.DisplayResult(file);
            }
        }
コード例 #2
0
        public static FileResult Collect(SearchString searchstring)
        {
            SMBSearchString searchString = (SMBSearchString)searchstring;

            if (searchString.FilePath == null | searchString.FilePath == string.Empty)
            {
                return(null);
            }
            string filePath = searchString.FilePath;

            if (!File.Exists(filePath))
            {
                return(null);
            }

            try
            {
                switch (Path.GetExtension(filePath).ToLower())
                {
                case ".inf":
                    if (INFObject.EnumeratedINFObjects.ContainsKey(filePath))
                    {
                        return(new FileResult {
                            FileObject = CollectFileObject(INFObject.EnumeratedINFObjects[filePath], searchString)
                        });
                    }
                    else
                    {
                        var infFile = new INFObject(filePath);
                        infFile.ParseFile();
                        return(new FileResult {
                            FileObject = CollectFileObject(infFile, searchString)
                        });
                    }

                case ".xml":
                    var xmlFile = new XMLObject(filePath);
                    xmlFile.ParseFile();
                    return(new FileResult {
                        FileObject = CollectFileObject(xmlFile, searchString)
                    });

                default:
                    var otherFile = new OtherFileObject(filePath);
                    otherFile.ParseFile();
                    return(new FileResult {
                        FileObject = CollectFileObject(otherFile, searchString)
                    });
                }
            }
            catch (Exception e)
            {
                _logger.Error(e.Message);
                return(null);
            }
        }
コード例 #3
0
        public static async Task <List <FileResult> > GetSYSVOLAsync(SearchString searchstring)
        {
            SMBSearchString searchString = (SMBSearchString)searchstring;

            var tasks = new List <Task <FileResult> >();

            foreach (var filePath in searchString.FilePathList)
            {
                var ss = new SMBSearchString {
                    Title = searchString.Title, FilePath = filePath, FileAttributes = searchString.FileAttributes
                };
                tasks.Add(Task.Run(() => CollectSYSVOL.Collect(ss)));
            }

            var aclList = (await Task.WhenAll(tasks)).ToList();

            return(aclList);
        }
コード例 #4
0
        public static FileObject CollectFileObject(FileObject fileObject, SearchString searchstring)
        {
            SMBSearchString searchString = (SMBSearchString)searchstring;
            Dictionary <string, List <Dictionary <string, string> > > Properties = new Dictionary <string, List <Dictionary <string, string> > >();

            try
            {
                if (fileObject is INFObject)
                {
                    foreach (var property in fileObject.Properties)
                    {
                        if (searchString.FileAttributes.Contains(property.Key))
                        {
                            Dictionary <string, string> attributes = new Dictionary <string, string>();

                            foreach (var attr in property.Value.First())
                            {
                                attributes.Add(CheckGroupName(attr.Key), CheckGroupName(attr.Value));
                            }
                            Properties.Add(property.Key, new List <Dictionary <string, string> > {
                                attributes
                            });
                        }
                    }
                }
                else if (fileObject is XMLObject)
                {
                    foreach (var property in fileObject.Properties)
                    {
                        var attrsList = new List <Dictionary <string, string> >();

                        foreach (var attrDict in property.Value)
                        {
                            var attrs = new Dictionary <string, string>();
                            foreach (var attr in attrDict)
                            {
                                if (searchString.FileAttributes.Contains(attr.Key))
                                {
                                    attrs.Add(attr.Key, attr.Value);
                                }
                            }
                            if (attrs.Count != 0)
                            {
                                attrsList.Add(attrs);
                            }
                        }
                        if (attrsList.Count != 0)
                        {
                            Properties.Add(property.Key, attrsList);
                        }
                    }
                }
            }catch (Exception e)
            {
                logger.Error($"{fileObject.FilePath}: {e.Message}");
            }

            if (Properties.Count == 0)
            {
                return(null);
            }

            fileObject.Properties = Properties;
            return(fileObject);
        }