コード例 #1
0
ファイル: TeraSniffer.cs プロジェクト: nagibon/ShinraMeter
        private TeraSniffer()
        {
            var servers = BasicTeraData.Instance.Servers;

            _serversByIp = servers.GetServersByIp();

            if (BasicTeraData.Instance.WindowData.Winpcap)
            {
                var netmasks =
                    _serversByIp.Keys.Select(s => string.Join(".", s.Split('.').Take(3)) + ".0/24").Distinct().ToArray();

                var filter = string.Join(" or ", netmasks.Select(x => $"(net {x})"));
                filter = "tcp and (" + filter + ")";

                try //fallback to raw sockets if no winpcap available
                {
                    _ipSniffer = new IpSnifferWinPcap(filter, _serversByIp.Keys.ToList());
                }
                catch
                {
                    _ipSniffer = new IpSnifferRawSocketMultipleInterfaces();
                }
            }
            else
            {
                _ipSniffer = new IpSnifferRawSocketMultipleInterfaces();
            }

            var tcpSniffer = new TcpSniffer(_ipSniffer);

            tcpSniffer.NewConnection += HandleNewConnection;
        }
コード例 #2
0
        public TeraSniffer(IpSniffer ipSniffer, ServerDatabase servers)
        {
            _serversByIp = servers.GetServersByIp();

            if (ipSniffer == null)
            {
                var netmasks = _serversByIp.Keys.Select(s => string.Join(".", s.Split('.').Take(3)) + ".0/24").Distinct().ToArray();

                string filter = string.Join(" or ", netmasks.Select(x => $"(net {x})"));
                filter = "tcp and (" + filter + ")";

                try
                {
                    ipSniffer = new IpSnifferWinPcap(filter);
                }
                catch
                {
                    ipSniffer = new IpSnifferRawSocketMultipleInterfaces();
                }
            }

            _ipSniffer = ipSniffer;

            var tcpSniffer = new TcpSniffer(_ipSniffer);

            tcpSniffer.NewConnection += HandleNewConnection;
        }
コード例 #3
0
ファイル: TeraSniffer.cs プロジェクト: s2021369/ShinraMeter
        private TeraSniffer()
        {
            var servers = BasicTeraData.Instance.Servers;

            _serversByIp = servers.ToDictionary(x => x.Ip);


            if (BasicTeraData.Instance.WindowData.Winpcap)
            {
                var netmasks =
                    _serversByIp.Keys.Select(s => string.Join(".", s.Split('.').Take(3)) + ".0/24").Distinct().ToArray();

                var filter = string.Join(" or ", netmasks.Select(x => $"(net {x})"));
                filter = "tcp and (" + filter + ")";

                _ipSniffer = new IpSnifferWinPcap(filter);
            }
            else
            {
                _ipSniffer = new IpSnifferRawSocketMultipleInterfaces();
            }

            var tcpSniffer = new TcpSniffer(_ipSniffer);

            tcpSniffer.NewConnection += HandleNewConnection;
        }
コード例 #4
0
        public TeraSniffer(IEnumerable <Server> servers)
        {
            _serversByIp = servers.ToDictionary(x => x.Ip);
            var netmasks =
                _serversByIp.Keys.Select(s => string.Join(".", s.Split('.').Take(3)) + ".0/24").Distinct().ToArray();
            var filter = string.Join(" or ", netmasks.Select(x => $"(net {x})"));

            filter = "tcp and (" + filter + ")";

            _ipSniffer = new IpSniffer(filter);
            var tcpSniffer = new TcpSniffer(_ipSniffer);

            tcpSniffer.NewConnection += HandleNewConnection;
        }
コード例 #5
0
ファイル: TeraSniffer.cs プロジェクト: ha-tam/TeraDamageMeter
        public TeraSniffer(IEnumerable <string> serverIps)
        {
            _interestingIps = new HashSet <string>(serverIps);
            var netmasks =
                _interestingIps.Select(s => string.Join(".", s.Split('.').Take(3)) + ".0/24").Distinct().ToArray();
            string filter = string.Join(" or ", netmasks.Select(x => string.Format("(net {0})", x)));

            filter = "tcp and (" + filter + ")";

            _ipSniffer = new IpSnifferWinPcap(filter);
            var tcpSniffer = new TcpSniffer(_ipSniffer);

            tcpSniffer.NewConnection += HandleNewConnection;
        }
コード例 #6
0
ファイル: TeraSniffer.cs プロジェクト: Gl0/TeraDamageMeter
        public TeraSniffer(ServerDatabase servers, bool UseRawSockets = false)
        {
            _serversByIp = servers.GetServersByIp();
            if (UseRawSockets)
            {
                _ipSniffer = new IpSnifferRawSocketMultipleInterfaces();
            }
            else
            {
                var netmasks =
                    _serversByIp.Keys.Select(s => string.Join(".", s.Split('.').Take(3)) + ".0/24").Distinct().ToArray();
                string filter = string.Join(" or ", netmasks.Select(x => string.Format("(net {0})", x)));
                filter     = "tcp and (" + filter + ")";
                _ipSniffer = new IpSnifferWinPcap(filter);
                (_ipSniffer as IpSnifferWinPcap).Warning += OnWarning;
            }

            var tcpSniffer = new TcpSniffer(_ipSniffer);

            tcpSniffer.NewConnection += HandleNewConnection;
        }