Vincent Hilaire

104 papers B 6C 5Misc 7Journal 33Unranked 44
YearRankTypeTitle / Venue / Authors
2026 conf
ICAART (1)
Narendar Kumar, Yazan Mualla, Vincent Hilaire, Stéphane Galland
2025 J jnl
Knowl. Based Syst.
Fatima Ezzahra Benkirane, Nathan Crombez, Vincent Hilaire, Yassine Ruichek
2025 J jnl
Integr. Comput. Aided Eng.
Vincent Hilaire, Alexis Lalevée
2024 conf
ARSO
Iaroslav Okunevich, Vincent Hilaire, Stéphane Galland, Olivier Lamotte, Yassine Ruichek, Zhi Yan
2024 J jnl
Comput. Vis. Image Underst.
Fatima Ezzahra Benkirane, Nathan Crombez, Vincent Hilaire, Yassine Ruichek
2023 J jnl
Expert Syst. Appl.
Sebastian Rodriguez, Vincent Hilaire
2023 conf
ECMR
Iaroslav Okunevich, Vincent Hilaire, Stéphane Galland, Olivier Lamotte, Liubov Shilova, Yassine Ruichek, Zhi Yan
2023 J jnl
Knowl. Based Syst.
Fatima Ezzahra Benkirane, Nathan Crombez, Yassine Ruichek, Vincent Hilaire
2022 C conf
IECON
Fatima Ezzahra Benkirane, Nathan Crombez, Vincent Hilaire, Yassine Ruichek
2022 J jnl
CoRR
Iaroslav Okunevich, Vincent Hilaire, Stéphane Galland, Olivier Lamotte, Liubov Shilova, Yassine Ruichek, Zhi Yan
2021 Misc conf
QCE
Abder Koukam, Abdeljalil Abbas-Turki, Vincent Hilaire, Yassine Ruichek
2020 J jnl
Eng. Appl. Artif. Intell.
Igor Haman Tchappi, Stéphane Galland, Vivient Corneille Kamla, Jean-Claude Kamgang, Yazan Mualla, Amro Najjar, Vincent Hilaire
2020 J jnl
J. Univers. Comput. Sci.
Smail Sellah, Vincent Hilaire
2019 J jnl
Int. J. Ad Hoc Ubiquitous Comput.
Jiawei Zhu, Fabrice Lauri, Abderrafiaa Koukam, Vincent Hilaire, Yishuai Lin, Youquan Liu
2019 B conf
KES
Ezzine Missaoui, Belhassen Mazigh, Vincent Hilaire, Sami Bhiri
2018 B conf
KES
Ezzine Missaoui, Belhassen Mazigh, Sami Bhiri, Vincent Hilaire
2018 conf
SNAMS
Smail Sellah, Vincent Hilaire
2018 J jnl
Artif. Intell. Rev.
Pedro Araújo, Sebastian Rodriguez, Vincent Hilaire
2018 J jnl
CoRR
Pragna Das, Vincent Hilaire, Lluís Ribas-Xirgo
2017 B conf
ICTAI
Ezzine Missaoui, Belhassen Mazigh, Sami Bhiri, Vincent Hilaire
2017 ch.
Handbook of Large-Scale Distributed Computing in Smart Healthcare
Amir Hajjam El Hassani, Amine Ahmed Benyahia, Emmanuel Andres, Samy Talha, Mohamed Hajjam El Hassani, Vincent Hilaire
2017 Misc conf
HAIS
Ezzine Missaoui, Belhassen Mazigh, Sami Bhiri, Vincent Hilaire
2016 conf
IIMSS
Philippe Descamps, Vincent Hilaire, Olivier Lamotte, Sebastian Rodriguez
2016 J jnl
Eng. Appl. Artif. Intell.
Gillian Basso, Massimo Cossentino, Vincent Hilaire, Fabrice Lauri, Sebastian Rodriguez, Valeria Seidita
2015 conf
ICCSAMA
Jiawei Zhu, Fabrice Lauri, Abderrafiaa Koukam, Vincent Hilaire
2015 conf
FNC/MobiSPC
Samuel Deniaud, Philippe Descamps, Vincent Hilaire, Olivier Lamotte, Sebastian Rodriguez
2015 J jnl
Integr. Comput. Aided Eng.
Yishuai Lin, Philippe Descamps, Nicolas Gaud, Vincent Hilaire, Abderrafiaa Koukam
2015 Misc conf
AIAI
Jiawei Zhu, Fabrice Lauri, Abderrafiaa Koukam, Vincent Hilaire
2014 conf
SITIS
Inaya Lahoud, Davy Monticolo, Vincent Hilaire
2014 J jnl
Knowl. Based Syst.
Davy Monticolo, Adriana Simona Mihaita, Hind Darwich, Vincent Hilaire
2014 conf
SITA
Youness Chaabi, Rochdi Messoussi, Vincent Hilaire, Khadija Lekdioui, Yassine Ruichek, Raja Touahni
2014 conf
ICSIBO
Jiawei Zhu, Fabrice Lauri, Abderrafiaa Koukam, Vincent Hilaire
2014 book
Massimo Cossentino, Vincent Hilaire, Ambra Molesini, Valeria Seidita
2014 ch.
Handbook on Agent-Oriented Design Processes
Massimo Cossentino, Ambra Molesini, Vincent Hilaire, Valeria Seidita
2014 ch.
Handbook on Agent-Oriented Design Processes
Massimo Cossentino, Vincent Hilaire, Nicolas Gaud, Stéphane Galland, Abderrafiaa Koukam
2014 ch.
Handbook on Agent-Oriented Design Processes
Massimo Cossentino, Vincent Hilaire, Ambra Molesini, Valeria Seidita
2014 ch.
Handbook on Agent-Oriented Design Processes
Massimo Cossentino, Vincent Hilaire, Valeria Seidita
2013 conf
MATES
Gillian Basso, Vincent Hilaire, Fabrice Lauri, Damien Paire, Arnaud Gaillard
2013 J jnl
Expert Syst. Appl.
Vincent Hilaire, Massimo Cossentino, Franck Gechter, Sebastian Rodriguez, Abderrafiaa Koukam
2013 conf
IISA
Amine Ahmed Benyahia, Amir Hajjam, Vincent Hilaire, Mohamed Hajjam, Emmanuel Andres
2013 conf
UIC/ATC
Jiawei Zhu, Fabrice Lauri, Abderrafiaa Koukam, Vincent Hilaire, Marcelo Godoy Simões
2013 conf
ICIMTH
Amine Ahmed Benyahia, Amir Hajjam, Emmanuel Andres, Mohamed Hajjam, Vincent Hilaire
2013 conf
ECML/PKDD (3)
Fabrice Lauri, Nicolas Gaud, Stéphane Galland, Vincent Hilaire
2013 J jnl
Telecommun. Syst.
Ye Yao, Wandong Cai, Vincent Hilaire, Abder Koukam, Chonggang Wang
2012 conf
NDT (2)
Inaya Lahoud, Davy Monticolo, Vincent Hilaire, Samuel Gomes
2012 conf
AOSE
Patrizia Ribino, Carmelo Lodato, Salvatore Lopes, Valeria Seidita, Vincent Hilaire, Massimo Cossentino
2012 conf
KES-AMSTA
Belhassen Mazigh, Ahmed Hammed, Vincent Hilaire
2012 B conf
ICTAI
Amine Ahmed Benyahia, Amir Hajjam, Vincent Hilaire, Mohamed Hajjam
2011 Misc conf
PAAMS
Belhassen Mazigh, Vincent Hilaire, Abderrafiaa Koukam
2011 ch.
Self-organising Software
Sebastian Rodriguez, Vincent Hilaire, Nicolas Gaud, Stéphane Galland, Abderrafiaa Koukam
2011 ch.
Self-organising Software
Vincent Hilaire, Abderrafiaa Koukam, Sebastian Rodriguez
2011 conf
DICTAP (2)
Yishuai Lin, Vincent Hilaire, Nicolas Gaud, Abderrafiaa Koukam
2011 conf
SIMPDA
Yishuai Lin, Vincent Hilaire, Nicolas Gaud, Abderrafiaa Koukam
2010 conf
MALLOW
Massimo Cossentino, Stéphane Galland, Nicolas Gaud, Vincent Hilaire, Abderrafiaa Koukam
2010 J jnl
Auton. Agents Multi Agent Syst.
Massimo Cossentino, Nicolas Gaud, Vincent Hilaire, Stéphane Galland, Abderrafiaa Koukam
2010 Misc conf
SAC
Vincent Hilaire, Nicolas Gaud, Stéphane Galland, Abderrafiaa Koukam
2010 J jnl
Int. J. Agent Oriented Softw. Eng.
Massimo Cossentino, Stéphane Galland, Nicolas Gaud, Vincent Hilaire, Abderrafiaa Koukam
2010 conf
ICEIS (1)
Davy Monticolo, Samuel Gomes, Vincent Hilaire, Abder Koukam
2010 J jnl
Eng. Appl. Artif. Intell.
Vincent Hilaire, Fabrice Lauri, Pablo Gruer, Abderrafiaa Koukam, Sebastian Rodriguez
2010 J jnl
ERCIM News
Massimo Cossentino, Vincent Hilaire, Abder Koukam
2010 J jnl
Int. J. Softw. Eng. Knowl. Eng.
Valeria Seidita, Massimo Cossentino, Vincent Hilaire, Nicolas Gaud, Stéphane Galland, Abder Koukam, Salvatore Gaglio
2009 conf
SITIS
Achraf Ben Miled, Davy Monticolo, Vincent Hilaire, Abder Koukam
2009 C conf
INDIN
Maurizio Cirrincione, Massimo Cossentino, Salvatore Gaglio, Vincent Hilaire, Abderrafiaa Koukam, Marcello Pucci, Luca Sabatucci, Gianpaolo Vitale
2009 conf
JFSMA
Davy Monticolo, Vincent Hilaire, Abderrafiaa Koukam, Samuel Gomes
2009 J jnl
Comput. Informatics
Jaroslaw Kozlak, Jean-Charles Créput, Vincent Hilaire, Abder Koukam
2008 conf
IIH-MSP
Ye Yao, Vincent Hilaire, Abder Koukam, Wandong Cai
2008 conf
AOSE
Massimo Cossentino, Salvatore Gaglio, Stéphane Galland, Nicolas Gaud, Vincent Hilaire, Abderrafiaa Koukam, Valeria Seidita
2008 conf
ICYCS
Ye Yao, Vincent Hilaire, Abder Koukam, Wandong Cai
2008 J jnl
Integr. Comput. Aided Eng.
Davy Monticolo, Vincent Hilaire, Samuel Gomes, Abder Koukam
2008 conf
ProMAS
Nicolas Gaud, Stéphane Galland, Vincent Hilaire, Abderrafiaa Koukam
2008 J jnl
ACM Trans. Auton. Adapt. Syst.
Vincent Hilaire, Abder Koukam, Sebastian Rodriguez
2008 book
Vincent Hilaire
2008 J jnl
Int. J. Agent Oriented Softw. Eng.
Vincent Hilaire, Pablo Gruer, Abderrafiaa Koukam, Olivier Simonin
2008 J jnl
Simul. Model. Pract. Theory
Nicolas Gaud, Stéphane Galland, Franck Gechter, Vincent Hilaire, Abderrafiaa Koukam
2008 conf
SASO Workshops
Massimo Cossentino, Stéphane Galland, Nicolas Gaud, Vincent Hilaire, Abderrafiaa Koukam
2008 conf
IIH-MSP
Ye Yao, Wandong Cai, Vincent Hilaire, Abder Koukam
2008 conf
SITIS
Achraf Ben Miled, Vincent Hilaire, Davy Monticolo, Abderrafiaa Koukam
2007 J jnl
Int. J. Cooperative Inf. Syst.
Sebastian Rodriguez, Vincent Hilaire, Pablo Gruer, Abder Koukam
2007 conf
HoloMAS
Massimo Cossentino, Nicolas Gaud, Stéphane Galland, Vincent Hilaire, Abder Koukam
2007 conf
ICDIM
Davy Monticolo, Vincent Hilaire, Abder Koukam, Samuel Gomes
2007 J jnl
Int. J. Softw. Eng. Knowl. Eng.
Vincent Hilaire, Pablo Gruer, Abder Koukam, Olivier Simonin
2007 J jnl
Simul. Model. Pract. Theory
Sebastian Rodriguez, Vincent Hilaire, Abderrafiaa Koukam
2006 C conf
MABS
Sebastian Rodriguez, Vincent Hilaire, Abder Koukam
2006 conf
ESOA
Sebastian Rodriguez, Nicolas Gaud, Vincent Hilaire, Stéphane Galland, Abderrafiaa Koukam
2006 conf
CE
Davy Monticolo, Vincent Hilaire, Abder Koukam, Sébastian Meunier
2006 J jnl
Informatica (Slovenia)
Carole Bernon, Vincent Chevrier, Vincent Hilaire, Paul Marrow
2006 C conf
EUMAS
Sebastian Rodriguez, Nicolas Gaud, Vincent Hilaire, Abder Koukam
2006 J jnl
Fundam. Informaticae
Jaroslaw Kozlak, Jean-Charles Créput, Vincent Hilaire, Abder Koukam
2005 Misc conf
International Conference on Computational Science (3)
Sebastian Rodriguez, Vincent Hilaire, Abder Koukam
2005 conf
E4MAS
Sebastian Rodriguez, Vincent Hilaire, Abder Koukam
2004 conf
AOSE
Vincent Hilaire, Olivier Simonin, Abder Koukam, Jacques Ferber
2004 J jnl
J. Syst. Softw.
Pablo Gruer, Vincent Hilaire, Abder Koukam, P. Rovarini
2004 Misc conf
International Conference on Computational Science
Jaroslaw Kozlak, Jean-Charles Créput, Vincent Hilaire, Abder Koukam
2002 conf
Agent Technologies, Infrastructures, Tools, and Applications for E-Services
Vincent Hilaire, Abder Koukam, Pablo Gruer
2002 J jnl
Expert Syst. Appl.
Pablo Gruer, Vincent Hilaire, Abder Koukam, Krzysztof Cetnarowicz
2001 C conf
SEKE
Pablo Gruer, Vincent Hilaire, Abder Koukam, Krzysztof Cetnarowicz
2001 conf
CEEMAS
Krzysztof Cetnarowicz, Pablo Gruer, Vincent Hilaire, Abder Koukam
2001 B conf
SMC
Pablo Gruer, Vincent Hilaire, A. Koukarn
2000 conf
ESAW
Vincent Hilaire, Abder Koukam, Pablo Gruer, Jean-Pierre Müller
2000 conf
ICMAS
Pablo Gruer, Vincent Hilaire, Abder Koukam
2000 B conf
FASE
Pablo Gruer, Vincent Hilaire, Abder Koukam
2000 conf
JFIADSMA
Vincent Hilaire, Abder Koukam, Pablo Gruer, Jean-Pierre Müller
1999 conf
ICEIS
Vincent Hilaire, Thomas Lissajoux, Abder Koukam
1998 conf
IATA
Thomas Lissajoux, Vincent Hilaire, Abder Koukam, Alexandre Caminada
redb/extractors/elf_extractors/elf_notes.py
← Index redb/extractors/elf_extractors/elf_notes.py python
import inspect
import binascii
from datetime import datetime, timezone
from typing import Any, List, Dict

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFNote


class ELFNotesExtractor(ELFExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            elf,
        )
        self.elf_notes = []
        self.elastic_index = self.index_prefix + "-elf_notes"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_note_type_string(self, note_type: int, note_name: str) -> str:
        """Convert note type number to human-readable string."""

        # GNU-specific note types
        if note_name == "GNU":
            gnu_types = {
                1: "NT_GNU_ABI_TAG",
                2: "NT_GNU_HWCAP",
                3: "NT_GNU_BUILD_ID",
                4: "NT_GNU_GOLD_VERSION",
                5: "NT_GNU_PROPERTY_TYPE_0"
            }
            return gnu_types.get(note_type, f"NT_GNU_UNKNOWN_{note_type}")

        # Generic note types
        generic_types = {
            1: "NT_PRSTATUS",
            2: "NT_FPREGSET",
            3: "NT_PRPSINFO",
            4: "NT_TASKSTRUCT",
            5: "NT_AUXV",
            6: "NT_PSTATUS",
            7: "NT_FPREGS",
            8: "NT_PSINFO",
            9: "NT_PRCRED",
            10: "NT_UTSNAME",
            11: "NT_LWPSTATUS",
            12: "NT_LWPSINFO",
            13: "NT_PRFPXREG"
        }

        return generic_types.get(note_type, f"NT_UNKNOWN_{note_type}")

    def _format_note_description(self, note_desc, note_type: int, note_name: str) -> str:
        """Format note description based on type for human readability."""
        try:
            if not note_desc:
                return ""

            # Handle build ID specifically (common case)
            if note_name == "GNU" and note_type == 3:  # NT_GNU_BUILD_ID
                if isinstance(note_desc, bytes):
                    return binascii.hexlify(note_desc).decode('ascii')
                return str(note_desc)

            # Handle ABI tag
            if note_name == "GNU" and note_type == 1:  # NT_GNU_ABI_TAG
                if isinstance(note_desc, bytes) and len(note_desc) >= 16:
                    # ABI tag contains OS, major, minor, subminor
                    import struct
                    try:
                        os_val, major, minor, subminor = struct.unpack('<IIII', note_desc[:16])
                        os_names = {0: "Linux", 1: "GNU", 2: "Solaris", 3: "FreeBSD"}
                        os_name = os_names.get(os_val, f"OS_{os_val}")
                        return f"{os_name} {major}.{minor}.{subminor}"
                    except:
                        pass

            # For binary data, convert to hex
            if isinstance(note_desc, bytes):
                # Limit size for very large descriptions
                if len(note_desc) > 256:
                    return binascii.hexlify(note_desc[:256]).decode('ascii') + "..."
                return binascii.hexlify(note_desc).decode('ascii')

            # For string data
            if isinstance(note_desc, str):
                return note_desc

            # Fallback
            return str(note_desc)

        except Exception as e:
            self.log.error(f"Error formatting note description: {e}")
            return str(note_desc) if note_desc else ""

    def _extract_note_data(self, note, section_name: str) -> ELFNote:
        """Extract data from a single note entry."""
        try:
            # Get note properties
            note_name = note.get('n_name', '').rstrip('\x00') if note.get('n_name') else ""
            note_type_raw = note.get('n_type', 0)
            note_desc_raw = note.get('n_desc', b'')

            # Handle note_type - pyelftools may return string or int
            if isinstance(note_type_raw, str):
                # pyelftools returned the type as a string like 'NT_GNU_BUILD_ID'
                note_type_str = note_type_raw
                # Map known string types to integers
                note_type_map = {
                    'NT_GNU_ABI_TAG': 1,
                    'NT_GNU_HWCAP': 2,
                    'NT_GNU_BUILD_ID': 3,
                    'NT_GNU_GOLD_VERSION': 4,
                    'NT_GNU_PROPERTY_TYPE_0': 5,
                    'NT_PRSTATUS': 1,
                    'NT_FPREGSET': 2,
                    'NT_PRPSINFO': 3,
                    'NT_TASKSTRUCT': 4,
                    'NT_AUXV': 5,
                    'NT_PSTATUS': 6,
                    'NT_FPREGS': 7,
                    'NT_PSINFO': 8,
                    'NT_PRCRED': 9,
                    'NT_UTSNAME': 10,
                    'NT_LWPSTATUS': 11,
                    'NT_LWPSINFO': 12,
                    'NT_PRFPXREG': 13,
                }
                note_type = note_type_map.get(note_type_raw, 0)
            else:
                note_type = note_type_raw
                # Get human-readable type string
                note_type_str = self._get_note_type_string(note_type, note_name)

            # Format description
            note_desc = self._format_note_description(note_desc_raw, note_type, note_name)

            return ELFNote(
                note_name=note_name,
                note_type=note_type,
                note_type_str=note_type_str,
                note_desc=note_desc,
                note_section=section_name
            )

        except Exception as e:
            self.log.error(f"Error extracting note data: {e}")
            return None

    def _extract_notes_from_sections(self, elf) -> List[Dict]:
        """Extract notes from note sections."""
        notes = []

        try:
            # Look for note sections
            for section in elf.iter_sections():
                if (section.name and
                    section.name.startswith('.note') and
                    hasattr(section, 'iter_notes')):

                    section_name = section.name
                    try:
                        for note in section.iter_notes():
                            note_data = self._extract_note_data(note, section_name)
                            if note_data:
                                notes.append(note_data)
                    except Exception as e:
                        self.log.debug(f"Could not process notes in section {section_name}: {e}")

        except Exception as e:
            self.log.error(f"Error extracting notes from sections: {e}")

        return notes

    def _extract_notes_from_segments(self, elf) -> List[Dict]:
        """Extract notes from PT_NOTE segments."""
        notes = []

        try:
            # Look for PT_NOTE segments
            for segment in elf.iter_segments():
                if segment.header.get('p_type') == 'PT_NOTE':
                    segment_name = f"PT_NOTE_segment_{segment.header.get('p_offset', 0)}"

                    try:
                        if hasattr(segment, 'iter_notes'):
                            for note in segment.iter_notes():
                                note_data = self._extract_note_data(note, segment_name)
                                if note_data:
                                    notes.append(note_data)
                    except Exception as e:
                        self.log.debug(f"Could not process notes in segment: {e}")

        except Exception as e:
            self.log.error(f"Error extracting notes from segments: {e}")

        return notes

    def tag(self):
        return Tag.ELF_NOTES.value if hasattr(Tag, 'ELF_NOTES') else "elf_notes"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                all_notes = []

                # Extract notes from note sections
                section_notes = self._extract_notes_from_sections(elf)
                all_notes.extend(section_notes)

                # Extract notes from PT_NOTE segments
                segment_notes = self._extract_notes_from_segments(elf)
                all_notes.extend(segment_notes)

                # Remove duplicates (same note might appear in section and segment)
                unique_notes = []
                seen_notes = set()
                for note in all_notes:
                    note_key = (note.note_name, note.note_type, note.note_desc)
                    if note_key not in seen_notes:
                        seen_notes.add(note_key)
                        unique_notes.append(note)

                return unique_notes

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_notes = result
            return self.elf_notes

        except Exception as e:
            self.log.error(f"Error extracting ELF notes {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_notes
        elif exporter_type == "ClickHouseExporter":
            try:
                # Return valid empty structure if no notes found
                # None is reserved for actual errors

                # Prepare data arrays for all notes
                data = []
                current_time = datetime.now(timezone.utc)
                for note in self.elf_notes:
                    row = [
                        self.sha256,
                        self.md5,
                        self.sha1,
                        note.note_name,
                        note.note_type,
                        note.note_type_str,
                        note.note_desc,
                        note.note_section,
                        current_time
                    ]
                    data.append(row)

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'note_name', 'note_type', 'note_type_str',
                    'note_desc', 'note_section',
                    'analysis_date'
                ]

                if not data:
                    return None

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'LowCardinality(String)', 'UInt32', 'LowCardinality(String)',
                    'String CODEC(ZSTD(3))', 'LowCardinality(String)',
                    'DateTime64(3, \'UTC\')'
                ]

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

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