Example #1
0
		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);
		}
Example #2
0
		private void HostScanCompleted(HostScan sender)
		{
			lock (_resultLock)
			{
				Results.ScanCompleted();
				if (Results.CompletedScans == Results.TotalScans)
				{
					State.SetProcessState(ProcessStates.Succeeded);
					Results.SetEndTime(DateTime.Now);
				}
			}
		}
Example #3
0
		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);
		}
Example #4
0
		private void HostOnline(HostScan sender)
		{
			Application.Current.Dispatcher.InvokeAsync(() =>
			{
				Results.ScanOnline();
				_onlineHosts.Add(sender);
			});
		}
Example #5
0
		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);
		}