Xavier Carpent

44 papers A* 1A 5C 1Misc 3Journal 14Unranked 18
YearRankTypeTitle / Venue / Authors
2026 J jnl
J. Cryptogr. Eng.
Gildas Avoine, Xavier Carpent, Diane Leblanc-Albarel
2026 conf
Juggling Formal Methods and Security
Tim Muller, Xavier Carpent, Chenming Xu
2025 conf
HCI (49)
Aseel Aldabjan, Steven Furnell, Xavier Carpent, Maria Papadaki
2025 J jnl
IACR Cryptol. ePrint Arch.
Sayon Duttagupta, Dave Singelée, Xavier Carpent, Volkan Guler, Takahito Yoshizawa, Seyed Farhad Aghili, Aysajan Abidin, Bart Preneel
2025 conf
EICC
Mohammed Aljohani, Steven Furnell, Xavier Carpent, Nicholas Gervassis
2025 J jnl
IACR Cryptol. ePrint Arch.
Gildas Avoine, Xavier Carpent, Diane Leblanc-Albarel
2024 conf
World Conference on Information Security Education
Steven Furnell, Xavier Carpent, Andrew Martin
2024 conf
HAISA (1)
Arwa Binsedeeq, Steven Furnell, Kirsi Helkala, Naomi Woods, Darren Chadwick, Chris Fullwood, Xavier Carpent, Nicholas Gervassis
2024 C conf
ICISSP
Aseel Aldabjan, Steven Furnell, Xavier Carpent, Maria Papadaki
2024 conf
ACNS (1)
Xavier Carpent, Seoyeon Hwang, Gene Tsudik
2024 J jnl
Future Internet
Dimah Almani, Tim Muller, Xavier Carpent, Takahito Yoshizawa, Steven Furnell
2024 J jnl
Future Internet
Abeer Almutairi, Xavier Carpent, Steven Furnell
2024 conf
HCI (45)
Arwa Binsedeeq, Steven Furnell, Xavier Carpent, Nicholas Gervassis
2024 conf
CRYPTO (4)
Gildas Avoine, Xavier Carpent, Tristan Claverie, Christophe Devine, Diane Leblanc-Albarel
2024 Misc conf
SEC
Abeer Almutairi, Xavier Carpent, Steven Furnell
2023 conf
IFIPTM
Dimah Almani, Tim Muller, Steven Furnell, Xavier Carpent, Takahito Yoshizawa
2023 J jnl
Comput. J.
Gildas Avoine, Xavier Carpent, Diane Leblanc-Albarel
2023 A conf
AsiaCCS
Gildas Avoine, Xavier Carpent, Diane Leblanc-Albarel
2021 conf
ISGT-Europe
Emilio J. Palacios-García, Joppe W. Bos, Xavier Carpent, Geert Deconinck
2021 conf
ESORICS (2)
Gildas Avoine, Xavier Carpent, Diane Leblanc-Albarel
2021 ch.
Security of Ubiquitous Computing Systems
Xavier Carpent, Paolo D'Arco, Roberto De Prisco
2019 J jnl
ACM Trans. Design Autom. Electr. Syst.
Xavier Carpent, Norrathep Rattanavipanon, Gene Tsudik
2018 A conf
DATE
Xavier Carpent, Gene Tsudik, Norrathep Rattanavipanon
2018 A* conf
DAC
Xavier Carpent, Karim Eldefrawy, Norrathep Rattanavipanon, Ahmad-Reza Sadeghi, Gene Tsudik
2018 conf
HOST
Xavier Carpent, Norrathep Rattanavipanon, Gene Tsudik
2018 A conf
AsiaCCS
Xavier Carpent, Karim Eldefrawy, Norrathep Rattanavipanon, Gene Tsudik
2017 J jnl
CoRR
Xavier Carpent, Norrathep Rattanavipanon, Gene Tsudik
2017 A conf
AsiaCCS
Gildas Avoine, Xavier Carpent
2017 conf
ACISP (1)
Gildas Avoine, Xavier Carpent, Barbara Kordy, Florent Tardif
2017 A conf
AsiaCCS
Xavier Carpent, Karim El Defrawy, Norrathep Rattanavipanon, Gene Tsudik
2017 conf
WPES@CCS
Xavier Carpent, Sky Faber, Tomas Sander, Gene Tsudik
2017 J jnl
IACR Cryptol. ePrint Arch.
Xavier Carpent, Norrathep Rattanavipanon, Gene Tsudik
2016 J jnl
IEEE Trans. Mob. Comput.
Gildas Avoine, Xavier Carpent, Julio C. Hernandez-Castro
2016 J jnl
IACR Cryptol. ePrint Arch.
Xavier Carpent, Sky Faber, Tomas Sander, Gene Tsudik
2015 Misc conf
ACISP
Gildas Avoine, Adrien Bourgeois, Xavier Carpent
2015 conf
ESORICS (1)
Gildas Avoine, Xavier Carpent, Cédric Lauradoux
2015
Xavier Carpent
2013 conf
RFIDSec
Gildas Avoine, Muhammed Ali Bingöl, Xavier Carpent, Süleyman Kardas
2013 Misc conf
ICISC
Gildas Avoine, Xavier Carpent
2013 J jnl
IEEE Trans. Mob. Comput.
Gildas Avoine, Muhammed Ali Bingöl, Xavier Carpent, Siddika Berna Örs Yalçin
2012 J jnl
J. Netw. Comput. Appl.
Gildas Avoine, Xavier Carpent, Benjamin Martin
2012 conf
RFIDSec
Gildas Avoine, Xavier Carpent
2011 J jnl
IACR Cryptol. ePrint Arch.
Gildas Avoine, Xavier Carpent
2010 conf
RFIDSec
Gildas Avoine, Xavier Carpent, Benjamin Martin
redb/extractors/pe_extractors/pe_sections.py
← Index redb/extractors/pe_extractors/pe_sections.py python
import base64
import hashlib
import inspect
from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PESection
from datetime import datetime, timezone
from typing import Any


class PESectionExtractor(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_sections"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_sections(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        sections = []
        for section in self.pe.sections:
            try:
                name = self.process_binary_string(section.Name)
            except Exception as e:
                name = "UnableToDecode"
                self.log.warning(
                    f'Unable to store section Name "{section.Name}" for {self.hash.sha256}'
                    f" exception {e}"
                )
            sec_sha256 = section.get_hash_sha256()
            sec_md5 = section.get_hash_md5()
            # sec_entropy = "%.2f" % section.get_entropy()
            sec_entropy = section.get_entropy()
            pe_section = PESection(
                _id=hashlib.sha256(
                    name.encode()
                ).hexdigest(),  # usecase 8e035beb02a411f8a9e92d4cf184ad34f52bbd0a81a50c222cdd4706e4e45104, all section have same sha256
                section_name=name,
                section_name_b64=base64.b64encode(
                    section.Name.rstrip(b'\x00')
                ).decode(),  # base64.b64decode(b64) to decode
                section_v_addr=section.VirtualAddress,
                section_v_addr_hex=hex(section.VirtualAddress),
                section_v_size=section.Misc_VirtualSize,
                section_size=section.SizeOfRawData,
                section_pointer_to_raw_data=hex(section.PointerToRawData),
                section_md5=sec_md5,
                section_sha256=sec_sha256,
                section_entropy=sec_entropy,
            )
            sections.append(pe_section)
        return sections

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

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            sections = self.extract()
            if sections is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            for section in sections:
                data.append([
                    self.sha256,                          # sha256
                    self.md5,                             # md5
                    self.sha1,                            # sha1
                    section.section_name,                 # section_name
                    section.section_name_b64,             # section_name_b64
                    section.section_entropy,              # section_entropy
                    section.section_sha256,               # section_sha256
                    section.section_md5,                  # section_md5
                    section.section_size,                 # section_size
                    section.section_v_addr,               # section_v_addr
                    section.section_v_size,               # section_v_size
                    int(section.section_pointer_to_raw_data, 16),  # section_pointer_to_raw_data - convert from hex
                    current_time                          # analysis_date
                ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'section_name', 'section_name_b64',
                'section_entropy', 'section_sha256', 'section_md5', 'section_size',
                'section_v_addr', 'section_v_size', 'section_pointer_to_raw_data',
                'analysis_date'
            ]
            
            if not data:
                return None

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

            return (data, column_names, column_type_names)

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