private void lstVRules_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (lstVRules.SelectedIndex != -1) { RuleFile ruleSelected = (RuleFile)lstVRules.SelectedValue; NewRule ruleDetail = new NewRule(ruleSelected); ruleDetail.ShowDialog(); ruleSelected = ruleDetail.rule; using (var db = new DataContext()) { db.PersistEntity(ruleSelected); db.SaveChanges(); } App.Single.UpdateWork(inspector); List <RuleFile> lstRules = (List <RuleFile>)lstVRules.ItemsSource; lstVRules.ItemsSource = null; lstVRules.ItemsSource = lstRules; } }
private void RulesRefresh(RuleFile rule_, Boolean added = false) { List <RuleFile> lstRules = new List <RuleFile>(); if (rule_ == null) { using (var db = new DataContext()) { db.AttachEntity(inspector); inspector.Rules.ToList().ForEach(rule => SetImageRule(rule)); lstRules = inspector.Rules.ToList(); } } else { lstRules = (List <RuleFile>)lstVRules.ItemsSource; if (added) { lstRules.Add(rule_); } else { lstRules.Remove(rule_); } } lstVRules.ItemsSource = null; lstVRules.ItemsSource = lstRules; }
public void VerifyEmbeddedRulesAreValid() { var analyzer = new AsaAnalyzer(); var ruleFile = RuleFile.LoadEmbeddedFilters(); Assert.IsTrue(!analyzer.EnumerateRuleIssues(ruleFile.GetRules()).Any()); }
public void SetRule(RuleFile rule) { this.rule = (RuleFileDate)rule; dateFirst.SelectedDate = this.rule.DateFirst; dateLast.SelectedDate = this.rule.DateLast; }
public void LoadFilters(string filterLoc = "") { if (!string.IsNullOrEmpty(filterLoc)) { try { using (StreamReader file = System.IO.File.OpenText(filterLoc)) { config = JsonSerializer.Deserialize <RuleFile>(file.ReadToEnd()); Log.Information(Strings.Get("LoadedAnalyses"), filterLoc); } if (config == null) { Log.Debug("No filters this time."); return; } DumpFilters(); } catch (Exception e) when( e is UnauthorizedAccessException || e is ArgumentException || e is ArgumentNullException || e is PathTooLongException || e is DirectoryNotFoundException || e is FileNotFoundException || e is NotSupportedException) { config = new RuleFile(); //Let the user know we couldn't load their file Log.Warning(Strings.Get("Err_MalformedFilterFile"), filterLoc); return; } } }
void link_Click(object sender, RoutedEventArgs e) { Hyperlink link = sender as Hyperlink; RuleFile file = link.DataContext as RuleFile; if (file.FILEPATH == null || file.FILEPATH.Length == 0) { MessageBox.Show("没找到附件内容"); return; } System.Windows.Forms.SaveFileDialog dialog = new System.Windows.Forms.SaveFileDialog(); dialog.FileName = file.FILENAME; dialog.DefaultExt = file.FILETYPE; System.Windows.Forms.DialogResult dialogResult = dialog.ShowDialog(); if (dialogResult == System.Windows.Forms.DialogResult.OK || dialogResult == System.Windows.Forms.DialogResult.Yes) { byte[] result = file.FILEPATH; try { using (Stream stream = dialog.OpenFile()) { stream.Write(result, 0, result.Length); stream.Close(); MessageBox.Show("导出成功"); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } }
public static RuleFile GetFileRule(RuleFile.TypeFileRule type) { RuleFile res = null; switch (type) { case RuleFile.TypeFileRule.Date: res = new RuleFileDate(); break; case RuleFile.TypeFileRule.Extension: res = new RuleFileExtension(); break; case RuleFile.TypeFileRule.FileName: res = new RuleFileName(); break; } if (res != null) { res.RuleType = (int)type; } return(res); }
void DeleteAttach_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { Image image = sender as Image; RuleFile rulesFiile = image.Tag as RuleFile; _currentRulesFiiles.Remove(rulesFiile); AddHyperlinkFileTiltle(_currentRulesFiiles); }
/// <summary> /// 上传到服务器指定目录 /// </summary> /// <param name="ServerPath"></param> /// <param name="EnclouseFolderPath"></param> /// <returns></returns> private bool UpLodeEnclouseFolder(string ServerPath) { bool isresult = false; string SereverAndEnclousePath = ""; //获取文件名 string fileName = ServerPath.Substring(ServerPath.LastIndexOf("\\") + 1); //string getPath = FileManageHelper.GetPath(); //SereverAndEnclousePath = getPath + fileName; SereverAndEnclousePath = System.IO.Path.Combine(FileManageHelper.GetPath(), fileName); FileStream fs = null; try { WebClient web = new WebClient(); web.Credentials = CredentialCache.DefaultCredentials; //初始化上传文件 打开读取 fs = new FileStream(ServerPath, FileMode.Open, FileAccess.Read); if (fs.Length / 1024 / 1024 > 20) { MessageBox.Show("上传附件不支持超过20M大小的文件。"); isresult = false; } else { BinaryReader br = new BinaryReader(fs); byte[] btArray = br.ReadBytes((int)fs.Length); Stream uplodeStream = web.OpenWrite(SereverAndEnclousePath, "PUT"); if (uplodeStream.CanWrite) { uplodeStream.Write(btArray, 0, btArray.Length); uplodeStream.Flush(); uplodeStream.Close(); rulefile = new RuleFile(); //将文件以二进制形式存储到数据库中 rulefile.FILEPATH = btArray; rulefile.FILENAME = fileName.Substring(0, fileName.LastIndexOf(".")).ToString(); //显示文件格式 rulefile.FILEFORM = fileName; rulefile.FILESIZE = (fs.Length).ToString(); rulefile.FILETYPE = "制度管理"; //rulefile.MAINGUID = currentRegulate.GUID;//存外键 currentFileList.Add(rulefile); isresult = true; } } } catch (Exception ex) { } finally { fs.Close();//上传成功后,关闭流 } return(isresult); }
public NewRule(RuleFile rule) { InitializeComponent(); this.rule = rule; rbtDate.IsEnabled = false; rbtExtension.IsEnabled = false; rbtName.IsEnabled = false; this.Owner = App.ActualInspectorDetail; }
private Analyzer GetAnalyzerForRule(Rule rule) { var file = new RuleFile() { Rules = new List <Rule>() { rule } }; return(new Analyzer(AsaHelpers.GetPlatform(), file)); }
private Analyzer GetAnalyzerForRule(AsaRule rule) { var file = new RuleFile() { AsaRules = new List <AsaRule>() { rule } }; return(new AsaAnalyzer()); }
private void pnlNewRule_MouseUp(object sender, MouseButtonEventArgs e) { NewRule newRule = new NewRule(); newRule.ShowDialog(); if (newRule.rule != null) { RuleFile rule = newRule.rule; using (var db = new DataContext()) { db.AttachEntity(inspector); inspector.Rules.Add(rule); Boolean exist = true; if (inspector.InspectorId == 0) { inspector.Name = txtName.Text; inspector.Path = txtPath.Text; if (rbtMoveSubDir.IsChecked.HasValue && rbtMoveSubDir.IsChecked.Value) { inspector.Action = (int)Inspector.TypeActions.MoveSubDir; inspector.SubDirAction = txtPathAction.Text; } else { inspector.Action = (int)Inspector.TypeActions.DeleteFiles; inspector.SubDirAction = String.Empty; } db.PersistEntity(inspector); exist = false; } db.SaveChanges(); if (!exist) { App.Single.AddWork(inspector); } else { App.Single.UpdateWork(inspector); } } RulesRefresh(rule, true); } }
public Analyzer(PLATFORM platform, string?filterLocation = null) { config = new RuleFile(); if (string.IsNullOrEmpty(filterLocation)) { LoadEmbeddedFilters(); } else { LoadFilters(filterLocation); } OsName = platform; }
public void VerifyFileMonitorAsFile() { var RuleName = "AndRule"; var andRule = new AsaRule(RuleName) { Expression = "0 AND 1", ResultType = RESULT_TYPE.FILE, Flag = ANALYSIS_RESULT_TYPE.FATAL, Clauses = new List <Clause>() { new Clause(Operation.Equals, "Path") { Label = "0", Data = new List <string>() { "TestPath1" } }, new Clause(Operation.IsTrue, "IsExecutable") { Label = "1" } } }; var analyzer = new AsaAnalyzer(); var opts = new CompareCommandOptions(null, "SecondRun") { ApplySubObjectRulesToMonitor = true }; var ruleFile = new RuleFile(new AsaRule[] { andRule }); var results = AttackSurfaceAnalyzerClient.AnalyzeMonitored(opts, analyzer, new MonitorObject[] { testPathOneObject }, ruleFile); Assert.IsTrue(results.Any(x => x.Value.Any(y => y.Identity == testPathOneObject.Identity && y.Rules.Contains(andRule)))); opts = new CompareCommandOptions(null, "SecondRun") { ApplySubObjectRulesToMonitor = false }; results = AttackSurfaceAnalyzerClient.AnalyzeMonitored(opts, analyzer, new MonitorObject[] { testPathOneObject }, ruleFile); Assert.IsFalse(results.Any(x => x.Value.Any(y => y.Identity == testPathOneObject.Identity && y.Rules.Contains(andRule)))); }
private void SaveRule() { Boolean typeChoose = false; RuleFile ruleAux = null; if (rbtDate.IsChecked.HasValue && rbtDate.IsChecked.Value) { ruleAux = new RuleFileDate(); ruleAux.RuleType = (int)RuleFile.TypeFileRule.Date; ruleAux.ImagePath = @"/images/icon_ruleFileDate.png"; typeChoose = true; } else if (rbtExtension.IsChecked.HasValue && rbtExtension.IsChecked.Value) { ruleAux = new RuleFileExtension(); ruleAux.RuleType = (int)RuleFile.TypeFileRule.Extension; ruleAux.ImagePath = @"/images/icon_ruleFileExtension.png"; typeChoose = true; } else if (rbtName.IsChecked.HasValue && rbtName.IsChecked.Value) { ruleAux = new RuleFileName(); ruleAux.RuleType = (int)RuleFile.TypeFileRule.FileName; ruleAux.ImagePath = @"/images/icon_ruleFileName.png"; typeChoose = true; } if (!typeChoose) { MessageBox.Show("Necesita especificar el tipo de la regla"); return; } RuleControl rControl = (RuleControl)pnlExtensionControl.Children[0]; rule = rControl.GetRule(); rule.RuleType = ruleAux.RuleType; rule.ImagePath = ruleAux.ImagePath; rule.Name = txtName.Text; this.Close(); }
private void SetImageRule(RuleFile rule) { switch ((RuleFile.TypeFileRule)rule.RuleType) { case RuleFile.TypeFileRule.Date: rule.ImagePath = @"/images/icon_ruleFileDate.png"; break; case RuleFile.TypeFileRule.Extension: rule.ImagePath = @"/images/icon_ruleFileExtension.png"; break; case RuleFile.TypeFileRule.FileName: rule.ImagePath = @"/images/icon_ruleFileName.png"; break; } }
/// <summary> /// 附件列表,单选 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void chkCell_Click(object sender, RoutedEventArgs e) { CheckBox box = sender as CheckBox; bool? isChecked = box.IsChecked; if (!isChecked.HasValue) { return; } rulefile = box.DataContext as RuleFile; bool checkedState = isChecked.Value; rulefile.IsChecked = isChecked.Value; if (rulefile.IsChecked == true) { currentFileList.Add(rulefile); } else { currentFileList.Remove(rulefile); } #region 判断全选和保存状态 int ischeckCount = (dgList.ItemsSource as List <RuleFile>).Count(p => p.IsChecked == true); if (ischeckCount == 1 || ischeckCount == 0) { btnSave.IsEnabled = true; } else { btnSave.IsEnabled = false; } foreach (RuleFile result in dgList.ItemsSource) { if (result.IsChecked != checkedState) { this.chkAll.IsChecked = null; return; } } chkAll.IsChecked = checkedState; #endregion }
void UploadAttchFile(string p_filetype) { OpenFileDialog dlg = new OpenFileDialog(); dlg.CheckFileExists = true; //检查文件是否存在 dlg.Multiselect = false; //是否允许多选,false表示单选 dlg.CheckPathExists = true; dlg.Filter = "All files (*.*)|*.*"; //文件过滤器 if (dlg.ShowDialog() != true) { return; } Stream fileStream = dlg.OpenFile(); if (fileStream == null) { return; } if (fileStream.Length / 1024 / 1024 > 20) { MessageBox.Show("上传附件不支持超过20M大小的文件。"); return; } byte[] arrFile = new byte[fileStream.Length]; fileStream.Read(arrFile, 0, arrFile.Length); RuleFile rulesFiile = new RuleFile(); rulesFiile.GUID = CO_IA.Client.Utility.NewGuid(); rulesFiile.MAINGUID = _currentTask.CHILDGUID; rulesFiile.FILEPATH = arrFile; rulesFiile.FILEFORM = dlg.FileName.ToString().Substring(dlg.FileName.ToString().LastIndexOf('.') + 1); rulesFiile.FILENAME = dlg.SafeFileName; rulesFiile.FILESIZE = fileStream.Length.ToString(); rulesFiile.FILETYPE = p_filetype; //SameAsTaskFile 一般任务附件 IntertaskFile 干扰任务附件 if (IsContainsFile(rulesFiile)) { MessageBox.Show("该附件已存在,请重新选择!"); return; } _currentRulesFiiles.Add(rulesFiile); AddHyperlinkFileTiltle(_currentRulesFiiles); }
/// <summary> /// 下载文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DownloadFile_Click_1(object sender, RoutedEventArgs e) { try { RuleFile summarize = (sender as System.Windows.Documents.Hyperlink).Tag as RuleFile; if (summarize == null) { return; } string docstr = summarize.FILEFORM.Substring(summarize.FILEFORM.LastIndexOf('.')); string serviceDocPath = FileManageHelper.ByteConvertDocService(summarize.FILEPATH, summarize.FILEFORM); WebClient webClient = new WebClient(); SaveFileDialog dlg = new SaveFileDialog(); dlg.FileName = "文件下载"; //dlg.Reset(); if (docstr == ".doc" || docstr == ".docx") { dlg.Filter += "Word 文件|*.doc;*.docx"; } else if (docstr == ".xls" || docstr == ".xlsx") { dlg.Filter += "Excel 文件|*.xls;*.xlsx"; } // dlg.Filter = "Office Files|*.doc;*.docx;*.xls;*.xlsx"; if (dlg.ShowDialog() == true) { try { webClient.DownloadFile(serviceDocPath, dlg.FileName); MessageBox.Show("文件下载成功!"); } catch (Exception) { throw; } } } catch (Exception ex) { //MessageBox.Show(ex.GetExceptionMessage()); } }
private void pnlDeleteRule_MouseUp(object sender, MouseButtonEventArgs e) { if (lstVRules.SelectedIndex != -1) { RuleFile ruleSelected = (RuleFile)lstVRules.SelectedValue; using (var db = new DataContext()) { db.RemoveEntity(ruleSelected); db.SaveChanges(); App.Single.UpdateWork(inspector); } RulesRefresh(ruleSelected); } else { System.Windows.MessageBox.Show("Por favor, seleccione una regla de la lista"); } }
public void LoadEmbeddedFilters() { try { var assembly = typeof(FileSystemObject).Assembly; var resourceName = "AttackSurfaceAnalyzer.analyses.json"; using (Stream stream = assembly.GetManifestResourceStream(resourceName)) using (StreamReader reader = new StreamReader(stream)) { config = JsonSerializer.Deserialize <RuleFile>(reader.ReadToEnd()); Log.Information(Strings.Get("LoadedAnalyses"), "Embedded"); } if (config == null) { Log.Debug("No filters today."); return; } DumpFilters(); } catch (Exception e) when( e is ArgumentNullException || e is ArgumentException || e is FileLoadException || e is FileNotFoundException || e is BadImageFormatException || e is NotImplementedException) { config = null; Log.Debug("Could not load filters {0} {1}", "Embedded", e.GetType().ToString()); // This is interesting. We shouldn't hit exceptions when loading the embedded resource. Dictionary <string, string> ExceptionEvent = new Dictionary <string, string>(); ExceptionEvent.Add("Exception Type", e.GetType().ToString()); AsaTelemetry.TrackEvent("EmbeddedAnalysesFilterLoadException", ExceptionEvent); } }
public Analyzer(PLATFORM platform, RuleFile filters) { OsName = platform; config = filters; }
bool IsContainsFile(RuleFile p_rulesFiile) { var list = _currentRulesFiiles.Where(p => p.FILESIZE == p_rulesFiile.FILESIZE && p.FILENAME == p_rulesFiile.FILENAME && p.FILEFORM == p_rulesFiile.FILEFORM).ToList(); return(list.Count > 0 ? true : false); }
public void SetRule(RuleFile rule) { this.rule = (RuleFileName)rule; txtNombre.Text = this.rule.NamePattern; }
private void dgList_MouseLeftButtonUp_1(object sender, MouseButtonEventArgs e) { #region 加载基本信息 rulefile = new RuleFile(); rulefile = dgList.SelectedItem as RuleFile; if (rulefile == null) { return; //防止单击空白或标题等触发该事件 } isAddOrUpdate = 1; //可以进行修改操作 if (rulefile.IsChecked == true) { rulefile.IsChecked = false; currentFileList.Remove(rulefile); } else { rulefile.IsChecked = true; currentFileList.Add(rulefile); } bool checkedState = rulefile.IsChecked; #endregion #region //预览文件 // string isxpsPath = FileManageHelper.GetPath() + rulefile.FILEFORM.Substring(0, rulefile.FILEFORM.LastIndexOf(".")).ToString() + ".xps"; if (System.IO.File.Exists(isxpsPath)) { //已经存xps文件,直接加载 using (XpsDocument xpsDoc = new XpsDocument(isxpsPath, FileAccess.Read)) { var fsxps = xpsDoc.GetFixedDocumentSequence(); xpsDocViewr.Document = fsxps; } } else { //创建xps文件,启动进程耗时 string serviceDocPathXPS = FileManageHelper.ByteConvertDocService(rulefile.FILEPATH, rulefile.FILEFORM); string xpsFilePath = serviceDocPathXPS.Substring(0, serviceDocPathXPS.LastIndexOf(".")).ToString() + ".xps"; var convertResults = OfficeToXps.ConvertToXps(serviceDocPathXPS, ref xpsFilePath); switch (convertResults.Result) { case ConversionResult.OK: try { using (XpsDocument xpsDoc = new XpsDocument(xpsFilePath, FileAccess.Read)) { var fsxps = xpsDoc.GetFixedDocumentSequence(); xpsDocViewr.Document = fsxps; } } catch (Exception ex) { } break; case ConversionResult.InvalidFilePath: // 处理文件路径错误或文件不存在 break; case ConversionResult.UnexpectedError: break; case ConversionResult.ErrorUnableToInitializeOfficeApp: // Office 未安装会出现这个异常 break; case ConversionResult.ErrorUnableToOpenOfficeFile: // 文件被占用会出现这个异常 break; case ConversionResult.ErrorUnableToAccessOfficeInterop: // Office 未安装会出现这个异常 break; case ConversionResult.ErrorUnableToExportToXps: // 微软 OFFICE Save As PDF 或 XPS 插件未安装异常 break; } } #endregion #region 判断全选和保存状态 int ischeckCount = (dgList.ItemsSource as List <RuleFile>).Count(p => p.IsChecked == true); if (ischeckCount == 1 || ischeckCount == 0) { btnSave.IsEnabled = true; isAddOrUpdate = 1;//可以进行修改操作 } else { btnSave.IsEnabled = false; isAddOrUpdate = 0; } foreach (RuleFile result in dgList.ItemsSource) { if (result.IsChecked != checkedState) { this.chkAll.IsChecked = null; return; } } chkAll.IsChecked = checkedState; #endregion }
public void SetRule(RuleFile rule) { this.rule = (RuleFileExtension)rule; txtExtension.Text = this.rule.ExtensionPattern; }
private void InitRulesAndTargets(string referencesDirectory, string ruleLocation, string targetLocation) { result = new RuleResultData(); ExceptionCollection exceptionCollection = FxCopOM.Initialize(); if ((exceptionCollection != null) && (exceptionCollection.Count > 0)) { foreach (Exception exception in exceptionCollection) { Console.WriteLine("* " + exception.Message); Console.WriteLine(exception.StackTrace); } } FxCopOM.Project = new Project(); FxCopOM.Project.Options.SharedProject = false; FxCopOM.Project.Targets.AddReferenceDirectory(referencesDirectory); TargetFile targetFile = new TargetFile(targetLocation, FxCopOM.Project.Targets); FxCopOM.Engines.LoadTargets(targetFile); FxCopOM.Project.Targets.Add(targetFile); RuleFile ruleFile = new RuleFile(ruleLocation, FxCopOM.Project.RuleFiles); ruleFile.CheckAllChildren(true); FxCopOM.Project.RuleFiles.Add(ruleFile); FxCopOM.Project.Options.Stylesheet = string.Empty; m_ruleFile = ruleFile; m_targetFile = targetFile; }
public MyViewModel(RuleFile ruleFile) { RuleFile = ruleFile; }