|
1 | | -using CommandLineParser.Arguments; |
| 1 | +using CommandLineParser.Arguments; |
2 | 2 | using Nett; |
3 | 3 | using NLog; |
4 | 4 | using SnaffCore.Concurrency; |
@@ -101,7 +101,7 @@ private static Options ParseImpl(string[] args) |
101 | 101 | SwitchArgument findSharesOnlyArg = new SwitchArgument('a', "sharesonly", |
102 | 102 | "Stops after finding shares, doesn't walk their filesystems.", false); |
103 | 103 | ValueArgument<string> compExclusionArg = new ValueArgument<string>('k', "exclusions", "Path to a file containing a list of computers to exclude from scanning."); |
104 | | - ValueArgument<string> compTargetArg = new ValueArgument<string>('n', "comptarget", "Computer (or comma separated list) to target."); |
| 104 | + ValueArgument<string> compTargetArg = new ValueArgument<string>('n', "comptarget", "List of computers in a file(e.g C:\targets.txt), a single Computer (or comma separated list) to target."); |
105 | 105 | ValueArgument<string> ruleDirArg = new ValueArgument<string>('p', "rulespath", "Path to a directory full of toml-formatted rules. Snaffler will load all of these in place of the default ruleset."); |
106 | 106 | ValueArgument<string> logType = new ValueArgument<string>('t', "logtype", "Type of log you would like to output. Currently supported options are plain and JSON. Defaults to plain."); |
107 | 107 | ValueArgument<string> timeOutArg = new ValueArgument<string>('e', "timeout", |
@@ -235,19 +235,23 @@ private static Options ParseImpl(string[] args) |
235 | 235 | throw new Exception("Failed to get a valid list of excluded computers from the excluded computers list."); |
236 | 236 | } |
237 | 237 | } |
| 238 | + |
238 | 239 | if (compTargetArg.Parsed) |
239 | 240 | { |
240 | | - string[] compTargets = null; |
241 | | - if (compTargetArg.Value.Contains(",")) |
| 241 | + List<string> compTargets = new List<string>(); |
| 242 | + if (compTargetArg.Value.Contains(Path.DirectorySeparatorChar)) |
242 | 243 | { |
243 | | - compTargets = compTargetArg.Value.Split(','); |
244 | | - |
| 244 | + compTargets.AddRange(File.ReadLines(compTargetArg.Value).Select(line => line.Trim())); |
| 245 | + } |
| 246 | + else if (compTargetArg.Value.Contains(",")) |
| 247 | + { |
| 248 | + compTargets.AddRange(compTargetArg.Value.Split(',').Select(x => x.Trim())); |
245 | 249 | } |
246 | 250 | else |
247 | 251 | { |
248 | | - compTargets = new string[] { compTargetArg.Value }; |
| 252 | + compTargets.Add(compTargetArg.Value.Trim()); |
249 | 253 | } |
250 | | - parsedConfig.ComputerTargets = compTargets; |
| 254 | + parsedConfig.ComputerTargets = compTargets.ToArray(); |
251 | 255 | } |
252 | 256 |
|
253 | 257 | if (findSharesOnlyArg.Parsed) |
|
0 commit comments