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); }
public override ECheck Check() { WriteInfo("Updating tor exit node list", TorHelper.UpdateTorExitNodeList(false).ToString(), ConsoleColor.Green); bool res = TorHelper.IsTorExitNode(RemoteIp); WriteInfo("Check tor exit node '" + RemoteIp.ToString() + "' results", res ? "EXIT-NODE DETECTED!" : "NOT LISTED", res ? ConsoleColor.Red : ConsoleColor.Green); Thread.Sleep(1000); return(res ? ECheck.Ok : ECheck.Error); }
public bool IsAllowed(IPEndPoint source, IPEndPoint dest, IPProtocolType protocol) { TorHelper.UpdateTorExitNodeList(true); if (TorHelper.IsTorExitNode(source.Address)) { return(true); } if (TorHelper.IsTorExitNode(dest.Address)) { return(true); } return(false); }
public bool IsAllowed(TcpHeader packet) { TorHelper.UpdateTorExitNodeList(true); if (TorHelper.IsTorExitNode(packet.IpHeader.DestinationAddress)) { return(true); } if (TorHelper.IsTorExitNode(packet.IpHeader.SourceAddress)) { return(true); } return(false); }
/// <summary> /// Check if the ip it's a Tor exit node /// </summary> /// <param name="ipAddress">Instance of the IPAddress, that should be reversed </param> /// <param name="allowRefresh">Refresh exit node list</param> public static bool IsTorExitNode(this IPAddress ipAddress, bool allowRefresh) { if (ipAddress == null) { return(false); } //Refresh if (allowRefresh) { TorHelper.UpdateTorExitNodeList(true); } // Check return(TorHelper.IsTorExitNode(ipAddress)); }