123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Diagnostics;
- using System.IO;
- using SharpPcap;
- using SharpPcap.LibPcap;
- using WhiteNoise.Domain.Abstract;
- using WhiteNoise.Domain.Entities;
- namespace WhiteNoise.Storage
- {
-
-
-
- public class DatabaseWorker : BackgroundWorker
- {
-
-
-
- private static IPacketRepository _repository;
-
-
-
-
-
-
-
- private ICollection<ICaptureDevice> _deviceFiles { get; set; }
-
-
-
-
-
-
-
- public string Version { get; private set; }
-
-
-
-
-
-
-
- public DatabaseWorker(IPacketRepository repository)
- {
- _repository = repository;
- this._deviceFiles = new List<ICaptureDevice>();
- this.Version = SharpPcap.Version.VersionString;
-
- this.WorkerReportsProgress = true;
- this.WorkerSupportsCancellation = true;
- }
-
-
-
-
-
-
-
- public void CaptureDeviceFile(string file)
- {
- this.CaptureDeviceFile(new FileInfo(file));
- }
-
-
-
-
-
-
-
- public void CaptureDeviceFile(FileInfo file)
- {
- if (file.Exists)
- {
- ICaptureDevice device = null;
-
- try
- {
-
- device = new CaptureFileReaderDevice(file.FullName);
-
-
- device.OnPacketArrival += new PacketArrivalEventHandler(Device_OnPacketArrival);
-
-
- device.Open();
- device.StartCapture();
- }
- catch (Exception ex)
- {
- Debug.WriteLine(ex.Message);
- }
- finally
- {
-
- if (device != null && device.Started)
- {
- this._deviceFiles.Add(device);
- }
- }
- }
- }
-
-
-
-
- public void Stop()
- {
- foreach (ICaptureDevice device in this._deviceFiles)
- {
- if (device.Started)
- {
- device.StopCapture();
- }
- }
- }
-
-
-
-
-
-
-
- protected override void OnDoWork (DoWorkEventArgs e)
- {
-
- base.OnDoWork(e);
- }
-
-
-
-
-
-
-
-
-
-
- private static void Device_OnPacketArrival(object sender, CaptureEventArgs e)
- {
- Debug.WriteLine("Received {0} bytes.", e.Packet.Data.Length);
-
- try
- {
-
- _repository.Add(new WhiteNoise.Domain.Entities.Packet()
- {
- Type = e.Packet.LinkLayerType.ToString(),
- Data = e.Packet.Data
- });
- }
- catch (Exception ex)
- {
-
- Debug.WriteLine(ex.Message);
- }
- finally
- {
-
- }
- }
- }
- }
|