public override ECheck Check() { NetworkSniffer s = null; try { //if (!SystemHelper.IsAdministrator()) // WriteError("Require admin rights"); IPayloadSniffer pay = (IPayloadSniffer)Payload; if (!pay.Check()) { return(ECheck.Error); } s = new NetworkSniffer(Interface); s.Start(); return(ECheck.Ok); } catch { return(ECheck.Error); } finally { if (s != null) { s.Dispose(); } } }
public override bool Run() { IPayloadSniffer pay = (IPayloadSniffer)Payload; //if (!SystemHelper.IsAdministrator()) // WriteError("Require admin rights"); if (!pay.Check()) { return(false); } if (FilterOnlyTorRequest) { TorHelper.UpdateTorExitNodeList(true); } NetworkSniffer s = new NetworkSniffer(Interface) { Timeout = TcpTimeout, TimeoutSync = TcpTimeoutSync }; s.StartTcpStreamMethod = StartTcpStreamMethod; s.OnDequeue += pay.Dequeue; if (!string.IsNullOrEmpty(Filter)) { s.Filter = Filter; } if (pay.CaptureOnTcpStream) { s.OnTcpStream += pay.OnTcpStream; } if (pay.CaptureOnPacket) { s.OnPacket += pay.OnPacket; } List <IIpPacketFilter> filters = new List <IIpPacketFilter>(); if (FilterOnlyTorRequest) { filters.Add(new SnifferTorFilter()); } if (FilterPorts != null && FilterPorts.Length > 0) { filters.Add(new SnifferPortFilter(FilterPorts)); } if (FilterProtocols != null && FilterProtocols.Length > 0) { filters.Add(new SnifferProtocolFilter(FilterProtocols)); } s.Filters = filters.ToArray(); s.OnCaptureStop += S_OnCaptureStop; s.Start(); CreateJob(s, "IsDisposed"); return(true); }
void S_OnCaptureStop(object sender, CaptureStoppedEventStatus status) { IPayloadSniffer pay = (IPayloadSniffer)Payload; if (pay != null) { pay.Stop(sender); } WriteInfo("Capture stopped"); }