diff --git a/monkey/monkey_island/cc/services/utils/network_utils.py b/monkey/monkey_island/cc/services/utils/network_utils.py index 8af255ee0..663a8c948 100644 --- a/monkey/monkey_island/cc/services/utils/network_utils.py +++ b/monkey/monkey_island/cc/services/utils/network_utils.py @@ -1,57 +1,9 @@ -import array import ipaddress -import socket -import struct -import sys from typing import Sequence from netifaces import AF_INET, ifaddresses, interfaces from ring import lru -# Local ips function -# TODO: I can't find anywhere these are actually used. Confirm this is the case, remove these -# functions, and test. -if sys.platform == "win32": - - def local_ips(): - local_hostname = socket.gethostname() - return socket.gethostbyname_ex(local_hostname)[2] - -else: - import fcntl - - def local_ips(): - result = [] - try: - is_64bits = sys.maxsize > 2**32 - struct_size = 40 if is_64bits else 32 - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - max_possible = 8 # initial value - while True: - struct_bytes = max_possible * struct_size - names = array.array("B", "\0" * struct_bytes) - outbytes = struct.unpack( - "iL", - fcntl.ioctl( - s.fileno(), - 0x8912, # SIOCGIFCONF - struct.pack("iL", struct_bytes, names.buffer_info()[0]), - ), - )[0] - if outbytes == struct_bytes: - max_possible *= 2 - else: - break - namestr = names.tostring() - - for i in range(0, outbytes, struct_size): - addr = socket.inet_ntoa(namestr[i + 20 : i + 24]) - if not addr.startswith("127"): - result.append(addr) - # name of interface is (namestr[i:i+16].split('\0', 1)[0] - finally: - return result - # The local IP addresses list should not change often. Therefore, we can cache the result and never # call this function more than once. This stopgap measure is here since this function is called a