Tuesday, February 21, 2012

How to clear the data in the hard disk

Even if we delete / format the hard disk the data can still be recovered, it is all ways better to fill some random data and deleting the same is good, so I have written a small program for the same.
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.IO;

namespace FillRandomDataOnDisk
{
    public partial class FormMain : Form
    {
        String SelectedPath;
        public FormMain()
        {
            InitializeComponent();
        }

        private void FormMain_Load(object sender, EventArgs e)
        {
            LoadDrives();
        }
        
        private void LoadDrives()
        {
            foreach (DriveInfo drive in DriveInfo.GetDrives())
            {
                if (drive.IsReady)
                {
                    this.comboBoxDrives.Items.Add(drive.Name);
                }
            }
        }

        private void buttonBrowse_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog f = new FolderBrowserDialog();
            f.ShowDialog();
            SelectedPath = f.SelectedPath;
            textBoxFolderPath.Text = SelectedPath;
        }

        private void comboBoxDrives_SelectedIndexChanged(object sender, EventArgs e)
        {
            string SelectedDrive = comboBoxDrives.SelectedItem.ToString();
            foreach (DriveInfo drive in DriveInfo.GetDrives())
            {
                if (drive.IsReady && drive.Name == SelectedDrive)
                {
                    long GB = drive.TotalFreeSpace / 1073741824;
                    textBoxAvailableSpace.Text = GB.ToString() + " GB";
                    return;
                }
            }
        }

        private void buttonStart_Click(object sender, EventArgs e)
        {
            long MinFreeSpace = 1;
            long FreeDiskSpace = GetCurrentDriveFreeSpace();
            while (FreeDiskSpace > MinFreeSpace)
            {
                CreateRandomByteFile1();
                FreeDiskSpace = GetCurrentDriveFreeSpace();
            }
            MessageBox.Show("Done");
        }

        private long GetCurrentDriveFreeSpace()
        {
            long FreeSpace = 0;
            string SelectedDrive = comboBoxDrives.SelectedItem.ToString();
            foreach (DriveInfo drive in DriveInfo.GetDrives())
            {
                if (drive.IsReady && drive.Name == SelectedDrive)
                {
                    FreeSpace = drive.TotalFreeSpace / 1073741824;
                    return FreeSpace;
                }
            }
            return FreeSpace;
        }

        public void CreateRandomByteFile1()
        {
            string FileName = DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
            FileName = SelectedPath + "\\" + FileName + ".txt";
            int sizeInMB = 256;
            byte[] data = new byte[8192]; 
            Random rng = new Random();
            using (FileStream stream = File.OpenWrite(FileName)) 
            { 
                for (int i = 0; i < sizeInMB * 128; i++) 
                { 
                    rng.NextBytes(data); 
                    stream.Write(data, 0, data.Length); 
                } 
            } 
        }
        // end
    }
}