public void Initialize(Nic targetNic, IPAddress from = null, IPAddress to = null) { if (from == null) from = targetNic.Ip.V4.PrimaryUnicast.Network.FirstAddress; if (to == null) to = targetNic.Ip.V4.PrimaryUnicast.Network.LastAddress; uint firstUint = BitConverter.ToUInt32(from.GetAddressBytes().Reverse().ToArray(), 0); uint lastUint = BitConverter.ToUInt32(to.GetAddressBytes().Reverse().ToArray(), 0); //for (uint i = firstUint; i <= lastUint; i++) for (uint i = firstUint; i <= lastUint; i++) { var ipAddress = new IPAddress(BitConverter.GetBytes(i).Reverse().ToArray()); var hostScan = new HostScan(ipAddress, targetNic.Ip.V4.PrimaryUnicast.Address); hostScan.Options = Options.HostScanOptions; hostScan.Options.Dns.DnsServer = targetNic.Raw.IpProperties.DnsAddresses.FirstOrDefault(x => x.AddressFamily == AddressFamily.InterNetwork); hostScan.State.Online += HostOnline; hostScan.State.Completed += HostScanCompleted; _scans.Add(hostScan); } Results.SetTotalScans((ushort) Scans.Count); Results.SetLocalNic(targetNic); }
private void HostScanCompleted(HostScan sender) { lock (_resultLock) { Results.ScanCompleted(); if (Results.CompletedScans == Results.TotalScans) { State.SetProcessState(ProcessStates.Succeeded); Results.SetEndTime(DateTime.Now); } } }
public Task<Process> Execute(HostScan scan) { var winnr = scan.Results.WinNr.Hostname ?? scan.Results.Arp.LinkLayerHost.WinNr.LastName; var dns = scan.Results.Dns.Hostname ?? scan.Results.Arp.LinkLayerHost.Dns.LastName; var llmnr = scan.Results.Llmnr.Hostname ?? scan.Results.Arp.LinkLayerHost.Llmnr.LastName; var nbns = scan.Results.Nbns.Hostname ?? scan.Results.Arp.LinkLayerHost.Nbns.LastName; return Execute( winnr, dns, llmnr, nbns, scan.Results.RemoteAddress); }
private void HostOnline(HostScan sender) { Application.Current.Dispatcher.InvokeAsync(() => { Results.ScanOnline(); _onlineHosts.Add(sender); }); }
public bool IsExecuteable(HostScan scan) { return IsExecuteable( scan.Results.WinNr.Hostname ?? scan.Results.Arp.LinkLayerHost.WinNr.LastName, scan.Results.Dns.Hostname ?? scan.Results.Arp.LinkLayerHost.Dns.LastName, scan.Results.Llmnr.Hostname ?? scan.Results.Arp.LinkLayerHost.Llmnr.LastName, scan.Results.Nbns.Hostname ?? scan.Results.Arp.LinkLayerHost.Nbns.LastName, scan.Results.RemoteAddress); }