Nazha Selmaoui-Folcher

52 papers A* 1A 1B 2C 3Misc 1Journal 16Unranked 27
YearRankTypeTitle / Venue / Authors
2025 conf
EGC
Rodrigue Govan, Romane Scherrer, Cyrille Goarant, Arnaud Cannet, Philippe Fournier-Viger, Nazha Selmaoui-Folcher
2025 conf
EGC
Romane Scherrer, Thomas Quiniou, Nazha Selmaoui-Folcher
2025 J jnl
Expert Syst. J. Knowl. Eng.
Muhammad Zohaib Nawaz, M. Saqib Nawaz, Philippe Fournier-Viger, Nazha Selmaoui-Folcher
2025 B conf
DaWaK
Rodrigue Govan, Romane Scherrer, Philippe Fournier-Viger, Nazha Selmaoui-Folcher
2025 J jnl
CoRR
Rodrigue Govan, Romane Scherrer, Philippe Fournier-Viger, Nazha Selmaoui-Folcher
2023 conf
DEXA (1)
Rodrigue Govan, Nazha Selmaoui-Folcher, Aristotelis Giannakos, Philippe Fournier-Viger
2023 conf
CNIA
Rodrigue Govan, Nazha Selmaoui-Folcher, Aristotelis Giannakos, Philippe Fournier-Viger
2023 conf
PAKDD (2)
Zhi Cheng, Landy Andriamampianina, Franck Ravat, Jiefu Song, Nathalie Vallès-Parlangeau, Philippe Fournier-Viger, Nazha Selmaoui-Folcher
2022 J jnl
Int. J. Data Warehous. Min.
Romane Scherrer, Erwan Aulnette, Thomas Quiniou, Joël Kasarhérou, Pierre Kolb, Nazha Selmaoui-Folcher
2022 J jnl
Int. J. Data Warehous. Min.
Nazha Selmaoui-Folcher, Jannaï Tokotoko, Samuel Gorohouna, Laisa Roi, Claire Leschi, Catherine Ris
2022 C conf
ISMIS
Jannaï Tokotoko, Rodrigue Govan, Hugues Lemonnier, Nazha Selmaoui-Folcher
2021 conf
EGC
Nazha Selmaoui-Folcher, Jannaï Tokotoko, Samuel Gorohouna, Laisa Roi
2021 conf
EGC
Romane Scherrer, Erwan Aulnette, Thomas Quiniou, Joël Kasarhérou, Pierre Kolb, Nazha Selmaoui-Folcher
2021 conf
CIBB
Romane Scherrer, Rodrigue Govan, Thomas Quiniou, Thierry Jauffrais, Hugues Lemonnier, Sophie Bonnet, Nazha Selmaoui-Folcher
2021 conf
DEXA (2)
Jannaï Tokotoko, Nazha Selmaoui-Folcher, Rodrigue Govan, Hugues Lemonnier
2020 J jnl
Knowl. Inf. Syst.
Frédéric Flouvat, Nazha Selmaoui-Folcher, Jérémy Sanhes, Chengcheng Mu, Claude Pasquier, Jean-François Boulicaut
2019 B conf
DaWaK
Philippe Fournier-Viger, Chao Cheng, Zhi Cheng, Jerry Chun-Wei Lin, Nazha Selmaoui-Folcher
2019 J jnl
Knowl. Based Syst.
Philippe Fournier-Viger, Chao Cheng, Zhi Cheng, Jerry Chun-Wei Lin, Nazha Selmaoui-Folcher
2018 conf
EGC
Jannaï Tokotoko, Frédéric Flouvat, Claire Goiran, Laetitia Hédouin, Antoine Collin, Nazha Selmaoui-Folcher
2018 conf
ICDM Workshops
Jannaï Tokotoko, Frédéric Flouvat, Claire Goiran, Laetitia Hédouin, Antoine Collin, Nazha Selmaoui-Folcher
2017 J jnl
Knowl. Inf. Syst.
Claude Pasquier, Frédéric Flouvat, Jérémy Sanhes, Nazha Selmaoui-Folcher
2017 conf
EGC
Zhi Cheng, Frédéric Flouvat, Nazha Selmaoui-Folcher
2017 conf
PAKDD (2)
Zhi Cheng, Frédéric Flouvat, Nazha Selmaoui-Folcher
2016 J jnl
Knowl. Inf. Syst.
Claude Pasquier, Jérémy Sanhes, Frédéric Flouvat, Nazha Selmaoui-Folcher
2016 conf
ICDM Workshops
Maxime Collin, Frédéric Flouvat, Nazha Selmaoui-Folcher
2016 J jnl
Intell. Data Anal.
Hugo Alatrista-Salas, Sandra Bringay, Frédéric Flouvat, Nazha Selmaoui-Folcher, Maguelonne Teisseire
2015 J jnl
Ecol. Informatics
Hugo Alatrista-Salas, Jérôme Azé, Sandra Bringay, Flavie Cernesson, Nazha Selmaoui-Folcher, Maguelonne Teisseire
2015 J jnl
GeoInformatica
Frédéric Flouvat, Jean-François N'guyen Van Soc, Elise Desmier, Nazha Selmaoui-Folcher
2015 conf
EGC
Nazha Selmaoui-Folcher, Frédéric Flouvat, Chengcheng Mu, Jérémy Sanhes, Jean-François Boulicaut
2014 conf
EGC
Pierre-Nicolas Mougel, Frédéric Flouvat, Nazha Selmaoui-Folcher
2014 conf
EGC
Claude Pasquier, Frédéric Flouvat, Jérémy Sanhes, Nazha Selmaoui-Folcher
2014 A conf
ECAI
Frédéric Flouvat, Jérémy Sanhes, Claude Pasquier, Nazha Selmaoui-Folcher, Jean-François Boulicaut
2013 C conf
IGARSS
Pierre-Nicolas Mougel, Nazha Selmaoui-Folcher
2013 J jnl
Rev. Int. Géomatique
Hugo Alatrista Salas, Frédéric Flouvat, Sandra Bringay, Nazha Selmaoui-Folcher, Maguelonne Teisseire
2013 conf
EGC
Jérémy Sanhes, Frédéric Flouvat, Claude Pasquier, Nazha Selmaoui-Folcher, Jean-François Boulicaut
2013 conf
EGC
Claude Pasquier, Jérémy Sanhes, Frédéric Flouvat, Nazha Selmaoui-Folcher
2013 conf
PAKDD (1)
Claude Pasquier, Jérémy Sanhes, Frédéric Flouvat, Nazha Selmaoui-Folcher
2013 J jnl
Rev. d'Intelligence Artif.
Nazha Selmaoui-Folcher, Frédéric Flouvat, Hugo Alatrista Salas, Sandra Bringay
2013 J jnl
Data Knowl. Eng.
Loïc Cerf, Dominique Gay, Nazha Selmaoui-Folcher, Bruno Crémilleux, Jean-François Boulicaut
2013 A* conf
IJCAI
Jérémy Sanhes, Frédéric Flouvat, Claude Pasquier, Nazha Selmaoui-Folcher, Jean-François Boulicaut
2012 J jnl
Knowl. Inf. Syst.
Dominique Gay, Nazha Selmaoui-Folcher, Jean-François Boulicaut
2012 conf
EGC
Jérémy Sanhes, Frédéric Flouvat, Nazha Selmaoui-Folcher, Jean-François Boulicaut
2012 ch.
Mesurer et évaluer la Qualité des Données et des Connaissances
Hugo Alatrista Salas, Jérôme Azé, Sandra Bringay, Flavie Cernesson, Frédéric Flouvat, Nazha Selmaoui-Folcher, Maguelonne Teisseire
2012 conf
PAKDD (2)
Hugo Alatrista Salas, Sandra Bringay, Frédéric Flouvat, Nazha Selmaoui-Folcher, Maguelonne Teisseire
2012 conf
EGC
Hugo Alatrista Salas, Sandra Bringay, Frédéric Flouvat, Nazha Selmaoui-Folcher, Maguelonne Teisseire
2011 C conf
IDEAS
Elise Desmier, Frédéric Flouvat, Dominique Gay, Nazha Selmaoui-Folcher
2011 conf
ICDIM
Elise Desmier, Frédéric Flouvat, Benoît Stoll, Nazha Selmaoui-Folcher
2011 conf
DEXA (2)
Nazha Selmaoui-Folcher, Frédéric Flouvat
2011 conf
EGC
Loïc Mabit, Nazha Selmaoui-Folcher, Frédéric Flouvat
2011 J jnl
Int. J. Agric. Environ. Inf. Syst.
Nazha Selmaoui-Folcher, Frédéric Flouvat, Dominique Gay, Isabelle Rouet
2010 Misc conf
SAC
Frédéric Flouvat, Nazha Selmaoui-Folcher, Dominique Gay, Isabelle Rouet, Chloé Grison
2010 conf
EGC
Frédéric Flouvat, Nazha Selmaoui-Folcher, Dominique Gay
redb/extractors/decompiler/bninja/analysis/medium_level.py
← Index redb/extractors/decompiler/bninja/analysis/medium_level.py python
import time

from binaryninja import (
    MediumLevelILOperation as MLIL_OP,
)

try:
    from ..function_type import FunctionTypeAnalysis
    from ..similarity.minhasher import MinHasher, TokenKind
    from ..utils.hashes import calculate_sha256, calculate_tlsh
    from .medium_level_normalization import MediumLevelNormalization
except ImportError:
    from redb.extractors.decompiler.bninja.analysis.medium_level_normalization import MediumLevelNormalization
    from redb.extractors.decompiler.bninja.similarity.minhasher import MinHasher
    from redb.extractors.decompiler.bninja.function_type import FunctionTypeAnalysis
    from redb.extractors.decompiler.bninja.utils.hashes import calculate_sha256, calculate_tlsh


_MLIL_CALL_OPS = (
    MLIL_OP.MLIL_CALL,
    MLIL_OP.MLIL_CALL_SSA,
    MLIL_OP.MLIL_CALL_UNTYPED,
    MLIL_OP.MLIL_CALL_UNTYPED_SSA,
    MLIL_OP.MLIL_TAILCALL,
    MLIL_OP.MLIL_TAILCALL_SSA,
    MLIL_OP.MLIL_TAILCALL_UNTYPED,
    MLIL_OP.MLIL_TAILCALL_UNTYPED_SSA,
)

_MLIL_CONTROL_FLOW_OPS = (
    MLIL_OP.MLIL_IF,
    MLIL_OP.MLIL_GOTO,
    MLIL_OP.MLIL_JUMP,
    MLIL_OP.MLIL_JUMP_TO,
    MLIL_OP.MLIL_RET,
    MLIL_OP.MLIL_RET_HINT,
    MLIL_OP.MLIL_NORET,
) + _MLIL_CALL_OPS


class MediumLevelAnalysis:
    def __init__(self, function, bv, logger):
        self.function = function
        self.name = function.name
        self.start = function.start
        self.mlil_func = function.mlil
        self.bv = bv
        self.logger = logger
        self.errors = []

    def log_error(self, message, function_name, address, exception=None, error_location="unknown"):
        error_msg = f"Error in function {function_name} at {address}: {message}"
        if exception:
            error_msg += f" - {str(exception)}"
        self.logger.error(error_msg)

        error = {
            "function_name": function_name,
            "function_address": str(address),
            "error_location": error_location,
            "error_message": message,
            "error_details": str(exception) if exception else "",
            "error_type": type(exception).__name__ if exception else "Unknown",
            "timestamp": int(time.time() * 1000),
        }
        self.errors.append(error)

    def _collect_mlil_skeleton_and_typed(self):
        mlil = self.mlil_func
        if not mlil:
            return [], [], [], []

        start = self.start
        norm = MediumLevelNormalization()

        skeleton = []
        skeleton_with_addr = []
        typed = []
        typed_with_addr = []

        for il in mlil.instructions:
            skel_norm = norm.normalize_instruction_all_levels(il)
            typed_norm = norm.normalize_instr_with_operands(il)

            skeleton.append(skel_norm)
            typed.append(typed_norm)

            offset = il.address - start
            if offset < 0:
                offset = 0

            skeleton_with_addr.append((offset, skel_norm))
            typed_with_addr.append((offset, typed_norm))

        return skeleton, skeleton_with_addr, typed, typed_with_addr

    def analyze(self):
        (
            instr_skeleton,
            body_mlil_skeleton_vector,
            instr_typed,
            body_mlil_typed_vector,
        ) = self._collect_mlil_skeleton_and_typed()

        instr_skeleton_str = str(instr_skeleton)
        sha256_skeleton = calculate_sha256(instr_skeleton_str)
        tlsh_skeleton = calculate_tlsh(instr_skeleton_str)

        instr_typed_str = str(instr_typed)
        sha256_typed = calculate_sha256(instr_typed_str)
        tlsh_typed = calculate_tlsh(instr_typed_str)

        seed = 0xdeadbeef
        minhash_mlil_skeleton = MinHasher(seed, self.mlil_func, TokenKind.MLIL).calculateMinHash()
        minhash_mlil_typed = MinHasher(seed, self.mlil_func, TokenKind.TYPED_MLIL).calculateMinHash()

        medium_level_json = {
            "function_address": self.start,
            "body_mlil_skeleton_vector": body_mlil_skeleton_vector,
            "sha256_mlil_skeleton": sha256_skeleton,
            "tlsh_mlil_skeleton": tlsh_skeleton,
            "minhash_mlil_skeleton": minhash_mlil_skeleton,
            "body_mlil_typed_vector": body_mlil_typed_vector,
            "sha256_mlil_typed": sha256_typed,
            "tlsh_mlil_typed": tlsh_typed,
            "minhash_mlil_typed": minhash_mlil_typed,
        }

        return medium_level_json, self.errors