Beispiel #1
0
    async def _get_file(self, name, platform):
        self.log.debug(f"Getting file {name}")
        if name.endswith('.go'):
            # if not platform or platform.lower() not in {ab['platform'].lower() for ab in await self.data_svc.explode_abilities()}:
            #     if platform.lower() not in 'arm':
            #     	raise FileNotFoundError
            # if platform.lower() in 'arm':
            #     print('arm')
            #     name = 'sandcat.go-arm'
            # else:
            name = await self._go_compile(name, platform.lower())
            _, file_path = await self.find_file_path(name, location='payloads')
            with open(file_path, 'rb') as file_stream:
                return name, file_stream.read()

        _, file_name = await self.find_file_path(name, location='payloads')
        if file_name:
            with open(file_name, 'rb') as file_stream:
                return name, file_stream.read()

        _, file_name = await self.find_file_path('%s.xored' % (name, ),
                                                 location='payloads')
        if file_name:
            return name, xor_file(file_name)

        raise FileNotFoundError
 async def read_file(self, name, location='payloads'):
     _, file_name = await self.find_file_path(name, location=location)
     if file_name:
         if self.is_extension_xored(file_name):
             return name, xor_file(file_name)
         return name, self._read(file_name)
     raise FileNotFoundError
Beispiel #3
0
    def test_read_file_xor(self, loop, mocker, tmpdir, file_svc):
        plaintext_fn = 'xor-plaintext.txt'
        xortext_fn = "%s.xored" % plaintext_fn
        content = b'this is plaintext'
        plaintext_file = tmpdir.join(plaintext_fn)
        plaintext_file.write(content)
        xored_file = tmpdir.join(xortext_fn)
        xor_file(plaintext_file, xored_file)

        mocker.patch.object(file_svc,
                            'find_file_path',
                            new_callable=AsyncMock,
                            return_value=(None, str(xored_file)))
        name, nonxored_output = loop.run_until_complete(
            file_svc.read_file(xortext_fn))
        assert name == xortext_fn
        assert nonxored_output == content
Beispiel #4
0
    async def read_file(self, name, location='payloads'):
        """
        Open a file and read the contents

        :param name:
        :param location:
        :return: a tuple (file_path, contents)
        """
        _, file_name = await self.find_file_path(name, location=location)
        if file_name:
            if file_name.endswith('.xored'):
                return name, xor_file(file_name)
            return name, self._read(file_name)
        raise FileNotFoundError
Beispiel #5
0
 async def read_file(self, name, location='payloads'):
     """
     Open a file and read the contents
     :param name:
     :param location:
     :return: a tuple (file_path, contents)
     """
     _, file_name = await self.find_file_path(name, location=location)
     if file_name:
         with open(file_name, 'rb') as file_stream:
             return name, file_stream.read()
     _, file_name = await self.find_file_path('%s.xored' % (name,), location=location)
     if file_name:
         return name, xor_file(file_name)
     raise FileNotFoundError
Beispiel #6
0
    async def _get_file(self, name, platform):
        if name.endswith('.go'):
            name = await self._go_compile(name, platform)
            _, file_path = await self.find_file_path(name, location='payloads')
            with open(file_path, 'rb') as file_stream:
                return name, file_stream.read()

        file_info = await self.find_file_path(name, location='payloads')
        if file_info:
            with open(file_info[1], 'rb') as file_stream:
                return name, file_stream.read()

        file_info = await self.find_file_path('%s.xored' % (name, ),
                                              location='payloads')
        if file_info:
            return name, xor_file(file_info[1])

        raise FileNotFoundError
Beispiel #7
0
    async def _get_file(self, name, platform):
        if name.endswith('.go'):
            if not platform or platform.lower() not in {ab['platform'].lower() for ab in await self.data_svc.explode_abilities()}:
                raise FileNotFoundError
            name = await self._go_compile(name, platform.lower())
            _, file_path = await self.find_file_path(name, location='payloads')
            with open(file_path, 'rb') as file_stream:
                return name, file_stream.read()

        _, file_name = await self.find_file_path(name, location='payloads')
        if file_name:
            with open(file_name, 'rb') as file_stream:
                return name, file_stream.read()

        _, file_name = await self.find_file_path('%s.xored' % (name,), location='payloads')
        if file_name:
            return name, xor_file(file_name)

        raise FileNotFoundError