Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        /// <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));
        }