Maciej Swiechowski

41 papers A* 1A 1B 5C 6Journal 15Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Maciej Swiechowski, Adam Zychowski, Jacek Mandziuk
2025 J jnl
IEEE Trans. Games
Jan Karwowski, Maciej Swiechowski, Jacek Mandziuk
2025 J jnl
IEEE Trans. Games
Maciej Swiechowski
2025 C conf
FedCSIS
Jan Zysko, Michal Slezak, Dominik Slezak, Maciej Swiechowski
2025 A conf
AAMAS
Maciej Swiechowski, Dominik Slezak
2025 J jnl
CoRR
Maciej Swiechowski, Dominik Slezak
2024 B conf
IEEE Big Data
Dominik Slezak, Andrzej Janusz, Maciej Swiechowski, Agnieszka Chadzynska-Krasowska, Jacek Kaminski
2024 B conf
CEC
Maciej Swiechowski
2024 B conf
IEEE Big Data
Jan Zysko, Maciej Swiechowski, Sebastian Stawicki, Katarzyna Jagiela, Andrzej Janusz, Dominik Slezak
2023 A* conf
AAAI
Jeremiasz Wolosiuk, Maciej Swiechowski, Jacek Mandziuk
2023 J jnl
Artif. Intell. Rev.
Maciej Swiechowski, Konrad Godlewski, Bartosz Sawicki, Jacek Mandziuk
2022 J jnl
CoRR
Maciej Swiechowski
2022 J jnl
Inf. Sci.
Andrzej Janusz, Daniel Kaluza, Maciej Matraszek, Lukasz Grad, Maciej Swiechowski, Dominik Slezak
2022 conf
IPMU (2)
Marek Grzegorowski, Andrzej Janusz, Stanislaw Lazewski, Maciej Swiechowski, Monika Jankowska
2021 J jnl
CoRR
Maciej Swiechowski
2021 C conf
FedCSIS
Maciej Swiechowski, Tomasz Tajmajer
2021 conf
GECCO Companion
Maciej Swiechowski
2021 conf
SSCI
Maciej Swiechowski, Daniel Lewinski, Rafal Tyl
2021 J jnl
CoRR
Maciej Swiechowski, Konrad Godlewski, Bartosz Sawicki, Jacek Mandziuk
2021 conf
IEEE BigData
Maciej Matraszek, Andrzej Janusz, Maciej Swiechowski, Dominik Slezak
2020 C conf
FedCSIS
Maciej Swiechowski
2020 C conf
FedCSIS
Maciej Swiechowski, Dominik Slezak
2018 B conf
WI
Maciej Swiechowski, Dominik Slezak
2018 conf
ICDM Workshops
Maciej Swiechowski, Dominik Slezak
2018 conf
CIG
Maciej Swiechowski, Tomasz Tajmajer, Andrzej Janusz
2018 J jnl
CoRR
Maciej Swiechowski, Tomasz Tajmajer, Andrzej Janusz
2018 C conf
FedCSIS
Andrzej Janusz, Tomasz Tajmajer, Maciej Swiechowski, Lukasz Grad, Jacek Puczniewski, Dominik Slezak
2017 C conf
FedCSIS
Andrzej Janusz, Tomasz Tajmajer, Maciej Swiechowski
2017 J jnl
CoRR
Andrzej Janusz, Maciej Swiechowski, Tomasz Tajmajer
2017 conf
ICAISC (2)
Jacek Mandziuk, Maciej Swiechowski
2017 J jnl
Inf. Sci.
Jacek Mandziuk, Maciej Swiechowski
2016 ch.
Challenging Problems and Solutions in Intelligent Systems
Maciej Swiechowski, Jacek Mandziuk
2016 conf
SSCI
Maciej Swiechowski, Janusz Kacprzyk, Slawomir Zadrozny
2016 J jnl
J. Log. Comput.
Maciej Swiechowski, Jacek Mandziuk
2016 conf
SSCI
Jacek Mandziuk, Maciej Swiechowski
2016 J jnl
IEEE Trans. Comput. Intell. AI Games
Maciej Swiechowski, Jacek Mandziuk, Yew-Soon Ong
2014 conf
CIG
Maciej Swiechowski, Jacek Mandziuk
2014 J jnl
IEEE Trans. Comput. Intell. AI Games
Maciej Swiechowski, Jacek Mandziuk
2014 conf
IEEE Conf. on Intelligent Systems (1)
Maciej Swiechowski, Jacek Mandziuk
2012 B conf
SOFSEM
Jacek Mandziuk, Maciej Swiechowski
2010 conf
ICCVG (2)
Joanna Porter-Sobieraj, Maciej Swiechowski
redb/extractors/pe_extractor.py
← Index redb/extractors/pe_extractor.py python
import logging
from abc import ABCMeta, abstractmethod
import inspect

import magic
import pefile
from dotnetfile import DotNetPE

from redb.extractors.extractor import Extractor

logger = logging.getLogger(__name__)


@abstractmethod
class PEExtractor(Extractor, metaclass=ABCMeta):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious
        )
        self.pe = pe if pe else self._generate_pefile_object()
        self.dotnet = None

    def _generate_pefile_object(self):
        pe = None
        try:
            pe = pefile.PE(self.filepath)
            if not pe:
                raise pefile.PEFormatError("Empty file?")
        except pefile.PEFormatError as e:
            self.log.error(f"Format error {self.hash.sha256} Full error : {e}")
        return pe

    def _generate_dotnetfile_object(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        dotnet = None
        error = None
        try:
            dotnet = DotNetPE(self.filepath)
            if not dotnet:
                raise Exception("Empty file?")
        except Exception as e:
            self.log.error(
                f"Format error dotnet file {self.hash.sha256} Full error : {e}"
            )
            error = e
        return dotnet, error

    def _check_dotnet(self):
        try:
            file_type = magic.from_buffer(self.binary)
            if ".Net" in file_type:
                return True
            for entry in self.pe.OPTIONAL_HEADER.DATA_DIRECTORY:
                # IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR is typically 14
                if (
                    entry.name == "IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR"
                    and entry.Size > 0
                ):
                    return True
            return False
        except AttributeError as e:
            self.log.error(
                f"AttributeError error dotnet file {self.hash.sha256} Full error : {e}"
            )
            return False

    def _is_signed(self):
        address = self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].VirtualAddress
        if address == 0:
            return False
        return True

    def _has_overlay(self):
        return bool(self.pe.get_overlay())