/// <summary>
        /// 案件文件被移除时,移除案件文件节点;
        /// </summary>
        /// <param name="evidence"></param>
        private void OnCaseEvidenceRemoved(ICaseEvidence evidence)
        {
            var treeService = MainTreeService.Current;

            if (treeService == null)
            {
                LoggerService.WriteCallerLine($"{nameof(treeService)} can't be null.");
                return;
            }

            var caseUnit = treeService.CurrentUnits.FirstOrDefault();

            if (caseUnit == null)
            {
                LoggerService.WriteCallerLine($"{nameof(caseUnit)} can't be null.");
                return;
            }

            var evidenceUnit = caseUnit.Children.FirstOrDefault(p => p.TypeGuid == Contracts.Casing.Constants.TreeUnitType_CaseEvidence &&
                                                                p.GetInstance <ICaseEvidence>(Contracts.Casing.Constants.TreeUnitTag_CaseEvidence) == evidence);

            if (evidenceUnit == null)
            {
                LoggerService.WriteCallerLine($"{nameof(evidenceUnit)} can't be null.");
                return;
            }

            treeService.RemoveUnit(evidenceUnit);
        }
 public void TestLoadCaseWithEvidences()
 {
     LoadCase();
     _csEvidence = _csService.CurrentCase.CaseEvidences.FirstOrDefault();
     Assert.IsNotNull(_csEvidence);
     AssertEvidenceMatched();
 }
示例#3
0
        public static ICaseEvidence Show(ICaseEvidence caseFile)
        {
            var window = new ShowCaseFilePropertyWindow(caseFile);
            var res    = window.ShowDialog();

            if (res == true)
            {
                return(caseFile);
                //return window.CFile;
            }
            return(default(ICaseEvidence));
        }
示例#4
0
        /// <summary>
        /// 获得案件文件相关节点;
        /// </summary>
        /// <typeparam name="TCaseFile">案件文件类型</typeparam>
        /// <param name="cFile">案件文件</param>
        /// <returns></returns>
        public ITreeUnit GetCaseFileUnit(ICaseEvidence cFile)
        {
            if (MainTreeService.Current == null)
            {
                return(null);
            }

            foreach (var theUnit in MainTreeService.Current.CurrentUnits)
            {
                //if (theUnit is CaseEvidenceUnit<TCaseFile> csUnit && csUnit.Evidence == cFile) {
                //    return csUnit;
                //}
            }
            return(null);
        }
        /// <summary>
        /// 在节点中加入证据项节点;
        /// </summary>
        /// <param name="evidence"></param>
        private void LoadEvidenceUnitToTree(ICaseEvidence evidence)
        {
            var treeService = MainTreeService.Current;

            if (treeService == null)
            {
                LoggerService.WriteCallerLine($"{nameof(treeService)} can't be null.");
                return;
            }

            var unit = TreeUnitFactory.CreateNew(Contracts.Casing.Constants.TreeUnitType_CaseEvidence);

            unit.Label = evidence.Name;
            unit.SetInstance(evidence, Contracts.Casing.Constants.TreeUnitTag_CaseEvidence);
            treeService.AddUnit(treeService.CurrentUnits.FirstOrDefault(), unit);
        }
示例#6
0
        /// <summary>
        /// 添加取证信息节点;
        /// </summary>
        /// <param name="cFile"></param>
        public void AddForensicUnit(ICaseEvidence cFile)
        {
            ITreeUnit fUnit       = null;
            var       caseService = ServiceProvider.Current.GetInstance <ICaseService>();

            if (caseService == null)
            {
                LoggerService.Current?.WriteCallerLine($"{nameof(caseService)} can't be null!");
            }

            ThreadInvoker.UIInvoke(() => {
                var tUnit = GetCaseFileUnit(cFile);
                if (tUnit != null)
                {
                    fUnit       = TreeUnitFactory.Current.CreateNew(Constants.ForensicInfoUnit);
                    fUnit.Label = FindResourceString("ForensicInfo");
                    tUnit.Children.Add(fUnit);
                }
            });
        }
示例#7
0
        /// <summary>
        /// 所移除证据项若为本地文件夹,则响应卸载处理;
        /// </summary>
        /// <param name="csEvidence"></param>
        private void OnCaseEvidenceRemoved(ICaseEvidence csEvidence)
        {
            if (csEvidence == null)
            {
                return;
            }

            if (!(csEvidence.EvidenceTypeGuids?.Contains(Constants.EvidenceType_LocalDir) ?? false))
            {
                return;
            }

            //文件系统卸载文件;
            var units = FileSystemService.Current.MountedUnits.Where(p => p.GUID == csEvidence.EvidenceGUID).ToArray();

            foreach (var unit in units)
            {
                FileSystemService.Current.UnMountFile(unit);
            }
        }
示例#8
0
        /// <summary>
        /// 得到取证信息节点;
        /// </summary>
        /// <param name="csFile"></param>
        /// <returns></returns>
        public ITreeUnit GetForensicInfoUnit(ICaseEvidence csFile)
        {
            var caseService = ServiceProvider.Current.GetInstance <ICaseService>();

            if (caseService != null)
            {
                try {
                    var csUnit = GetCaseFileUnit(csFile);
                    //if (csUnit != null) {
                    //    if (csUnit.Evidence == csFile) {
                    //        return csUnit.Children.FirstOrDefault(p =>
                    //        p is PinTreeUnit obUnit && obUnit.ContentId == CommonPinKindsDefinitions.ForensicInfo) as PinTreeUnit;
                    //    }
                    //}
                }
                catch (Exception ex) {
                    LoggerService.Current?.WriteCallerLine(ex.Message);
                }
            }

            return(null);
        }
 public void ShowCaseFileProperty(ICaseEvidence csFile)
 {
     throw new NotImplementedException();
 }
示例#10
0
 public ImgMountUnit(IImgMounter imgMounter, ICaseEvidence caseEvidence)
 {
     this.ImgMounter   = imgMounter ?? throw new ArgumentNullException(nameof(imgMounter));
     this.CaseEvidence = caseEvidence ?? throw new ArgumentNullException(nameof(caseEvidence));
 }
示例#11
0
        public ShowCaseFilePropertyWindow(ICaseEvidence cFile)
        {
            InitializeComponent();
            this.CFile = cFile ?? throw new ArgumentNullException();

            var comma   = ServiceProvider.Current?.GetInstance <ILanguageService>()?.FindResourceString("Comma");
            var newLine = Environment.NewLine;

            //添加日期;
            DateAddedTxb.Text = $"{cFile.DateAdded.ToWDTimeString()}";

            //报告相关;
            ReportTxb.Text = $"0";

            ObjectTitleTxb.Text = CFile.Name;
            CmtTxb.Text         = CFile.Comments;

            //if (CFile is Singularity.Interfaces.IHaveData<IFile> fCFile ) {
            //    //大小;
            //    SizeTxb.Text = $"{ByteSizeToSizeConverter.StaticInstance.Convert(fCFile.Data.Size)}";

            //    DesTxb.Text += $"{FindResourceString("TotalCapacity")}{comma}{fCFile.Data.Size}{FindResourceString("Byte")}" +
            //     "=" + $"{ByteSizeToSizeConverter.StaticInstance.Convert(fCFile.Data.Size)}{Environment.NewLine}";

            //    if(fCFile.Data is Device device) {
            //        DesTxb.Text += $"{FindResourceString("BytesPerSector")}{comma}{device.SecSize}" + newLine;
            //        DesTxb.Text += $"{FindResourceString("SectorCount")}{comma}{device.Size / device.SecSize}" + newLine;

            //        DesTxb.Text += $"{FindResourceString("PartitioningStyle")}{comma}{device.PartsType}{Environment.NewLine}";

            //        device.Children.ForEach(p => {
            //            var part = p as Partition;
            //            DesTxb.Text += $"{Environment.NewLine}{part.Name}{Environment.NewLine}";
            //            DesTxb.Text += $"{FindResourceString("Sectors")}{part.StartLBA / device.SecSize}-{part.EndLBA / device.SecSize}{Environment.NewLine}";
            //        });
            //    }

            //    else if(fCFile.Data is Partition part) {
            //        DesTxb.Text += $"{FindResourceString("FileSystem")}{comma}{part.FSType}" + newLine;
            //        //DesTxb.Text += $"{FindResourceString("TotalCapacity")}{comma}{part.Size}" + newLine;

            //        if (part is AndroidPartition) {
            //            var adPart = part as AndroidPartition;
            //            DesTxb.Text += $"{FindResourceString("SectorSize")}{comma}{adPart.SectorSize}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("ClusterSize")}{comma}{adPart.ClusterSize}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("BlockSize")}{comma}{adPart.BlockSize}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("FreeClusters")}{comma}{adPart.FreeBlockCount} = {adPart.FreeBlockCount * 100 / adPart.BlockCount} %{FindResourceString("Free")}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("ClusterCount")}{comma}{adPart.BlockCount}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("INodeCount")}{comma}{adPart.INodeCount}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("FreeINodeCount")}{comma}{adPart.FreeInodeCount}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("BlockPergroup")}{comma}{adPart.BlockPergroup}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("INodePergroup")}{comma}{adPart.InodePerGroup}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("INodeSize")}{comma}{adPart.INodeSize}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("LastMountTime")}{comma}{adPart.LastMountTime.ToWDTimeString()}" + newLine;
            //            DesTxb.Text += $"{FindResourceString("LastWriteTime")}{comma}{adPart.LastWriteTime.ToWDTimeString()}";
            //        }
            //    }

            //}

            InterDTxb.Text = cFile.InterLabel;
        }
示例#12
0
 public void ShowCaseEvidenceProperty(ICaseEvidence evidence)
 {
     ShowCaseFilePropertyMessageBox.Show(evidence);
 }
示例#13
0
 //证据项被加载完成时发生;
 private void OnEvidenceLoaded(ICaseEvidence evidence)
 {
     LoadEvidenceUnitToTree(evidence);
 }