def METHOD_NAME(self, filename, password):
    archive_path = _prepare_archive_at_path(filename)
    if not archive_path:
        return None
    # Extraction.
    extract_path = environ.get("TEMP", "/tmp")
    log.info(extract_path)
    with ZipFile(archive_path, "r") as archive:
        try:
            archive.extractall(path=extract_path, pwd=password)
            log.info("Extracted all")
        except BadZipfile:
            raise Exception("Invalid Zip file")
        # Try to extract it again, but with a default password
        except RuntimeError:
            try:
                archive.extractall(path=extract_path, pwd="infected")
            except RuntimeError as err:
                raise Exception(f"Unable to extract Zip file: {err}")
        finally:
            self._extract_nested_archives(archive, extract_path, password)
    return archive.namelist()