- rewrote Directory.Get* to Directory.Enumerate* to improve search speed
This commit is contained in:
parent
2f4c58d202
commit
839e4a79ba
@ -318,7 +318,7 @@ namespace winPEAS.Checks
|
||||
Beaprint.MainPrint("Looking for possible regs with creds");
|
||||
Beaprint.LinkPrint("https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#inside-the-registry");
|
||||
|
||||
string winVnc4 = RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\RealVNC\WinVNC4", "passwword");
|
||||
string winVnc4 = RegistryHelper.GetRegValue("HKLM", @"SOFTWARE\RealVNC\WinVNC4", "password");
|
||||
if (!string.IsNullOrEmpty(winVnc4.Trim()))
|
||||
{
|
||||
Beaprint.BadPrint(winVnc4);
|
||||
@ -731,7 +731,7 @@ namespace winPEAS.Checks
|
||||
|
||||
if (Directory.Exists(path))
|
||||
{
|
||||
var files = Directory.GetFiles(path, pattern, SearchOption.TopDirectoryOnly);
|
||||
var files = Directory.EnumerateFiles(path, pattern, SearchOption.TopDirectoryOnly);
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
|
@ -128,7 +128,7 @@ namespace winPEAS.Checks
|
||||
string transcriptsPath = drive + @"transcripts\";
|
||||
string usersPath = $"{drive}users";
|
||||
|
||||
string[] users = Directory.GetDirectories(usersPath, "*", SearchOption.TopDirectoryOnly);
|
||||
var users = Directory.EnumerateDirectories(usersPath, "*", SearchOption.TopDirectoryOnly);
|
||||
string powershellTranscriptFilter = "powershell_transcript*";
|
||||
|
||||
var colors = new Dictionary<string, string>()
|
||||
@ -159,7 +159,7 @@ namespace winPEAS.Checks
|
||||
{
|
||||
try
|
||||
{
|
||||
var files = Directory.GetFiles(path, filter, SearchOption.TopDirectoryOnly).ToList();
|
||||
var files = Directory.EnumerateFiles(path, filter, SearchOption.TopDirectoryOnly).ToList();
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
|
@ -325,8 +325,8 @@ namespace winPEAS.Helpers.AppLocker
|
||||
|
||||
try
|
||||
{
|
||||
var subfolders = Directory.GetDirectories(path);
|
||||
var files = Directory.GetFiles(path, "*", SearchOption.TopDirectoryOnly);
|
||||
var subfolders = Directory.EnumerateDirectories(path);
|
||||
var files = Directory.EnumerateFiles(path, "*", SearchOption.TopDirectoryOnly);
|
||||
|
||||
ruleType = ruleType.ToLower();
|
||||
|
||||
|
@ -264,9 +264,9 @@ namespace winPEAS.Helpers
|
||||
results[path] = String.Join(", ", GetPermissionsFolder(path, Checks.Checks.CurrentUserSiDs));
|
||||
if (string.IsNullOrEmpty(results[path]))
|
||||
{
|
||||
foreach (string d in Directory.GetDirectories(path))
|
||||
foreach (string d in Directory.EnumerateDirectories(path))
|
||||
{
|
||||
foreach (string f in Directory.GetFiles(d))
|
||||
foreach (string f in Directory.EnumerateFiles(d))
|
||||
{
|
||||
results[f] = String.Join(", ", GetPermissionsFile(f, Checks.Checks.CurrentUserSiDs));
|
||||
}
|
||||
|
@ -115,55 +115,53 @@ namespace winPEAS.Helpers.Search
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static List<DirectoryInfo> GetStartDirectories(string folder, ConcurrentBag<CustomFileInfo> files, string pattern, bool isFoldersIncluded = false)
|
||||
private static IEnumerable<DirectoryInfo> GetStartDirectories(string folder, ConcurrentBag<CustomFileInfo> files, string pattern, bool isFoldersIncluded = false)
|
||||
{
|
||||
DirectoryInfo dirInfo = null;
|
||||
DirectoryInfo[] directories = null;
|
||||
try
|
||||
while (true)
|
||||
{
|
||||
dirInfo = new DirectoryInfo(folder);
|
||||
directories = dirInfo.GetDirectories();
|
||||
|
||||
if (isFoldersIncluded)
|
||||
DirectoryInfo[] directories = null;
|
||||
try
|
||||
{
|
||||
foreach (var directory in directories)
|
||||
var dirInfo = new DirectoryInfo(folder);
|
||||
directories = dirInfo.GetDirectories();
|
||||
|
||||
if (isFoldersIncluded)
|
||||
{
|
||||
files.Add(new CustomFileInfo(null, null, directory.FullName));
|
||||
foreach (var directory in directories)
|
||||
{
|
||||
files.Add(new CustomFileInfo(null, null, directory.FullName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var f in dirInfo.GetFiles(pattern))
|
||||
foreach (var f in dirInfo.GetFiles(pattern))
|
||||
{
|
||||
files.Add(new CustomFileInfo(f.Name, f.Extension, f.FullName));
|
||||
}
|
||||
|
||||
if (directories.Length > 1) return new List<DirectoryInfo>(directories);
|
||||
|
||||
if (directories.Length == 0) return new List<DirectoryInfo>();
|
||||
}
|
||||
catch (UnauthorizedAccessException)
|
||||
{
|
||||
files.Add(new CustomFileInfo(f.Name, f.Extension, f.FullName));
|
||||
return new List<DirectoryInfo>();
|
||||
}
|
||||
catch (PathTooLongException)
|
||||
{
|
||||
return new List<DirectoryInfo>();
|
||||
}
|
||||
catch (DirectoryNotFoundException)
|
||||
{
|
||||
return new List<DirectoryInfo>();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return new List<DirectoryInfo>();
|
||||
}
|
||||
|
||||
if (directories.Length > 1)
|
||||
return new List<DirectoryInfo>(directories);
|
||||
|
||||
if (directories.Length == 0)
|
||||
return new List<DirectoryInfo>();
|
||||
|
||||
folder = directories[0].FullName;
|
||||
isFoldersIncluded = false;
|
||||
}
|
||||
catch (UnauthorizedAccessException)
|
||||
{
|
||||
return new List<DirectoryInfo>();
|
||||
}
|
||||
catch (PathTooLongException)
|
||||
{
|
||||
return new List<DirectoryInfo>();
|
||||
}
|
||||
catch (DirectoryNotFoundException)
|
||||
{
|
||||
return new List<DirectoryInfo>();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return new List<DirectoryInfo>();
|
||||
}
|
||||
|
||||
return GetStartDirectories(directories[0].FullName, files, pattern);
|
||||
}
|
||||
|
||||
internal static void CreateSearchDirectoriesList()
|
||||
@ -205,15 +203,14 @@ namespace winPEAS.Helpers.Search
|
||||
|
||||
internal static void CleanLists()
|
||||
{
|
||||
// TODO
|
||||
//SearchHelper.RootDirUsers = null;
|
||||
//SearchHelper.RootDirCurrentUser = null;
|
||||
//SearchHelper.ProgramFiles = null;
|
||||
//SearchHelper.ProgramFilesX86 = null;
|
||||
//SearchHelper.DocumentsAndSettings = null;
|
||||
//SearchHelper.GroupPolicyHistory = null;
|
||||
SearchHelper.RootDirUsers = null;
|
||||
SearchHelper.RootDirCurrentUser = null;
|
||||
SearchHelper.ProgramFiles = null;
|
||||
SearchHelper.ProgramFilesX86 = null;
|
||||
SearchHelper.DocumentsAndSettings = null;
|
||||
SearchHelper.GroupPolicyHistory = null;
|
||||
|
||||
//GC.Collect();
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
internal static IEnumerable<CustomFileInfo> SearchUserCredsFiles()
|
||||
@ -253,26 +250,30 @@ namespace winPEAS.Helpers.Search
|
||||
|
||||
foreach (var file in SearchHelper.RootDirCurrentUser)
|
||||
{
|
||||
string extLower = file.Extension.ToLower();
|
||||
string nameLower = file.Filename.ToLower();
|
||||
if (!file.IsDirectory)
|
||||
{
|
||||
string extLower = file.Extension.ToLower();
|
||||
string nameLower = file.Filename.ToLower();
|
||||
|
||||
if (Patterns.WhitelistExtensions.Contains(extLower) ||
|
||||
Patterns.WhiteListExactfilenamesWithExtensions.Contains(nameLower))
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var pattern in Patterns.WhiteListRegexp)
|
||||
if (Patterns.WhitelistExtensions.Contains(extLower) ||
|
||||
Patterns.WhiteListExactfilenamesWithExtensions.Contains(nameLower))
|
||||
{
|
||||
if (Regex.IsMatch(nameLower, pattern, RegexOptions.IgnoreCase))
|
||||
result.Add(file.FullPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var pattern in Patterns.WhiteListRegexp)
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
if (Regex.IsMatch(nameLower, pattern, RegexOptions.IgnoreCase))
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
@ -289,11 +290,14 @@ namespace winPEAS.Helpers.Search
|
||||
|
||||
foreach (var file in SearchHelper.GroupPolicyHistory)
|
||||
{
|
||||
string extLower = file.Extension.ToLower();
|
||||
|
||||
if (allowedExtensions.Contains(extLower))
|
||||
if (!file.IsDirectory)
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
string extLower = file.Extension.ToLower();
|
||||
|
||||
if (allowedExtensions.Contains(extLower))
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -317,11 +321,14 @@ namespace winPEAS.Helpers.Search
|
||||
|
||||
foreach (var file in searchFiles)
|
||||
{
|
||||
string filenameToLower = file.Filename.ToLower();
|
||||
|
||||
if (allowedFilenames.Contains(filenameToLower))
|
||||
if (!file.IsDirectory)
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
string filenameToLower = file.Filename.ToLower();
|
||||
|
||||
if (allowedFilenames.Contains(filenameToLower))
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -349,25 +356,28 @@ namespace winPEAS.Helpers.Search
|
||||
|
||||
foreach (var file in SearchHelper.RootDirCurrentUser)
|
||||
{
|
||||
string extLower = file.Extension.ToLower();
|
||||
string nameLower = file.Filename.ToLower();
|
||||
if (!file.IsDirectory)
|
||||
{
|
||||
string extLower = file.Extension.ToLower();
|
||||
string nameLower = file.Filename.ToLower();
|
||||
|
||||
if (allowedExtensions.Contains(extLower))
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var pattern in allowedRegexp)
|
||||
if (allowedExtensions.Contains(extLower))
|
||||
{
|
||||
if (Regex.IsMatch(nameLower, pattern, RegexOptions.IgnoreCase))
|
||||
result.Add(file.FullPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var pattern in allowedRegexp)
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
if (Regex.IsMatch(nameLower, pattern, RegexOptions.IgnoreCase))
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
@ -394,25 +404,28 @@ namespace winPEAS.Helpers.Search
|
||||
|
||||
foreach (var file in SearchHelper.RootDirUsers)
|
||||
{
|
||||
string extLower = file.Extension.ToLower();
|
||||
string nameLower = file.Filename.ToLower();
|
||||
if (!file.IsDirectory)
|
||||
{
|
||||
string extLower = file.Extension.ToLower();
|
||||
string nameLower = file.Filename.ToLower();
|
||||
|
||||
if (allowedExtensions.Contains(extLower))
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var pattern in allowedRegexp)
|
||||
if (allowedExtensions.Contains(extLower))
|
||||
{
|
||||
if (Regex.IsMatch(nameLower, pattern, RegexOptions.IgnoreCase))
|
||||
result.Add(file.FullPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var pattern in allowedRegexp)
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
if (Regex.IsMatch(nameLower, pattern, RegexOptions.IgnoreCase))
|
||||
{
|
||||
result.Add(file.FullPath);
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -343,7 +343,7 @@ namespace winPEAS.Info.ApplicationInfo
|
||||
|
||||
try
|
||||
{
|
||||
var userDirs = Directory.GetDirectories(usersPath);
|
||||
var userDirs = Directory.EnumerateDirectories(usersPath);
|
||||
|
||||
foreach (var userDir in userDirs)
|
||||
{
|
||||
@ -363,7 +363,7 @@ namespace winPEAS.Info.ApplicationInfo
|
||||
{
|
||||
try
|
||||
{
|
||||
var files = Directory.GetFiles(path, "*", SearchOption.TopDirectoryOnly);
|
||||
var files = Directory.EnumerateFiles(path, "*", SearchOption.TopDirectoryOnly);
|
||||
|
||||
foreach (string filepath in files)
|
||||
{
|
||||
|
@ -70,14 +70,14 @@ namespace winPEAS.Info.ApplicationInfo
|
||||
var results = new SortedDictionary<string, Dictionary<string, string>>();
|
||||
try
|
||||
{
|
||||
foreach (string f in Directory.GetFiles(fpath))
|
||||
foreach (string f in Directory.EnumerateFiles(fpath))
|
||||
{
|
||||
results[f] = new Dictionary<string, string>
|
||||
{
|
||||
{ f, string.Join(", ", PermissionsHelper.GetPermissionsFile(f, Checks.Checks.CurrentUserSiDs)) }
|
||||
};
|
||||
}
|
||||
foreach (string d in Directory.GetDirectories(fpath))
|
||||
foreach (string d in Directory.EnumerateDirectories(fpath))
|
||||
{
|
||||
results[d] = PermissionsHelper.GetRecursivePrivs(d);
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ namespace winPEAS.KnownFileCreds.Browsers.Chrome
|
||||
if (MyUtils.IsHighIntegrity())
|
||||
{
|
||||
string userFolder = $"{Environment.GetEnvironmentVariable("SystemDrive")}\\Users\\";
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
string[] parts = dir.Split('\\');
|
||||
@ -205,7 +205,7 @@ namespace winPEAS.KnownFileCreds.Browsers.Chrome
|
||||
Console.WriteLine("\r\n\r\n=== Chrome (All Users) ===");
|
||||
|
||||
string userFolder = string.Format("{0}\\Users\\", Environment.GetEnvironmentVariable("SystemDrive"));
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
string[] parts = dir.Split('\\');
|
||||
|
@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using winPEAS.Checks;
|
||||
using winPEAS.Helpers;
|
||||
@ -91,7 +92,7 @@ namespace winPEAS.KnownFileCreds.Browsers.Firefox
|
||||
if (MyUtils.IsHighIntegrity())
|
||||
{
|
||||
string userFolder = $"{Environment.GetEnvironmentVariable("SystemDrive")}\\Users\\";
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
string[] parts = dir.Split('\\');
|
||||
@ -102,7 +103,7 @@ namespace winPEAS.KnownFileCreds.Browsers.Firefox
|
||||
string userFirefoxBasePath = $"{dir}\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\";
|
||||
if (System.IO.Directory.Exists(userFirefoxBasePath))
|
||||
{
|
||||
string[] directories = Directory.GetDirectories(userFirefoxBasePath);
|
||||
var directories = Directory.EnumerateDirectories(userFirefoxBasePath);
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
string firefoxCredentialFile3 = $"{directory}\\{"key3.db"}";
|
||||
@ -129,7 +130,7 @@ namespace winPEAS.KnownFileCreds.Browsers.Firefox
|
||||
|
||||
if (Directory.Exists(userFirefoxBasePath))
|
||||
{
|
||||
string[] directories = Directory.GetDirectories(userFirefoxBasePath);
|
||||
var directories = Directory.EnumerateDirectories(userFirefoxBasePath);
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
string firefoxCredentialFile3 = $"{directory}\\{"key3.db"}";
|
||||
@ -163,7 +164,7 @@ namespace winPEAS.KnownFileCreds.Browsers.Firefox
|
||||
if (MyUtils.IsHighIntegrity())
|
||||
{
|
||||
string userFolder = $"{Environment.GetEnvironmentVariable("SystemDrive")}\\Users\\";
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
string[] parts = dir.Split('\\');
|
||||
@ -194,7 +195,7 @@ namespace winPEAS.KnownFileCreds.Browsers.Firefox
|
||||
// parses a Firefox history file via regex
|
||||
if (Directory.Exists(path))
|
||||
{
|
||||
string[] directories = Directory.GetDirectories(path);
|
||||
var directories = Directory.EnumerateDirectories(path);
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
string firefoxHistoryFile = string.Format("{0}\\{1}", directory, "places.sqlite");
|
||||
@ -239,16 +240,16 @@ namespace winPEAS.KnownFileCreds.Browsers.Firefox
|
||||
|
||||
try
|
||||
{
|
||||
string[] dirs = Directory.GetDirectories(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Mozilla\\Firefox\\Profiles"));
|
||||
var dirs = Directory.EnumerateDirectories(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Mozilla\\Firefox\\Profiles")).ToList();
|
||||
|
||||
if (dirs.Length == 0)
|
||||
if (!dirs.Any())
|
||||
{
|
||||
return logins;
|
||||
}
|
||||
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
string[] files = Directory.GetFiles(dir, "signons.sqlite");
|
||||
string[] files = Directory.EnumerateFiles(dir, "signons.sqlite").ToArray();
|
||||
if (files.Length > 0)
|
||||
{
|
||||
signonsFile = files[0];
|
||||
@ -256,7 +257,7 @@ namespace winPEAS.KnownFileCreds.Browsers.Firefox
|
||||
}
|
||||
|
||||
// find "logins.json"file
|
||||
files = Directory.GetFiles(dir, "logins.json");
|
||||
files = Directory.EnumerateFiles(dir, "logins.json").ToArray();
|
||||
if (files.Length > 0)
|
||||
{
|
||||
loginsFile = files[0];
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text.RegularExpressions;
|
||||
@ -121,8 +122,8 @@ namespace winPEAS.KnownFileCreds.Browsers
|
||||
}
|
||||
|
||||
string userFolder = string.Format("{0}\\Users\\", Environment.GetEnvironmentVariable("SystemDrive"));
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
foreach (string dir in dirs)
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
foreach (var dir in dirs)
|
||||
{
|
||||
string[] parts = dir.Split('\\');
|
||||
string userName = parts[parts.Length - 1];
|
||||
@ -132,7 +133,7 @@ namespace winPEAS.KnownFileCreds.Browsers
|
||||
|
||||
if (Directory.Exists(userIEBookmarkPath))
|
||||
{
|
||||
string[] bookmarkPaths = Directory.GetFiles(userIEBookmarkPath, "*.url", SearchOption.AllDirectories);
|
||||
string[] bookmarkPaths = Directory.EnumerateFiles(userIEBookmarkPath, "*.url", SearchOption.AllDirectories).ToArray();
|
||||
if (bookmarkPaths.Length != 0)
|
||||
{
|
||||
foreach (string bookmarkPath in bookmarkPaths)
|
||||
@ -180,7 +181,7 @@ namespace winPEAS.KnownFileCreds.Browsers
|
||||
|
||||
string userIEBookmarkPath = string.Format("{0}\\Favorites\\", System.Environment.GetEnvironmentVariable("USERPROFILE"));
|
||||
|
||||
string[] bookmarkPaths = Directory.GetFiles(userIEBookmarkPath, "*.url", SearchOption.AllDirectories);
|
||||
string[] bookmarkPaths = Directory.EnumerateFiles(userIEBookmarkPath, "*.url", SearchOption.AllDirectories).ToArray();
|
||||
|
||||
foreach (string bookmarkPath in bookmarkPaths)
|
||||
{
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
@ -44,7 +45,7 @@ namespace winPEAS.KnownFileCreds
|
||||
if (MyUtils.IsHighIntegrity())
|
||||
{
|
||||
string userFolder = string.Format("{0}\\Users\\", Environment.GetEnvironmentVariable("SystemDrive"));
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
string[] parts = dir.Split('\\');
|
||||
@ -250,7 +251,7 @@ namespace winPEAS.KnownFileCreds
|
||||
if (MyUtils.IsHighIntegrity())
|
||||
{
|
||||
string userFolder = string.Format("{0}\\Users\\", Environment.GetEnvironmentVariable("SystemDrive"));
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
string[] parts = dir.Split('\\');
|
||||
@ -261,7 +262,7 @@ namespace winPEAS.KnownFileCreds
|
||||
string recentPath = string.Format("{0}\\AppData\\Roaming\\Microsoft\\Windows\\Recent\\", dir);
|
||||
try
|
||||
{
|
||||
string[] recentFiles = Directory.GetFiles(recentPath, "*.lnk", SearchOption.AllDirectories);
|
||||
string[] recentFiles = Directory.EnumerateFiles(recentPath, "*.lnk", SearchOption.AllDirectories).ToArray();
|
||||
|
||||
if (recentFiles.Length != 0)
|
||||
{
|
||||
@ -298,7 +299,7 @@ namespace winPEAS.KnownFileCreds
|
||||
{
|
||||
string recentPath = string.Format("{0}\\Microsoft\\Windows\\Recent\\", System.Environment.GetEnvironmentVariable("APPDATA"));
|
||||
|
||||
string[] recentFiles = Directory.GetFiles(recentPath, "*.lnk", SearchOption.AllDirectories);
|
||||
var recentFiles = Directory.EnumerateFiles(recentPath, "*.lnk", SearchOption.AllDirectories);
|
||||
|
||||
foreach (string recentFile in recentFiles)
|
||||
{
|
||||
@ -346,7 +347,7 @@ namespace winPEAS.KnownFileCreds
|
||||
if (MyUtils.IsHighIntegrity())
|
||||
{
|
||||
string userFolder = string.Format("{0}\\Users\\", Environment.GetEnvironmentVariable("SystemDrive"));
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
string[] parts = dir.Split('\\');
|
||||
@ -361,10 +362,10 @@ namespace winPEAS.KnownFileCreds
|
||||
{
|
||||
if (System.IO.Directory.Exists(userDPAPIBasePath))
|
||||
{
|
||||
string[] directories = Directory.GetDirectories(userDPAPIBasePath);
|
||||
var directories = Directory.EnumerateDirectories(userDPAPIBasePath);
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
string[] files = Directory.GetFiles(directory);
|
||||
var files = Directory.EnumerateFiles(directory);
|
||||
|
||||
foreach (string file in files)
|
||||
{
|
||||
@ -374,11 +375,11 @@ namespace winPEAS.KnownFileCreds
|
||||
DateTime lastModified = System.IO.File.GetLastWriteTime(file);
|
||||
string fileName = System.IO.Path.GetFileName(file);
|
||||
results.Add(new Dictionary<string, string>()
|
||||
{
|
||||
{ "MasterKey", file },
|
||||
{ "Accessed", string.Format("{0}", lastAccessed) },
|
||||
{ "Modified", string.Format("{0}", lastModified) },
|
||||
});
|
||||
{
|
||||
{ "MasterKey", file },
|
||||
{ "Accessed", string.Format("{0}", lastAccessed) },
|
||||
{ "Modified", string.Format("{0}", lastModified) },
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -398,10 +399,10 @@ namespace winPEAS.KnownFileCreds
|
||||
{
|
||||
if (System.IO.Directory.Exists(userDPAPIBasePath))
|
||||
{
|
||||
string[] directories = Directory.GetDirectories(userDPAPIBasePath);
|
||||
var directories = Directory.EnumerateDirectories(userDPAPIBasePath);
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
string[] files = Directory.GetFiles(directory);
|
||||
var files = Directory.EnumerateFiles(directory);
|
||||
|
||||
foreach (string file in files)
|
||||
{
|
||||
@ -439,7 +440,7 @@ namespace winPEAS.KnownFileCreds
|
||||
if (MyUtils.IsHighIntegrity())
|
||||
{
|
||||
string userFolder = string.Format("{0}\\Users\\", Environment.GetEnvironmentVariable("SystemDrive"));
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
@ -455,8 +456,8 @@ namespace winPEAS.KnownFileCreds
|
||||
{
|
||||
if (System.IO.Directory.Exists(userCredFilePath))
|
||||
{
|
||||
string[] systemFiles = Directory.GetFiles(userCredFilePath);
|
||||
if ((systemFiles != null) && (systemFiles.Length != 0))
|
||||
var systemFiles = Directory.EnumerateFiles(userCredFilePath);
|
||||
if ((systemFiles != null))
|
||||
{
|
||||
foreach (string file in systemFiles)
|
||||
{
|
||||
@ -481,14 +482,14 @@ namespace winPEAS.KnownFileCreds
|
||||
|
||||
string desc = Encoding.Unicode.GetString(descBytes);
|
||||
results.Add(new Dictionary<string, string>()
|
||||
{
|
||||
{ "CredFile", file },
|
||||
{ "Description", desc },
|
||||
{ "MasterKey", string.Format("{0}", guidMasterKey) },
|
||||
{ "Accessed", string.Format("{0}", lastAccessed) },
|
||||
{ "Modified", string.Format("{0}", lastModified) },
|
||||
{ "Size", string.Format("{0}", size) },
|
||||
});
|
||||
{
|
||||
{ "CredFile", file },
|
||||
{ "Description", desc },
|
||||
{ "MasterKey", string.Format("{0}", guidMasterKey) },
|
||||
{ "Accessed", string.Format("{0}", lastAccessed) },
|
||||
{ "Modified", string.Format("{0}", lastModified) },
|
||||
{ "Size", string.Format("{0}", size) },
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -497,8 +498,8 @@ namespace winPEAS.KnownFileCreds
|
||||
}
|
||||
|
||||
string systemFolder = string.Format("{0}\\System32\\config\\systemprofile\\AppData\\Local\\Microsoft\\Credentials", Environment.GetEnvironmentVariable("SystemRoot"));
|
||||
string[] files = Directory.GetFiles(systemFolder);
|
||||
if ((files != null) && (files.Length != 0))
|
||||
var files = Directory.EnumerateFiles(systemFolder);
|
||||
if ((files != null))
|
||||
{
|
||||
foreach (string file in files)
|
||||
{
|
||||
@ -543,9 +544,9 @@ namespace winPEAS.KnownFileCreds
|
||||
|
||||
foreach (string userCredFilePath in userCredFilePaths)
|
||||
{
|
||||
if (System.IO.Directory.Exists(userCredFilePath))
|
||||
if (Directory.Exists(userCredFilePath))
|
||||
{
|
||||
string[] files = Directory.GetFiles(userCredFilePath);
|
||||
var files = Directory.EnumerateFiles(userCredFilePath);
|
||||
|
||||
foreach (string file in files)
|
||||
{
|
||||
|
@ -67,7 +67,7 @@ namespace winPEAS.KnownFileCreds
|
||||
if (MyUtils.IsHighIntegrity())
|
||||
{
|
||||
string userFolder = string.Format("{0}\\Users\\", Environment.GetEnvironmentVariable("SystemDrive"));
|
||||
string[] dirs = Directory.GetDirectories(userFolder);
|
||||
var dirs = Directory.EnumerateDirectories(userFolder);
|
||||
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ namespace winPEAS.KnownFileCreds.SuperPutty
|
||||
try
|
||||
{
|
||||
var path = $"{dir}\\Documents\\SuperPuTTY\\";
|
||||
var files = Directory.GetFiles(path, filter, SearchOption.TopDirectoryOnly);
|
||||
var files = Directory.EnumerateFiles(path, filter, SearchOption.TopDirectoryOnly);
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user