示例#1
0
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_dir = self.main_page_path.rsplit('/')[-1]
     args = run_args.parse_args(['--page-dir', page_dir])
     self.loop = asyncio.new_event_loop()
     self.data = {
         'method': 'GET', 'path': '/',
         'headers': {
             'Host': 'test_host', 'Connection': 'keep-alive',
             'Upgrade-Insecure-Requests': '1', 'User-Agent': 'test_agent', 'Accept': 'text/html',
             'Accept-Encoding': 'test_encoding', 'Accept-Language': 'test_lang', 'Cookie': 'test_cookie',
             'uuid': 'test_uuid', 'peer': {'ip': '::1', 'port': 80}, 'status': 200,
             'cookies': 'test_cookies', ' sess_uuid': 'test_uuid'
         }
     }
     aiohttp.ClientSession.post = AsyncMock(
         return_value=aiohttp.ClientResponse(
             url=yarl.URL("http://www.example.com"), method="GET", writer=None, continue100=1,
             timer=None, request_info=None, traces=None, loop=self.loop,
             session=None
         )
     )
     uuid = "test_uuid"
     args.tanner = "tanner.mushmush.org"
     args.no_dorks = True
     self.handler = TannerHandler(args, meta, uuid)
     self.result = None
 def setUp(self):
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_dir = self.main_page_path.rsplit('/')[-1]
     meta_content = {"/index.html": {"hash": "hash_name", "content_type": "text/html"}}
     self.page_content = "<html><body></body></html>"
     self.content_type = "text/html"
     with open(os.path.join(self.main_page_path, "hash_name"), 'w') as f:
         f.write(self.page_content)
     with open(os.path.join(self.main_page_path, "meta.json"), 'w') as f:
         json.dump(meta_content, f)
     self.args = run_args.parse_args(['--page-dir', page_dir])
     self.args.index_page = '/index.html'
     self.args.no_dorks = True
     self.args.tanner = "tanner.mushmush.org"
     self.uuid = "test_uuid"
     self.handler = TannerHandler(self.args, meta_content, self.uuid)
     self.requested_name = '/'
     self.loop = asyncio.get_event_loop()
     self.handler.html_handler.handle_content = AsyncMock(return_value=self.page_content)
     self.res1 = None
     self.res2 = None
     self.res3 = None
     self.res4 = None
     self.detection = None
     self.expected_content = None
     self.call_content = None
     self.expected_header = None
     self.expected_status_code = None
示例#3
0
 def setUp(self):
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.content = '<html><head>title</head><body>sample</body></html>'
     self.page_dir = self.main_page_path.rsplit('/')[-1]
     self.index_page = "index.html"
     with open(os.path.join(self.main_page_path, 'index.html'), 'w') as f:
         f.write(self.content)
示例#4
0
 def setUp(self):
     self.url = 'http://example.com'
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.expected_new_url = yarl.URL('http://example.com')
     self.expected_err_url = yarl.URL('http://example.com/status_404')
     self.max_depth = sys.maxsize
     self.css_validate = 'false'
     self.handler = Cloner(self.url, self.max_depth, self.css_validate)
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.page_dir = self.main_page_path.rsplit('/')[-1]
     args = run_args.parse_args(['--page-dir', self.page_dir])
     args_dict = vars(args)
     args_dict['full_page_path'] = self.main_page_path
     uuid = '9c10172f-7ce2-4fb4-b1c6-abc70141db56'.encode('utf-8')
     args.tanner = 'tanner.mushmush.org'
     args.no_dorks = True
     args.server_header = "test_server"
     args.slurp_enabled = True
     self.handler = HttpRequestHandler(meta, args, uuid)
     self.request_data = {
         'method': 'GET',
         'path': '/',
         'headers': {
             'Host': 'test_host',
             'Content-Type': 'test_type',
         },
         'status': 200,
         'cookies': {
             'sess_uuid': 'prev_test_uuid',
         },
     }
     self.loop = asyncio.new_event_loop()
     self.response_content = '<html><body></body></html>'
     self.response_headers = multidict.CIMultiDict([("Content-Type", "text/html")])
     self.response_status = 200
     event_result = dict(response=dict(message=dict(detection={'type': 1}, sess_uuid="test_uuid")))
     RequestHandler = Mock()
     protocol = RequestHandler()
     message = RawRequestMessage(
         method='POST', path='/', version=HttpVersion(major=1, minor=1), headers=self.request_data['headers'],
         raw_headers=None, should_close=None, compression=None, upgrade=None, chunked=None,
         url=URL('http://test_url/')
     )
     self.request = web.Request(
         message=message, payload=None, protocol=protocol, payload_writer=None,
         task='POST', loop=self.loop
     )
     self.handler.tanner_handler.create_data = Mock(return_value=self.request_data)
     self.handler.tanner_handler.submit_data = AsyncMock(return_value=event_result)
     self.handler.submit_slurp = AsyncMock()
     web.Response.add_header = Mock()
     web.Response.write = Mock()
     web.Response.send_headers = Mock()
     web.Response.write_eof = AsyncMock()
     aiohttp.streams.EmptyStreamReader.read = AsyncMock(
         return_value=b'con1=test1&con2=test2')
     self.handler.tanner_handler.parse_tanner_response = AsyncMock(
         return_value=(self.response_content, self.response_headers, self.response_status))
示例#6
0
 def setUp(self):
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.url = yarl.URL('http://foo.com')
     self.root = 'http://example.com'
     self.max_depth = sys.maxsize
     self.loop = asyncio.new_event_loop()
     self.css_validate = 'false'
     self.handler = Cloner(self.root, self.max_depth, self.css_validate)
     self.filename = None
     self.hashname = None
 def setUp(self):
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.root = "http://example.com"
     self.level = 0
     self.max_depth = sys.maxsize
     self.loop = asyncio.new_event_loop()
     self.css_validate = "false"
     self.handler = Cloner(self.root, self.max_depth, self.css_validate)
     self.content = None
     self.expected_content = None
     self.return_content = None
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_dir = self.main_page_path.rsplit("/")[-1]
     args = run_args.parse_args(["--page-dir", page_dir])
     args_dict = vars(args)
     args_dict["full_page_path"] = self.main_page_path
     self.loop = asyncio.new_event_loop()
     self.data = {
         "method": "GET",
         "path": "/",
         "headers": {
             "Host": "test_host",
             "Connection": "keep-alive",
             "Upgrade-Insecure-Requests": "1",
             "User-Agent": "test_agent",
             "Accept": "text/html",
             "Accept-Encoding": "test_encoding",
             "Accept-Language": "test_lang",
             "Cookie": "test_cookie",
         },
         "uuid": "test_uuid",
         "peer": {
             "ip": "::1",
             "port": 80
         },
         "status": 200,
         "cookies": "test_cookies",
         "sess_uuid": "test_uuid",
     }
     aiohttp.ClientSession.post = AsyncMock(
         return_value=aiohttp.ClientResponse(
             url=yarl.URL("http://www.example.com"),
             method="GET",
             writer=None,
             continue100=1,
             timer=None,
             request_info=None,
             traces=None,
             loop=self.loop,
             session=None,
         ))
     uuid = "test_uuid"
     args.tanner = "tanner.mushmush.org"
     args.no_dorks = True
     self.handler = TannerHandler(args, meta, uuid)
     self.result = None
示例#9
0
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-location")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_location = self.main_page_path.rsplit('/')[-1]
     args = run_args.parse_args(['--page-location', page_location])
     args_dict = vars(args)
     args_dict['full_page_path'] = self.main_page_path
     self.loop = asyncio.new_event_loop()
     self.data = {
         'method': 'GET',
         'path': '/',
         'headers': {
             'Host': 'test_host',
             'Connection': 'keep-alive',
             'Upgrade-Insecure-Requests': '1',
             'User-Agent': 'test_agent',
             'Accept': 'text/html',
             'Accept-Encoding': 'test_encoding',
             'Accept-Language': 'test_lang',
             'Cookie': 'test_cookie'
         },
         'uuid': 'test_uuid',
         'peer': {
             'ip': '::1',
             'port': 80
         },
         'status': 200,
         'cookies': 'test_cookies',
         'sess_uuid': 'test_uuid'
     }
     aiohttp.ClientSession.post = AsyncMock(
         return_value=aiohttp.ClientResponse(url=yarl.URL(
             "http://www.example.com"),
                                             method="GET",
                                             writer=None,
                                             continue100=1,
                                             timer=None,
                                             request_info=None,
                                             traces=None,
                                             loop=self.loop,
                                             session=None))
     uuid = "test_uuid"
     args.tanner = "tanner.mushmush.org"
     args.no_dorks = True
     self.handler = TannerHandlerDirectory(args, meta, uuid)
     self.result = None
示例#10
0
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.page_dir = self.main_page_path.rsplit('/')[-1]
     args = run_args.parse_args(['--page-dir', self.page_dir])
     uuid = '9c10172f-7ce2-4fb4-b1c6-abc70141db56'.encode('utf-8')
     args.tanner = 'tanner.mushmush.org'
     args.no_dorks = True
     args.server_header = "test_server"
     args.slurp_enabled = True
     self.handler = HttpRequestHandler(meta, args, uuid)
     self.data = {
         'method': 'GET', 'path': '/',
         'headers': {
             'Host': 'test_host', 'status': 200
         },
         'cookies': {
             'sess_uuid': 'prev_test_uuid'
         }
     }
     self.loop = asyncio.new_event_loop()
     self.content = '<html><body></body></html>'
     self.content_type = 'test_type'
     event_result = dict(response=dict(message=dict(detection={'type': 1}, sess_uuid="test_uuid")))
     RequestHandler = Mock()
     protocol = RequestHandler()
     message = RawRequestMessage(
         method='POST', path='/', version=HttpVersion(major=1, minor=1), headers=self.data['headers'],
         raw_headers=None, should_close=None, compression=None, upgrade=None, chunked=None,
         url=URL('http://test_url/')
     )
     self.request = web.Request(
         message=message, payload=None, protocol=protocol, payload_writer=None,
         task='POST', loop=self.loop
     )
     self.handler.tanner_handler.create_data = Mock(return_value=self.data)
     self.handler.tanner_handler.submit_data = AsyncMock(return_value=event_result)
     self.handler.submit_slurp = AsyncMock()
     web.Response.add_header = Mock()
     web.Response.write = Mock()
     web.Response.send_headers = Mock()
     web.Response.write_eof = AsyncMock()
     aiohttp.streams.EmptyStreamReader.read = AsyncMock(return_value=b'con1=test1&con2=test2')
     self.handler.tanner_handler.parse_tanner_response = AsyncMock(
         return_value=(self.content, self.content_type, self.data['headers'], self.data['headers']['status']))
 def setUp(self):
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.dorks = dict(response={'dorks': "test_dorks"})
     self.loop = asyncio.new_event_loop()
     aiohttp.ClientSession.get = AsyncMock(
         return_value=aiohttp.ClientResponse(
             url=yarl.URL("http://www.example.com"), method="GET", writer=None, continue100=1,
             timer=None, request_info=None, traces=None, loop=self.loop,
             session=None
         )
     )
     no_dorks = True
     tanner = "tanner.mushmush.org"
     self.handler = HtmlHandler(no_dorks, tanner)
     self.data = None
示例#12
0
 def setUp(self):
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.dorks = dict(response={'dorks': "test_dorks"})
     self.loop = asyncio.new_event_loop()
     aiohttp.ClientSession.get = AsyncMock(
         return_value=aiohttp.ClientResponse(
             url=yarl.URL("http://www.example.com"), method="GET", writer=None, continue100=1,
             timer=None, request_info=None, traces=None, loop=self.loop,
             session=None
         )
     )
     no_dorks = True
     tanner = "tanner.mushmush.org"
     self.handler = HtmlHandler(no_dorks, tanner)
     self.data = None
 def setUp(self):
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-location")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_location = self.main_page_path.rsplit('/')[-1]
     meta_content = {
         "/index.html": {
             "hash": "hash_name",
             "headers": [{
                 "Content-Type": "text/html"
             }]
         }
     }
     self.page_content = "<html><body></body></html>"
     self.headers = multidict.CIMultiDict([("Content-Type", "text/html")])
     self.status_code = 200
     self.content_type = "text/html"
     with open(os.path.join(self.main_page_path, "hash_name"), 'w') as f:
         f.write(self.page_content)
     with open(os.path.join(self.main_page_path, "meta.json"), 'w') as f:
         json.dump(meta_content, f)
     self.args = run_args.parse_args(['--page-location', page_location])
     args_dict = vars(args)
     args_dict['full_page_path'] = self.main_page_path
     self.args.index_page = '/index.html'
     self.args.no_dorks = True
     self.args.tanner = "tanner.mushmush.org"
     self.uuid = "test_uuid"
     self.handler = TannerHandlerDirectory(self.args, meta_content,
                                           self.uuid)
     self.requested_name = '/'
     self.loop = asyncio.get_event_loop()
     self.handler.html_handler.handle_content = AsyncMock(
         return_value=self.page_content)
     self.res1 = None
     self.res2 = None
     self.res3 = None
     self.detection = None
     self.expected_content = None
     self.call_content = None
 def setUp(self):
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.content = """
                       <html>
                             <body>
                             <p style="color:red;">A paragraph to be tested</p>
                             </body>
                       </html>
                    """
     self.expected_content = '<html>\n <body>\n  <p style="color: red">\n'
     self.expected_content += '   <a href="test_dork1" style="color:red;text-decoration:none;cursor:text;">\n'
     self.expected_content += "    A\n   </a>\n   paragraph to be tested\n  </p>\n </body>\n</html>\n"
     self.no_dorks_content = '<html>\n <body>\n  <p style="color:red;">\n   A paragraph to be tested\n'
     self.no_dorks_content += "  </p>\n </body>\n</html>\n"
     self.loop = asyncio.new_event_loop()
     self.return_content = None
     no_dorks = True
     tanner = "tanner.mushmush.org"
     self.handler = HtmlHandler(no_dorks, tanner)
示例#15
0
 def setUp(self):
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.content = '''
                       <html>
                             <body>
                             <p style="color:red;">A paragraph to be tested</p>
                             </body>
                       </html>
                    '''
     self.expected_content = '<html>\n <body>\n  <p style="color: red">\n'
     self.expected_content += '   <a href="test_dork1" style="color:red;text-decoration:none;cursor:text;">\n'
     self.expected_content += '    A\n   </a>\n   paragraph to be tested\n  </p>\n </body>\n</html>\n'
     self.no_dorks_content = '<html>\n <body>\n  <p style="color:red;">\n   A paragraph to be tested\n'
     self.no_dorks_content += '  </p>\n </body>\n</html>\n'
     self.loop = asyncio.new_event_loop()
     self.return_content = None
     no_dorks = True
     tanner = "tanner.mushmush.org"
     self.handler = HtmlHandler(no_dorks, tanner)
示例#16
0
 def setUp(self):
     meta = {
         "/status_404": {
             "hash": "bacfa45149ffbe8dbff34609bf56d748",
             "headers": [{
                 "Content-Type": "text/html; charset=UTF-8"
             }],
         }
     }
     run_args = argparse.ArgumentParser()
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     args = run_args.parse_args([])
     args_dict = vars(args)
     args_dict["full_page_path"] = self.main_page_path
     uuid = "9c10172f-7ce2-4fb4-b1c6-abc70141db56".encode("utf-8")
     args.tanner = "tanner.mushmush.org"
     args.no_dorks = True
     args.host_ip = "127.0.0.1"
     args.port = "80"
     self.handler = HttpRequestHandler(meta, args, uuid)
     self.loop = asyncio.new_event_loop()
 def setUp(self):
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_dir = self.main_page_path.rsplit('/')[-1]
     meta_content = {
         "/index.html": {
             "hash": "hash_name",
             "content_type": "text/html"
         }
     }
     self.page_content = "<html><body></body></html>"
     self.content_type = "text/html"
     with open(os.path.join(self.main_page_path, "hash_name"), 'w') as f:
         f.write(self.page_content)
     with open(os.path.join(self.main_page_path, "meta.json"), 'w') as f:
         json.dump(meta_content, f)
     args = run_args.parse_args(['--page-dir', page_dir])
     args.index_page = '/index.html'
     args.no_dorks = True
     args.tanner = "tanner.mushmush.org"
     uuid = "test_uuid"
     self.handler = TannerHandler(args, meta_content, uuid)
     self.requested_name = '/'
     self.loop = asyncio.get_event_loop()
     self.handler.html_handler.handle_content = AsyncMock(
         return_value=self.page_content)
     self.res1 = None
     self.res2 = None
     self.res3 = None
     self.res4 = None
     self.detection = None
     self.expected_content = None
     self.call_content = None
示例#18
0
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.page_dir = self.main_page_path.rsplit("/")[-1]
     args = run_args.parse_args(["--page-dir", self.page_dir])
     args_dict = vars(args)
     args_dict["full_page_path"] = self.main_page_path
     uuid = "9c10172f-7ce2-4fb4-b1c6-abc70141db56".encode("utf-8")
     args.tanner = "tanner.mushmush.org"
     args.no_dorks = True
     args.server_header = "test_server"
     args.slurp_enabled = True
     self.handler = HttpRequestHandler(meta, args, uuid)
     self.request_data = {
         "method": "GET",
         "path": "/",
         "headers": {
             "Host": "test_host",
             "Content-Type": "test_type",
         },
         "status": 200,
         "cookies": {
             "sess_uuid": "prev_test_uuid",
         },
     }
     self.loop = asyncio.new_event_loop()
     self.response_content = "<html><body></body></html>"
     self.response_headers = multidict.CIMultiDict([("Content-Type",
                                                     "text/html")])
     self.response_status = 200
     event_result = dict(response=dict(
         message=dict(detection={"type": 1}, sess_uuid="test_uuid")))
     RequestHandler = Mock()
     protocol = RequestHandler()
     message = RawRequestMessage(
         method="POST",
         path="/",
         version=HttpVersion(major=1, minor=1),
         headers=self.request_data["headers"],
         raw_headers=None,
         should_close=None,
         compression=None,
         upgrade=None,
         chunked=None,
         url=URL("http://test_url/"),
     )
     self.request = web.Request(
         message=message,
         payload=None,
         protocol=protocol,
         payload_writer=None,
         task="POST",
         loop=self.loop,
     )
     self.handler.tanner_handler.create_data = Mock(
         return_value=self.request_data)
     self.handler.tanner_handler.submit_data = AsyncMock(
         return_value=event_result)
     self.handler.submit_slurp = AsyncMock()
     web.Response.add_header = Mock()
     web.Response.write = Mock()
     web.Response.send_headers = Mock()
     web.Response.write_eof = AsyncMock()
     aiohttp.streams.EmptyStreamReader.read = AsyncMock(
         return_value=b"con1=test1&con2=test2")
     self.handler.tanner_handler.parse_tanner_response = AsyncMock(
         return_value=(
             self.response_content,
             self.response_headers,
             self.response_status,
         ))
示例#19
0
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_dir = self.main_page_path.rsplit('/')[-1]
     args = run_args.parse_args(['--page-dir', page_dir])
     args_dict = vars(args)
     args_dict['full_page_path'] = self.main_page_path
     snare_uuid = '9c10172f-7ce2-4fb4-b1c6-abc70141db56'.encode('utf-8')
     args.no_dorks = True
     self.handler = TannerHandler(args, meta, snare_uuid)
     headers = {
         'Host': 'test_host',
         'status': 200,
         'Cookie': 'sess_uuid=prev_test_uuid; test_cookie=test'
     }
     message = RawRequestMessage(method='POST',
                                 path='/',
                                 version=HttpVersion(major=1, minor=1),
                                 headers=headers,
                                 raw_headers=None,
                                 should_close=None,
                                 compression=None,
                                 upgrade=None,
                                 chunked=None,
                                 url=URL('http://test_url/'))
     loop = asyncio.get_event_loop()
     RequestHandler = Mock()
     protocol = RequestHandler()
     self.request = web.Request(message=message,
                                payload=None,
                                protocol=protocol,
                                payload_writer=None,
                                task='POST',
                                loop=loop)
     self.request.transport.get_extra_info = Mock(
         return_value=(['test_ip', 'test_port']))
     self.response_status = "test_status"
     self.data = None
     self.expected_data = {
         'method': 'POST',
         'path': 'http://test_url/',
         'headers': {
             'Host': 'test_host',
             'status': 200,
             'Cookie': 'sess_uuid=prev_test_uuid; test_cookie=test'
         },
         'uuid': '9c10172f-7ce2-4fb4-b1c6-abc70141db56',
         'peer': {
             'ip': 'test_ip',
             'port': 'test_port'
         },
         'status': 'test_status',
         'cookies': {
             'sess_uuid': 'prev_test_uuid',
             ' test_cookie': 'test'
         }
     }