Example #1
0
        /// <summary>
        /// Exports a streams' content to a file.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void exportStreamToFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DataRowView drv = dataGridResult.SelectedRows[0].DataBoundItem as DataRowView;

            FileInfoData.FileInfoRow fir = drv.Row as FileInfoData.FileInfoRow;
            NTFS.FileStreams         FS  = new NTFS.FileStreams(fir.File_Name);

            foreach (NTFS.StreamInfo s in FS)
            {
                if (s.Name == fir.Stream_Name)
                {
                    if (saveFileDialogExport.ShowDialog() == DialogResult.OK)
                    {
                        using (FileStream input = s.Open(FileMode.Open))
                        {
                            using (FileStream output =
                                       new FileStream(saveFileDialogExport.FileName, FileMode.Create))
                            {
                                int    bufferSize = 4096;
                                byte[] buffer     = new byte[bufferSize];
                                while (true)
                                {
                                    int read = input.Read(buffer, 0, buffer.Length);
                                    if (read <= 0)
                                    {
                                        return;
                                    }
                                    output.Write(buffer, 0, read);
                                }
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// Opens the containing folder of the file's location.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void openContainingFolderToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DataRowView drv = dataGridResult.SelectedRows[0].DataBoundItem as DataRowView;

            FileInfoData.FileInfoRow fir = drv.Row as FileInfoData.FileInfoRow;

            try
            {
                Process.Start(fir.Location);
            }
            catch (System.ComponentModel.Win32Exception) { }
        }
Example #3
0
        /// <summary>
        /// If the user deletes one or more rows, delete the streams on the file system.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridResult_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            DataRowView drv = e.Row.DataBoundItem as DataRowView;

            FileInfoData.FileInfoRow fir = drv.Row as FileInfoData.FileInfoRow;
            NTFS.FileStreams         FS  = new NTFS.FileStreams(fir.File_Name);

            foreach (NTFS.StreamInfo s in FS)
            {
                if (s.Name == fir.Stream_Name)
                {
                    s.Delete();
                }
            }
        }
Example #4
0
        /// <summary>
        /// Updates the data grid with the found streams.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timerGrid_Tick(object sender, System.EventArgs e)
        {
            this.timerGrid.Enabled = false;
            int cnt = ArrayFileInfo.Count;

            for (int i = lastIndexAdded; i < cnt; i++)
            {
                FileInfoStruct fis = (FileInfoStruct)ArrayFileInfo[i];

                FileInfoData.FileInfoRow r = this.fileInfoDataStreams.FileInfo.NewFileInfoRow();
                r.BeginEdit();
                r.File_Name     = fis.File_Name;
                r.Stream_Name   = fis.Stream_Name;
                r.Stream_Size   = fis.Stream_Size;
                r.Location      = fis.Location;
                r.Creation_Date = fis.Creation_Date;
                r.EndEdit();
                this.fileInfoDataStreams.FileInfo.AddFileInfoRow(r);
            }

            lastIndexAdded         = cnt;
            this.timerGrid.Enabled = true;
        }
Example #5
0
        /// <summary>
        /// Opens hex editor on row double click.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridResult_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView dgv = sender as DataGridView;
            DataRowView  drv = dgv.Rows[e.RowIndex].DataBoundItem as DataRowView;

            FileInfoData.FileInfoRow fir = drv.Row as FileInfoData.FileInfoRow;

            HexEditor he = new HexEditor();

            NTFS.FileStreams FS = new NTFS.FileStreams(fir.File_Name);

            foreach (NTFS.StreamInfo s in FS)
            {
                if (s.Name == fir.Stream_Name)
                {
                    using (FileStream fs = s.Open(FileMode.Open))
                    {
                        if (fs == null)
                        {
                            MessageBox.Show("Accessing acquired file failed, " +
                                            "maybe you have insufficient rights or the file is in use.",
                                            "Access failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }

                        he.labelFileName.Text             = fir.File_Name;
                        he.labelStreamName.Text           = fir.Stream_Name;
                        he.fileStream                     = fs;
                        he.hexBoxFileContent.ByteProvider = new DynamicFileByteProvider(fs);
                        he.ShowDialog();
                    }
                }
            }

            he.Dispose();
            he = null;
        }