public override void Produce() { base.Produce(); Dictionary <string, string> context = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); context["$clrversion$"] = Environment.Version.ToString(); for (int i = 1; i <= 10; i++) { context["$guid" + i + "$"] = Guid.NewGuid().ToString(); } context["$itemname$"] = base.Project.DefaultNamespace; context["$machinename$"] = Environment.MachineName; context["$projectname$"] = this.SyncfusionWPFAssemblyNamespace; context["$registeredorganization$"] = ConvertUtilities.RegisteredOrganization; context["$rootnamespace$"] = this.SyncfusionWPFAssemblyNamespace; context["$safeitemname$"] = base.Project.DefaultNamespace; context["$safeprojectname$"] = this.SyncfusionWPFAssemblyNamespace; context["$time$"] = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); context["$userdomain$"] = Environment.UserDomainName; context["$username$"] = Environment.UserName; context["$webnamespace$"] = this.SyncfusionWPFAssemblyNamespace; context["$year$"] = DateTime.Now.Year.ToString("0000"); foreach (string sourceDirectory in this.GetFullSourceDirectories(this.CategoryPath, false)) { BaseProducer.TransformAllFiles(this, this.FullTargetDirectory, sourceDirectory, context, new BaseProducer.TransformCallback(this.TransformFile)); } }
public Start() { productProducer = new BaseProducer <Product>("product_queue"); supplierProducer = new BaseProducer <Supplier>("supplier_queue"); productService = new ProductService(); supplierService = new SupplierService(); }
protected virtual bool TransformFile(BaseProducer producer, string source, string target, IDictionary context) { if ((source != null) && source.Contains("cf_template.xml")) { return(false); } return(true); }
private static string FindDomainDNSServer(string domain) { foreach (var dc in BaseProducer.GetDomainControllers()) { var result = dc.Value; var dcName = result.GetProperty("samaccountname").TrimEnd('$'); if (CheckHostPort($"{dcName}.{domain}", 53)) { return(dcName); } } return(null); }
/// <summary> /// Post-processing on wrapper objects to set stealth/domain controller targets /// </summary> /// <param name="wrapper"></param> private static void PostProcessWrapper(LdapWrapper wrapper) { var opts = Options.Instance; if (wrapper is Computer computer) { if (opts.Stealth && StealthProducer.IsSidStealthTarget(computer.ObjectIdentifier)) { computer.IsStealthTarget = true; } if (opts.ExcludeDomainControllers && BaseProducer.IsSidDomainController(computer.ObjectIdentifier)) { computer.IsDomainController = true; } } }
/// <summary> /// 根据点赞类型获取对象实例 /// </summary> /// <param name="patternType">模式类型</param> /// <param name="constructorArgs">可变的构造函数列表</param> /// <returns></returns> private static BaseProducer GetInstance(PublishPatternType patternType, params object[] constructorArgs) { if (!InstanceCacheDic.ContainsKey(patternType)) { lock (locker) { if (!InstanceCacheDic.ContainsKey(patternType)) { string assemblyName = "Stack.RabbitMQ.Producers"; string className = $"{assemblyName}.{patternType.ToString()}Producer"; BaseProducer instance = (BaseProducer)Activator.CreateInstance(Type.GetType(className), constructorArgs); InstanceCacheDic.Add(patternType, instance); } } } return(InstanceCacheDic[patternType]); }
internal static async Task CompleteOutput() { PrintStatus(); Console.WriteLine($"Enumeration finished in {_runTimer.Elapsed}"); if (Options.Instance.DumpComputerStatus) { CompleteComputerStatusOutput(); await _computerStatusTask; } var domainName = Helpers.NormalizeDomainName(Options.Instance.Domain); var forestName = Helpers.GetForestName(domainName).ToUpper(); var dcSids = BaseProducer.GetDomainControllers(); var domainSid = new SecurityIdentifier(dcSids.First().Key).AccountDomainSid.Value.ToUpper(); var enterpriseDomainControllers = new Group(null) { ObjectIdentifier = $"{forestName}-S-1-5-9", Domain = forestName, Members = BaseProducer.GetDomainControllers().Keys.Select(sid => new GenericMember { MemberId = sid, MemberType = LdapTypeEnum.Computer }).ToArray() }; enterpriseDomainControllers.Properties.Add("name", $"ENTERPRISE DOMAIN CONTROLLERS@{forestName}"); enterpriseDomainControllers.Properties.Add("domain", forestName); _groupOutput.Value.WriteObject(enterpriseDomainControllers); var members = new[] { new GenericMember { MemberType = LdapTypeEnum.Group, MemberId = $"{domainSid}-515" }, new GenericMember { MemberType = LdapTypeEnum.Group, MemberId = $"{domainSid}-513" } }; var everyone = new Group(null) { ObjectIdentifier = $"{domainName}-S-1-1-0", Domain = domainName, Members = members }; everyone.Properties.Add("name", $"EVERYONE@{domainName}"); _groupOutput.Value.WriteObject(everyone); var authUsers = new Group(null) { ObjectIdentifier = $"{domainName}-S-1-5-11", Domain = domainName, Members = members }; authUsers.Properties.Add("name", $"AUTHENTICATED USERS@{domainName}"); _groupOutput.Value.WriteObject(authUsers); //Write objects for common principals foreach (var seen in SeenCommonPrincipals) { var domain = seen.Key; var sid = seen.Value; CommonPrincipal.GetCommonSid(sid, out var principal); sid = Helpers.ConvertCommonSid(sid, domain); switch (principal.Type) { case LdapTypeEnum.User: var u = new User(null) { ObjectIdentifier = sid }; u.Properties.Add("name", $"{principal.Name}@{domain}".ToUpper()); u.Properties.Add("domain", domain); _userOutput.Value.WriteObject(u); break; case LdapTypeEnum.Computer: var c = new Computer(null) { ObjectIdentifier = sid }; c.Properties.Add("name", $"{principal.Name}@{domain}".ToUpper()); c.Properties.Add("domain", domain); _computerOutput.Value.WriteObject(c); break; case LdapTypeEnum.Group: var g = new Group(null) { ObjectIdentifier = sid }; g.Properties.Add("name", $"{principal.Name}@{domain}".ToUpper()); g.Properties.Add("domain", domain); _groupOutput.Value.WriteObject(g); break; default: throw new ArgumentOutOfRangeException(); } } _runTimer.Stop(); _statusTimer.Stop(); if (_userOutput.IsValueCreated) { _userOutput.Value.CloseWriter(); } if (_computerOutput.IsValueCreated) { _computerOutput.Value.CloseWriter(); } if (_groupOutput.IsValueCreated) { _groupOutput.Value.CloseWriter(); } if (_domainOutput.IsValueCreated) { _domainOutput.Value.CloseWriter(); } if (_gpoOutput.IsValueCreated) { _gpoOutput.Value.CloseWriter(); } if (_ouOutput.IsValueCreated) { _ouOutput.Value.CloseWriter(); } _userOutput = new Lazy <JsonFileWriter>(() => new JsonFileWriter("users"), false); _groupOutput = new Lazy <JsonFileWriter>(() => new JsonFileWriter("groups"), false); _computerOutput = new Lazy <JsonFileWriter>(() => new JsonFileWriter("computers"), false); _domainOutput = new Lazy <JsonFileWriter>(() => new JsonFileWriter("domains"), false); _gpoOutput = new Lazy <JsonFileWriter>(() => new JsonFileWriter("gpos"), false); _ouOutput = new Lazy <JsonFileWriter>(() => new JsonFileWriter("ous"), false); string finalName; var options = Options.Instance; if (options.NoZip || options.NoOutput) { return; } if (options.ZipFilename != null) { finalName = Helpers.ResolveFileName(Options.Instance.ZipFilename, "zip", true); } else { finalName = Helpers.ResolveFileName("BloodHound", "zip", true); } Console.WriteLine($"Compressing data to {finalName}"); var buffer = new byte[4096]; if (File.Exists(finalName)) { Console.WriteLine("Zip File already exists, randomizing filename"); finalName = Helpers.ResolveFileName(Path.GetRandomFileName(), "zip", true); Console.WriteLine($"New filename is {finalName}"); } using (var zipStream = new ZipOutputStream(File.Create(finalName))) { //Set level to 9, maximum compressions zipStream.SetLevel(9); if (options.EncryptZip) { if (!options.Loop) { var password = ZipPasswords.Value; zipStream.Password = password; Console.WriteLine($"Password for Zip file is {password}. Unzip files manually to upload to interface"); } } else { Console.WriteLine("You can upload this file directly to the UI"); } foreach (var file in UsedFileNames) { var entry = new ZipEntry(Path.GetFileName(file)) { DateTime = DateTime.Now }; zipStream.PutNextEntry(entry); using (var fileStream = File.OpenRead(file)) { int source; do { source = await fileStream.ReadAsync(buffer, 0, buffer.Length); zipStream.Write(buffer, 0, source); } while (source > 0); } File.Delete(file); } zipStream.Finish(); } if (options.Loop) { ZipFileNames.Add(finalName); } UsedFileNames.Clear(); }
protected virtual bool TransformFile(BaseProducer producer, string source, string target, IDictionary context) { if ((source != null) && source.Contains("cf_template.xml")) { return false; } return true; }
public virtual string Produce(bool addFile) { Hashtable dic = new Hashtable(); dic.Add("Project", CodeDomProducer.Project); dic.Add("Producer", CodeDomProducer); dic.Add("TemplateProducer", this); string productionTargetPath = CodeDomProducer.GetProductionTargetPath(ProductionNode, FinalizeTargetPath(), IsWebType, false); string tempPath = (CodeDomProducer.TargetProductionOptions & TargetProductionOptions.CreateTempFile) == TargetProductionOptions.None ? null : productionTargetPath + ".tmp"; dic.Add("TargetPath", productionTargetPath); dic.Add("TempTargetPath", tempPath); if (!RaiseProducing(dic)) { return(null); } try { if (tempPath == null) { BaseProducer.CreateFileDirectory(productionTargetPath, CodeDomProducer); BaseProducer.PathUnprotect(productionTargetPath, CodeDomProducer); } else { BaseProducer.CreateFileDirectory(tempPath, CodeDomProducer); } bool append = false; if (File.Exists(productionTargetPath) && CodeDomProducer.IsGeneratedFile(productionTargetPath)) { if (tempPath != null) { IOUtilities.PathOverwrite(productionTargetPath, tempPath, true); } append = true; } string target = tempPath ?? productionTargetPath; try { var unit = CreateCodeCompileUnit(); if (unit == null) { return(null); } IOUtilities.WrapSharingViolations(() => { using (StreamWriter streamWriter = new StreamWriter(target, append, CodeDomProducer.OutputEncoding)) { IndentedTextWriter indentedTextWriter = ((CodeDomProducer.ProductionFlags & ProductionFlags.RemoveDates) != ProductionFlags.RemoveDates ? new IndentedTextWriter(streamWriter) : new NoDiffIndentedTextWriter(streamWriter)); CodeDomProducer.CodeDomProvider.GenerateCodeFromCompileUnit(unit, indentedTextWriter, CodeDomProducer.CodeGeneratorOptions); } }); } catch (Exception ex) { CodeFluentRuntimeException violationException = IOUtilities.GetSharingViolationException(target, ex); if (violationException != null) { throw violationException; } throw; } if (File.Exists(tempPath ?? productionTargetPath)) { CodeDomProducer.RaiseProduction(this, ProductionEventArgs.CreateFileWriteEvent(productionTargetPath, GetType().FullName)); if (tempPath != null) { BaseProducer.FileOverwrite(tempPath, productionTargetPath, CodeDomProducer, false); } CodeDomProducer.AddToGeneratedFiles(productionTargetPath); } } finally { if (tempPath != null && File.Exists(tempPath)) { File.Delete(tempPath); } } RaiseProduced(); if (addFile) { CodeDomProducer.AddFileName(productionTargetPath); } return(productionTargetPath); }