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; }
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); (_ipSniffer as IpSnifferWinPcap).Warning += OnWarning; } catch { _ipSniffer = new IpSnifferRawSocketMultipleInterfaces(); } } else { _ipSniffer = new IpSnifferRawSocketMultipleInterfaces(); } var tcpSniffer = new TcpSniffer(_ipSniffer); tcpSniffer.NewConnection += HandleNewConnection; }
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; }
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; }