DAT File Browser (Parsing .DAT File in Windows Form C#.Net )

Saturday, September 15, 2012

DAT File Browser (Parsing .DAT File in Windows Form C#.Net )







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 DatFileBrowser
{
    public partial class DatFileViewer : Form
    {
        UserEnvironment _environment;       
        List _urlEntries;
        List _redrEntries;
        public DatFileViewer()
        {
            InitializeComponent();
            InitializeEnvironment();
        }
        #region Helper Methods
        public void InitializeEnvironment()
        {
            _environment = new UserEnvironment();
            _environment.UserFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
            _environment.ProfileFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
            _environment.CookiesFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.Cookies);
            _environment.TempInternetFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache);
            _environment.HistoryFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.History);
        }
        #endregion
        void LoadOpenDATFiles(string datFolder)
        {
            _datProgress.Visible = true;
            Cursor.Current = Cursors.WaitCursor;
            listViewDat.Items.Clear();
            LoadDataFiles(datFolder);
            LoadView(listViewDat);
            Cursor.Current = Cursors.Default;
            _datProgress.Visible = false;
        }
        void LoadNTUserFiles()
        {
            _datProgress.Visible = true;
            Cursor.Current = Cursors.WaitCursor;
            listViewDat.Items.Clear();
            LoadDataFiles(_environment.UserFolder);
            LoadView(listViewDat);
            Cursor.Current = Cursors.Default;
            _datProgress.Visible = false;
        }
        void LoadTempInternetFiles()
        {
            _datProgress.Visible = true;
            Cursor.Current = Cursors.WaitCursor;
            listViewDat.Items.Clear();
            LoadDataFiles(_environment.TempInternetFolder);
            LoadView(listViewDat);
            Cursor.Current = Cursors.Default;
            _datProgress.Visible = false;
        }
        void LoadCookies()
        {
            _datProgress.Visible = true;
            Cursor.Current = Cursors.WaitCursor;            
            listViewDat.Items.Clear();
            LoadDataFiles(_environment.CookiesFolder);
            LoadView(listViewDat);
            Cursor.Current = Cursors.Default;
            _datProgress.Visible = false;
        }
        void LoadHistory()
        {
            _datProgress.Visible = true;
            Cursor.Current = Cursors.WaitCursor;
            listViewDat.Items.Clear();
            LoadDataFiles(_environment.HistoryFolder);
            LoadView(listViewDat);
            Cursor.Current = Cursors.Default;
            _datProgress.Visible = false;
        }
        private void LoadDataFiles(string rootFolder)
        {
            _urlEntries = new List();
            _redrEntries = new List();
            List datFiles = ByteBlocks.DatFileParser.IndexDatParser.GetListOfIndexFiles(rootFolder);
            foreach (var datFile in datFiles)
            {
                var parseResult = ByteBlocks.DatFileParser.IndexDatParser.Parse(datFile);
                if (parseResult.Status == 0)
                {
                    _urlEntries.AddRange(parseResult.Entries.UrlEntries);
                    _redrEntries.AddRange(parseResult.Entries.RedirectEntries);
                }
            }
        }
        private void LoadView(ListView lv)
        {
            var orderedEntries = _urlEntries.OrderByDescending(urlentry => urlentry.LastAccessTime);
            // Load view
            foreach (var urlEntry in orderedEntries)
            {
                var li = new ListViewItem("URL");
                li.ImageIndex = 0;
                li.SubItems.Add(new ListViewItem.ListViewSubItem(li, urlEntry.Url));
                li.SubItems.Add(new ListViewItem.ListViewSubItem(li, urlEntry.LastAccessTime.ToShortDateString()+
                " "+urlEntry.LastAccessTime.ToShortTimeString()));
                li.Tag = urlEntry;
                lv.Items.Add(li);
            }
            foreach (var redr in _redrEntries)
            {
                var li = new ListViewItem("REDR");
                li.ImageIndex = 1;
                li.SubItems.Add(new ListViewItem.ListViewSubItem(li, redr.Url));
                lv.Items.Add(li);
            }
            lblItemsCount.Text = string.Format("Entries: {0}", _urlEntries.Count + _redrEntries.Count);
        }
        private void btnOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog opDat = new OpenFileDialog();
            opDat.CheckFileExists = true;
            opDat.CheckPathExists = true;
            opDat.Filter = "DAT Files (*.dat)|*.dat";
            if (opDat.ShowDialog() == DialogResult.OK)
            {
                _environment.DatFile =Path.GetDirectoryName(opDat.FileName);
                LoadOpenDATFiles(_environment.DatFile);
            }
            else
            {
                return;
            }
        }
        private void btnUser_Click(object sender, EventArgs e)
        {
            LoadNTUserFiles();
        }
        private void btnHistory_Click(object sender, EventArgs e)
        {
            LoadHistory();
        }
        private void btnIETemp_Click(object sender, EventArgs e)
        {
            LoadTempInternetFiles();
        }
        private void btnCookies_Click(object sender, EventArgs e)
        {
            LoadCookies();
        }
        private void btnSearch_Click(object sender, EventArgs e)
        {
            DatFileSearch datSearch = new DatFileSearch();
            if (datSearch.ShowDialog() == DialogResult.OK)
            {
                _environment.DatFile = Path.GetDirectoryName(DatFileSearch.datFile);
                LoadOpenDATFiles(_environment.DatFile);
            }
        }
        private void listViewDat_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (listViewDat.SelectedItems == null ||
                listViewDat.SelectedItems.Count == 0)
            {
                return;
            }
            var selItem = listViewDat.SelectedItems[0];
            if (selItem.Tag is ByteBlocks.DatFileParser.UrlEntry)
            {
                var urlView = new URLEntryView(selItem.Tag as ByteBlocks.DatFileParser.UrlEntry);
                urlView.ShowDialog();
            }
        }
        private void btnAbout_Click(object sender, EventArgs e)
        {
            DatFileAbout datAbout = new DatFileAbout();
            datAbout.ShowDialog();
        }
        private void btnClose_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void openBrowseDATFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnOpen.PerformClick();
        }
        private void openSearchDATFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnSearch.PerformClick();
        }
        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnClose.PerformClick();
        }
        private void nTUserDATToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnUser.PerformClick();
        }
        private void windowsHistoryDATToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnHistory.PerformClick();
        }
        private void iETempDATToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnIETemp.PerformClick();
        }
        private void windowsCookiesDATToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnCookies.PerformClick();
        }
        private void dATFileBrowserToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnAbout.PerformClick();
        }
    }
}


0 comments :

Post a Comment