Example #1
0
 def setUp(self):
     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]
     self.args = run_args.parse_args(['--page-dir', self.page_dir])
     self.loop = asyncio.new_event_loop()
     self.status = 500
     self.message = "test"
     self.payload = "test"
     self.exc = "[Errno 0] test"
     self.headers = "test"
     self.reason = "test"
     self.data = dict(method='GET',
                      path='/',
                      headers="test_headers",
                      uuid="test_uuid",
                      peer="test_peer",
                      status="test_status",
                      error=self.exc)
     aiohttp.server.ServerHttpProtocol.handle_error = Mock()
     self.handler = HttpRequestHandler(self.meta, self.args)
     self.handler.create_data = Mock(return_value=self.data)
     self.handler.submit_data = AsyncMock()
Example #2
0
 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)
     self.page_dir = self.main_page_path.rsplit('/')[-1]
     self.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(self.meta_content, f)
     self.args = run_args.parse_args(['--page-dir', self.page_dir])
     self.requested_name = '/'
     self.loop = asyncio.new_event_loop()
     self.handler = HttpRequestHandler(self.meta_content, self.args)
     self.handler.run_args.index_page = '/index.html'
     self.handler.handle_html_content = AsyncMock(
         return_value=self.page_content)
Example #3
0
    def test_event_result_exception(self):
        aiohttp.ClientResponse.json = AsyncMock(side_effect=Exception())

        async def test():
            self.result = await self.handler.submit_data(self.data)

        with self.assertRaises(Exception):
            self.loop.run_until_complete(test())
Example #4
0
    def test_return_dorks_exception(self):
        aiohttp.ClientResponse.json = AsyncMock(side_effect=Exception())

        async def test():
            self.data = await self.handler.get_dorks()

        with self.assertRaises(Exception):
            self.loop.run_until_complete(test())
Example #5
0
    def test_return_dorks(self):
        aiohttp.ClientResponse.json = AsyncMock(return_value=self.dorks)

        async def test():
            self.data = await self.handler.get_dorks()

        self.loop.run_until_complete(test())
        self.assertEquals(self.data, self.dorks['response']['dorks'])
Example #6
0
    def test_handle_content_exception(self):
        self.handler.run_args.no_dorks = False
        self.handler.get_dorks = AsyncMock(return_value=[])

        async def test():
            self.return_content = await self.handler.handle_html_content(
                self.content)

        with self.assertRaises(IndexError):
            self.loop.run_until_complete(test())
Example #7
0
    def test_event_result(self):
        aiohttp.ClientResponse.json = AsyncMock(
            return_value=dict(detection={'type': 1}, sess_uuid="test_uuid"))

        async def test():
            self.result = await self.handler.submit_data(self.data)

        self.loop.run_until_complete(test())
        self.assertEquals(self.result,
                          dict(detection={'type': 1}, sess_uuid="test_uuid"))
Example #8
0
    def test_get_dorks(self):
        aiohttp.ClientResponse.json = AsyncMock(return_value=dict(
            response={'dorks': "test_dorks"}))

        async def test():
            self.data = await self.handler.get_dorks()

        self.loop.run_until_complete(test())
        aiohttp.ClientSession.get.assert_called_with(
            'http://tanner.mushmush.org:8090/dorks')
Example #9
0
    def test_post_data(self):
        aiohttp.ClientResponse.json = AsyncMock(
            return_value=dict(detection={'type': 1}, sess_uuid="test_uuid"))

        async def test():
            self.result = await self.handler.submit_data(self.data)

        self.loop.run_until_complete(test())
        aiohttp.ClientSession.post.assert_called_with(
            'http://tanner.mushmush.org:8090/event',
            data=json.dumps(self.data))
Example #10
0
    def test_handle_content(self):
        self.handler.run_args.no_dorks = False
        self.handler.get_dorks = AsyncMock(return_value=["test_dork1"])

        async def test():
            self.return_content = await self.handler.handle_html_content(
                self.content)

        self.loop.run_until_complete(test())
        soup = BeautifulSoup(self.return_content, "html.parser")
        self.return_content = soup.decode("utf-8")
        self.assertEquals(self.return_content, self.expected_content)
Example #11
0
 def setUp(self):
     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]
     self.args = run_args.parse_args(['--page-dir', self.page_dir])
     self.loop = asyncio.new_event_loop()
     self.handler = HttpRequestHandler(self.meta, self.args)
     self.handler.run_args.server_header = "test_server"
     self.handler.run_args.slurp_enabled = True
     self.data = {
         'method': 'GET', 'path': '/',
         'headers': {
             'Host': 'test_host', 'status': 200
         },
         'cookies': {
             'sess_uuid': 'prev_test_uuid'
         }
     }
     self.content = '<html><body></body></html>'
     self.content_type = 'test_type'
     self.event_result = dict(response=dict(message=dict(detection={'type': 1}, sess_uuid="test_uuid")))
     self.request = aiohttp.protocol.RawRequestMessage(
         method='POST', path='/', version=HttpVersion(major=1, minor=1), headers=self.data['headers'],
         raw_headers=None, should_close=None, compression=None)
     self.handler.create_data = Mock(return_value=self.data)
     self.handler.submit_data = AsyncMock(return_value=self.event_result)
     self.handler.submit_slurp = AsyncMock()
     self.payload = aiohttp.streams.EmptyStreamReader()
     aiohttp.Response.add_header = Mock()
     aiohttp.Response.write = Mock()
     aiohttp.Response.send_headers = Mock()
     aiohttp.Response.write_eof = AsyncMock()
     aiohttp.streams.EmptyStreamReader.read = AsyncMock(return_value=b'con1=test1&con2=test2')
     self.handler.parse_tanner_response = AsyncMock(
         return_value=(self.content, self.content_type, self.data['headers'], self.data['headers']['status']))
Example #12
0
 def setUp(self):
     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]
     self.args = run_args.parse_args(['--page-dir', self.page_dir])
     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"))
     self.handler = HttpRequestHandler(self.meta, self.args)
     self.handler.run_args.tanner = "tanner.mushmush.org"
Example #13
0
 def setUp(self):
     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]
     self.args = run_args.parse_args(['--page-dir', self.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"))
     self.handler = HttpRequestHandler(self.meta, self.args)
     self.handler.run_args.tanner = "tanner.mushmush.org"