Xavier Siebert

31 papers A 2B 3C 1Journal 12Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Bastien Vanderplaetse, Xavier Siebert, Stéphane Dupont
2024 J jnl
Mach. Learn.
Christophe Denis, Mohamed Hebiri, Boris Ndjia Njike, Xavier Siebert
2024 J jnl
Expert Syst. Appl.
Gulshan Sihag, Véronique Delcroix, Emmanuelle Grislin-Le Strugeon, Xavier Siebert, Sylvain Piechowiak, François Puisieux
2024 B conf
ESANN
Bastien Vanderplaetse, Stéphane Dupont, Xavier Siebert
2024 J jnl
CoRR
Otmane Amel, Sédrick Stassin, Sidi Ahmed Mahmoudi, Xavier Siebert
2023 conf
EMBC
Luca La Fisca, Celiane Jennebauffe, Marie Bruyneel, Laurence Ris, Laurent Lefebvre, Xavier Siebert, Bernard Gosselin
2023 conf
NER
Luca La Fisca, Celiane Jennebauffe, Marie Bruyneel, Laurence Ris, Laurent Lefebvre, Xavier Siebert, Bernard Gosselin
2023 conf
ICCV (Workshops)
Alexandre Englebert, Sédrick Stassin, Géraldin Nanfack, Sidi Ahmed Mahmoudi, Xavier Siebert, Olivier Cornu, Christophe De Vleeschouwer
2023 B conf
ESANN
Otmane Amel, Sédrick Stassin, Sidi Ahmed Mahmoudi, Xavier Siebert
2023 J jnl
CoRR
Boris Ndjia Njike, Xavier Siebert
2023 B conf
ESANN
Sédrick Stassin, Otmane Amel, Sidi Ahmed Mahmoudi, Xavier Siebert
2022 conf
ICT4AWE (Revised Selected Papers)
Gulshan Sihag, Pankaj Yadav, Vivek Vijay, Véronique Delcroix, Xavier Siebert, Sandeep Kumar Yadav, François Puisieux
2022 C conf
ICT4AWE
Gulshan Sihag, Pankaj Yadav, Véronique Delcroix, Vivek Vijay, Xavier Siebert, Sandeep Kumar Yadav, François Puisieux
2022 A conf
AISTATS
Boris Ndjia Njike, Xavier Siebert
2021 J jnl
Comput. Sci. Rev.
Pierre De Handschutter, Nicolas Gillis, Xavier Siebert
2021 J jnl
CoRR
Boris Ndjia Njike, Xavier Siebert
2020 J jnl
CoRR
Pierre De Handschutter, Nicolas Gillis, Xavier Siebert
2020 J jnl
CoRR
Boris Ndjia Njike, Xavier Siebert
2020 J jnl
IEEE Signal Process. Lett.
Pierre De Handschutter, Nicolas Gillis, Arnaud Vandaele, Xavier Siebert
2020 conf
GLOBECOM (Workshops)
Gulshan Sihag, Véronique Delcroix, Emmanuelle Grislin, Xavier Siebert, Sylvain Piechowiak, François Puisieux
2019 J jnl
CoRR
Pierre De Handschutter, Nicolas Gillis, Arnaud Vandaele, Xavier Siebert
2014 conf
ISMIR
Christian Frisson, Stéphane Dupont, Willy Yvart, Nicolas Riche, Xavier Siebert, Thierry Dutoit
2014 conf
IPMU (2)
Massimo Gurrieri, Philippe Fortemps, Xavier Siebert
2014 conf
Audio Mostly Conference
Christian Frisson, Stéphane Dupont, Willy Yvart, Nicolas Riche, Xavier Siebert, Thierry Dutoit
2013 ed.
INTETAIN
Matei Mancas, Nicolas D'Alessandro, Xavier Siebert, Bernard Gosselin, Carlos Valderrama, Thierry Dutoit
2013 conf
MMM (2)
Christian Frisson, Stéphane Dupont, Alexis Moinet, Cécile Picard-Limpens, Thierry Ravet, Xavier Siebert, Thierry Dutoit
2012 conf
IPMU (1)
Massimo Gurrieri, Xavier Siebert, Philippe Fortemps, Salvatore Greco, Roman Slowinski
2012 conf
NIME
Christian Frisson, Stéphane Dupont, Julien Leroy, Alexis Moinet, Thierry Ravet, Xavier Siebert, Thierry Dutoit
2010 A conf
ICME
Damien Tardieu, Xavier Siebert, Stéphane Dupont, Barbara Mazzarino, B. Blumenthal
2010 J jnl
J. Multimodal User Interfaces
Damien Tardieu, Xavier Siebert, Barbara Mazzarino, Ricardo Chessini, Julien Dubois, Stéphane Dupont, Giovanna Varni, Alexandra Visentin
2010 conf
NIME
Christian Frisson, Benoît Macq, Stéphane Dupont, Xavier Siebert, Damien Tardieu, Thierry Dutoit
redb/extractors/pe_extractors/pe_overlay.py
← Index redb/extractors/pe_extractors/pe_overlay.py python
from hashlib import md5, sha1, sha256
import inspect
from datetime import datetime, timezone
from typing import Any

import magic
from magika import Magika

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEOverlay


class PEOverlayExtractor(PEExtractor):

    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,
            pe,
        )
        self.elastic_index = self.index_prefix + "-pe_overlay"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.PE_OVERLAY.value

    def _extract_pe_overlay(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        overlay = self.pe.get_overlay()
        if overlay:
            return PEOverlay(
                _id=sha256(overlay).hexdigest(),
                overlay_size=len(overlay),
                overlay_entropy=self.calculate_entropy(overlay),
                overlay_offset=self.pe.get_overlay_data_start_offset(),
                overlay_mimetype=magic.from_buffer(overlay, mime=True),
                overlay_type=magic.from_buffer(overlay),
                overlay_magika=Magika().identify_bytes(overlay).output.ct_label,
                overlay_sha256=sha256(overlay).hexdigest(),
                overlay_sha1=sha1(overlay).hexdigest(),
                overlay_md5=md5(overlay).hexdigest(),
            )
        return None

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            overlay = self._extract_pe_overlay()
            # self.export_to_elastic([overlay])  # Let the exporters handle this
            return overlay
        except Exception as e:
            self.log.error(f"Error extracting PE overlay: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            overlay = self.extract()
            if overlay is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            data.append([
                self.sha256,              # sha256
                self.md5,                 # md5
                self.sha1,                # sha1
                overlay.overlay_size,     # overlay_size
                overlay.overlay_entropy,  # overlay_entropy
                overlay.overlay_offset,   # overlay_offset
                overlay.overlay_mimetype, # overlay_mimetype
                overlay.overlay_type,     # overlay_type
                overlay.overlay_magika,   # overlay_magika
                overlay.overlay_sha256,   # overlay_sha256
                overlay.overlay_sha1,     # overlay_sha1
                overlay.overlay_md5,      # overlay_md5
                current_time             # analysis_date
            ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'overlay_size', 'overlay_entropy',
                'overlay_offset', 'overlay_mimetype', 'overlay_type', 'overlay_magika',
                'overlay_sha256', 'overlay_sha1', 'overlay_md5',
                'analysis_date'
            ]
            
            if not data:
                return None

            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'UInt64', 'Float64', 'UInt64',
                'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(String)',
                'FixedString(64)', 'FixedString(40)', 'FixedString(32)',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

    def get_clickhouse_table(self) -> str:
        return "redb_pe_overlays"