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); } }
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); } }
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); }
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); }