if machine has IPs in 2 different subnets in same group, don't scan other subnet

This commit is contained in:
Itay Mizeretz 2018-02-27 14:45:17 +02:00
parent 57ae31406a
commit 74a928cfe7
1 changed files with 10 additions and 2 deletions

View File

@ -1,9 +1,9 @@
import logging import logging
import time import time
from common.network.range import *
from config import WormConfiguration from config import WormConfiguration
from info import local_ips, get_interfaces_ranges from info import local_ips, get_interfaces_ranges
from common.network.range import *
from model import VictimHost from model import VictimHost
from . import HostScanner from . import HostScanner
@ -44,8 +44,16 @@ class NetworkScanner(object):
for subnet_group in WormConfiguration.inaccessible_subnet_groups: for subnet_group in WormConfiguration.inaccessible_subnet_groups:
for subnet_str in subnet_group: for subnet_str in subnet_group:
if NetworkScanner._is_any_ip_in_subnet([unicode(x) for x in self._ip_addresses], subnet_str): if NetworkScanner._is_any_ip_in_subnet([unicode(x) for x in self._ip_addresses], subnet_str):
subnets_to_scan += [NetworkRange.get_range_obj(x) for x in subnet_group if x != subnet_str] # If machine has IPs from 2 different subnets in the same group, there's no point checking the other
# subnet.
for other_subnet_str in subnet_group:
if other_subnet_str == subnet_str:
continue
if not NetworkScanner._is_any_ip_in_subnet([unicode(x) for x in self._ip_addresses],
other_subnet_str):
subnets_to_scan.append(NetworkRange.get_range_obj(other_subnet_str))
break break
return subnets_to_scan return subnets_to_scan
def get_victim_machines(self, scan_type, max_find=5, stop_callback=None): def get_victim_machines(self, scan_type, max_find=5, stop_callback=None):