From 8c9014684cdd52b1c823727aa68bb2ef0005644f Mon Sep 17 00:00:00 2001 From: daniel goldberg Date: Thu, 25 Aug 2016 15:43:59 +0300 Subject: [PATCH] Fixed some bugs in HTTP fingerprinting --- chaos_monkey/network/httpfinger.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/chaos_monkey/network/httpfinger.py b/chaos_monkey/network/httpfinger.py index fbf22cd6c..b748aefc8 100644 --- a/chaos_monkey/network/httpfinger.py +++ b/chaos_monkey/network/httpfinger.py @@ -21,24 +21,24 @@ class HTTPFinger(HostFinger): def get_host_fingerprint(self, host): assert isinstance(host, VictimHost) from requests import get - from requests.exceptions import Timeout + from requests.exceptions import Timeout,ConnectionError from contextlib import closing - valid_ports = [port for port in self.HTTP if 'tcp-'+port[1] in host.services] - for port in valid_ports: + for port in self.HTTP: # check both http and https http = "http://"+host.ip_addr+":"+port[1] https = "https://"+host.ip_addr+":"+port[1] # try http, we don't optimise for 443 - try: - with closing(get(http, timeout=1, stream=True)) as r_http: - server = r_http.headers.get('Server') - host.services['tcp-'+port[1]] = server - except Timeout: - #try https - with closing(get(https, timeout=01, stream=True)) as r_http: - server = r_http.headers.get('Server') - host.services['tcp-'+port[1]] = server + for url in (http, https): + try: + with closing(get(url, verify=False, timeout=1, stream=True)) as req: + server = req.headers.get('Server') + host.services['tcp-'+port[1]] = server + break # https will be the same on the same port + except Timeout: + pass + except ConnectionError: # Someone doesn't like us + pass return True \ No newline at end of file