monkey/chaos_monkey/network/tcp_scanner.py

43 lines
1.3 KiB
Python
Raw Normal View History

2015-08-30 15:27:35 +08:00
import time
import socket
from network import HostScanner, HostFinger
2015-08-30 15:27:35 +08:00
from model.host import VictimHost
from network.tools import check_port_tcp
import select
2015-08-30 15:27:35 +08:00
__author__ = 'itamar'
BANNER_READ = 1024
class TcpScanner(HostScanner, HostFinger):
def __init__(self):
2015-08-30 15:27:35 +08:00
self._config = __import__('config').WormConfiguration
def is_host_alive(self, host):
return self.get_host_fingerprint(host, True)
def get_host_fingerprint(self, host, only_one_port=False):
2015-08-30 15:27:35 +08:00
assert isinstance(host, VictimHost)
count = 0
2015-08-30 15:27:35 +08:00
for target_port in self._config.tcp_target_ports:
is_open, banner = check_port_tcp(host.ip_addr,
target_port,
self._config.tcp_scan_interval / 1000.0,
self._config.tcp_scan_get_banner)
if is_open:
count+=1
service = 'tcp-' + str(target_port)
host.services[service] = {}
if banner:
host.services[service]['banner'] = banner
if only_one_port:
break
else:
2015-08-30 15:27:35 +08:00
time.sleep(self._config.tcp_scan_interval / 1000.0)
return count != 0