Karim Tabia

100 papers A* 6A 8B 13C 10Misc 7Journal 16Unranked 35
YearRankTypeTitle / Venue / Authors
2025 A conf
ECAI
Karim Tabia
2024 J jnl
Data Knowl. Eng.
Thibault Falque, Bertrand Mazure, Karim Tabia
2024 conf
ICAART (2)
Sara Kebir, Karim Tabia
2023 C conf
BIBE
Sara Kebir, Karim Tabia
2023 conf
EGC
Sara Kebir, Karim Tabia
2023 conf
ICAART (2)
Thibault Falque, Bertrand Mazure, Karim Tabia
2023 conf
EGC
Thibault Falque, Bertrand Mazure, Karim Tabia
2023 J jnl
Int. J. Approx. Reason.
Salem Benferhat, Karim Tabia
2023 conf
ICAART (3)
Ryma Boumazouza, Fahima Cheikh Alili, Bertrand Mazure, Karim Tabia
2022 J jnl
CoRR
Ryma Boumazouza, Fahima Cheikh Alili, Bertrand Mazure, Karim Tabia
2022 J jnl
CoRR
Ryma Boumazouza, Fahima Cheikh Alili, Bertrand Mazure, Karim Tabia
2022 J jnl
CoRR
Ryma Boumazouza, Fahima Cheikh Alili, Bertrand Mazure, Karim Tabia
2022 conf
IPMU (2)
Sara Kebir, Karim Tabia
2022 conf
IPMU (2)
Salem Benferhat, Zied Bouraoui, Truong-Thanh Ma, Karim Tabia
2022 conf
IPMU (2)
Hakim Radja, Yassine Djouadi, Karim Tabia
2022 A* conf
IJCAI
Karim Tabia
2021 A conf
CIKM
Ryma Boumazouza, Fahima Cheikh Alili, Bertrand Mazure, Karim Tabia
2020 conf
SUM
Ryma Boumazouza, Fahima Cheikh Alili, Bertrand Mazure, Karim Tabia
2020 conf
ICAART (1)
Sihem Belabbes, Yacine Izza, Nizar Mhadhbi, Tri-Thuc Vo, Karim Tabia, Salem Benferhat
2020 ch.
A Guided Tour of Artificial Intelligence Research (2) (II)
Salem Benferhat, Philippe Leray, Karim Tabia
2020 J jnl
Int. J. Artif. Intell. Tools
Amélie Levray, Salem Benferhat, Karim Tabia
2020 ed.
SUM
Jesse Davis, Karim Tabia
2020 conf
ICAART (2)
Cécile Carra, Karim Tabia
2019 B conf
FUZZ-IEEE
Salem Benferhat, Karim Tabia, Amélie Levray
2019 C conf
ICMLA
Truong-Thanh Ma, Salem Benferhat, Zied Bouraoui, Karim Tabia, Thanh-Nghi Do, Nguyen-Khang Pham
2019 conf
SUMAC @ ACM Multimedia
Sylvain Lagrue, Nathalie Chetcuti-Sperandio, Fabien Delorme, Ma Thi Chau, Duyen Ngo Thi, Karim Tabia, Salem Benferhat
2019 book
Karim Tabia
2019 conf
SITIS
Tung Pham Thanh, Salem Benferhat, Ma Thi Chau, Truong-Thanh Ma, Karim Tabia, Le Thanh Ha
2019 B conf
ICTAI
Sihem Belabbes, Chi Wee Tan, Tri-Thuc Vo, Yacine Izza, Karim Tabia, Sylvain Lagrue, Salem Benferhat
2019 conf
ICCSAMA
Thanh-Nghi Do, The-Phi Pham, Nguyen-Khang Pham, Huu-Hoa Nguyen, Karim Tabia, Salem Benferhat
2019 B conf
ICTAI
Karim Tabia
2018 C conf
SEKE
Truong-Thanh Ma, Salem Benferhat, Zied Bouraoui, Karim Tabia, Thanh-Nghi Do, Huu-Hoa Nguyen
2018 Misc conf
FLAIRS
Karim Tabia
2018 C conf
IEA/AIE
Karim Tabia, Hugues Wattez, Nicolas Ydée, Karima Sedki
2018 conf
TrustCom/BigDataSE
Mouslim Tolba, Salem Benferhat, Karim Tabia, Abdelkader Belkhir
2018 B conf
ICTAI
Salem Benferhat, Amélie Levray, Karim Tabia
2018 J jnl
Fuzzy Sets Syst.
Salem Benferhat, Vladik Kreinovich, Amélie Levray, Karim Tabia
2018 Misc conf
FLAIRS
Karim Tabia, Mohand Saïd Allili
2017 ed.
IEA/AIE (1)
Salem Benferhat, Karim Tabia, Moonis Ali
2017 ed.
IEA/AIE (2)
Salem Benferhat, Karim Tabia, Moonis Ali
2017 conf
IEA/AIE (2)
Ma Thi Chai, Karim Tabia, Sylvain Lagrue, Le Thanh Ha, The Duy Bui, Thuy Nguyen-Thanh
2017 B conf
ICTAI
Salem Benferhat, Amélie Levray, Karim Tabia
2017 conf
IEA/AIE (2)
Ob-orm Muangmoon, Pradorn Sureephong, Karim Tabia
2017 J jnl
AI Mag.
Salem Benferhat, Karim Tabia, Moonis Ali
2017 Misc conf
FLAIRS
Maroua Haddad, Philippe Leray, Amélie Levray, Karim Tabia
2017 J jnl
Künstliche Intell.
Abdelmoutia Telli, Salem Benferhat, Mustapha Bourahla, Zied Bouraoui, Karim Tabia
2016 A* conf
KR
Jean-François Baget, Salem Benferhat, Zied Bouraoui, Madalina Croitoru, Marie-Laure Mugnier, Odile Papini, Swan Rocher, Karim Tabia
2016 J jnl
CoRR
Jean-François Baget, Salem Benferhat, Zied Bouraoui, Madalina Croitoru, Marie-Laure Mugnier, Odile Papini, Swan Rocher, Karim Tabia
2016 conf
SITIS
Salem Benferhat, Zied Bouraoui, Huma Chadhry, Mohd Shafry Mohd Rahim, Karim Tabia, Abdelmoutia Telli
2016 B conf
JELIA
Jean-François Baget, Salem Benferhat, Zied Bouraoui, Madalina Croitoru, Marie-Laure Mugnier, Odile Papini, Swan Rocher, Karim Tabia
2016 C conf
SIN
Salem Benferhat, Mouslim Tolba, Karim Tabia, Abdelkader Belkhir
2016 A* conf
IJCAI
Salem Benferhat, Zied Bouraoui, Madalina Croitoru, Odile Papini, Karim Tabia
2016 conf
SUM
Karim Tabia
2016 conf
PrAISe@ECAI
Salem Benferhat, Mouslim Tolba, Karim Tabia, Abdelkader Belkhir
2016 A conf
ECAI
Salem Benferhat, Amélie Levray, Karim Tabia, Vladik Kreinovich
2015 A* conf
IJCAI
Salem Benferhat, Amélie Levray, Karim Tabia, Vladik Kreinovich
2015 A* conf
IJCAI
Salem Benferhat, Zied Bouraoui, Karim Tabia
2015 Misc conf
FLAIRS
Salem Benferhat, Zied Bouraoui, Karim Tabia
2015 C conf
ECSQARU
Salem Benferhat, Amélie Levray, Karim Tabia
2015 Misc conf
FLAIRS
Salem Benferhat, Martine Ceberio, Vladik Kreinovich, Sylvain Lagrue, Karim Tabia
2015 conf
SUM
Salem Benferhat, Amélie Levray, Karim Tabia
2014 A conf
ECAI
Salem Benferhat, Sylvain Lagrue, Karim Tabia
2014 conf
SUM
Salem Benferhat, Sylvain Lagrue, Karim Tabia
2014 conf
SUM
Salem Benferhat, Zied Bouraoui, Karim Tabia
2014 A conf
ECAI
Salem Benferhat, Karim Tabia, Mouaad Kezih, Mahmoud Taibi
2014 A* conf
KR
Salem Benferhat, Karim Tabia
2014 conf
EGC
Saïd Jabbour, Mehdi Khiari, Lakhdar Sais, Yakoub Salhi, Karim Tabia
2013 J jnl
Appl. Intell.
Salem Benferhat, Abdelhamid Boudjelida, Karim Tabia, Habiba Drias
2013 conf
ICITST
Daniel Caragata, Karim Tabia, Mauricio Luduena
2013 B conf
ICTAI
Saïd Jabbour, Mehdi Khiari, Lakhdar Sais, Yakoub Salhi, Karim Tabia
2013 B conf
ICTAI
Salem Benferhat, Jérôme Delobelle, Karim Tabia
2012 J jnl
Ann. Math. Artif. Intell.
Salem Benferhat, Karim Tabia
2012 B conf
ICTAI
Salem Benferhat, Abdelhamid Boudjelida, Karim Tabia
2012 A conf
ECAI
Saïd Jabbour, Lakhdar Sais, Yakoub Salhi, Karim Tabia
2012 A conf
ECAI
Salem Benferhat, Karim Tabia
2011 J jnl
Intell. Data Anal.
Karim Tabia, Philippe Leray
2011 J jnl
Ann. Math. Artif. Intell.
Salem Benferhat, Karim Tabia, Karima Sedki
2011 conf
SUM
Karim Tabia
2010 conf
IPMU (2)
Karim Tabia, Philippe Leray
2010 B conf
PRICAI
Salem Benferhat, Karim Tabia
2010 conf
Canadian AI
Salem Benferhat, Karim Tabia
2010 C conf
SECRYPT
Karim Tabia, Philippe Leray
2010 A conf
ECAI
Salem Benferhat, Karim Tabia
2010 Misc conf
ISAIM
Salem Benferhat, Karim Tabia, Karima Sedki
2010 J jnl
Fundam. Informaticae
Tayeb Kenaza, Karim Tabia, Salem Benferhat
2009 J jnl
Int. J. Intell. Syst.
Salem Benferhat, Karim Tabia
2009 B conf
ICTAI
Salem Benferhat, Karim Tabia
2009 conf
IFSA/EUSFLAT Conf.
Salem Benferhat, Karim Tabia
2008 B conf
LCN
Karim Tabia, Salem Benferhat, Yassine Djouadi
2008 conf
ICETE (Selected Papers)
Salem Benferhat, Karim Tabia
2008 conf
SUM
Salem Benferhat, Karim Tabia
2008 conf
ICSOFT (Selected Papers)
Salem Benferhat, Karim Tabia
2008 Misc conf
SEC
Salem Benferhat, Karim Tabia
2008 B conf
ARES
Salem Benferhat, Karim Tabia
2008 conf
ICETE (Selected Papers)
Salem Benferhat, Karim Tabia
2008 C conf
SECRYPT
Salem Benferhat, Karim Tabia
2008 C conf
SECRYPT
Salem Benferhat, Karim Tabia
2008 conf
ICSOFT (PL/DPS/KE)
Salem Benferhat, Karim Tabia
2008 C conf
ICMLA
Karim Tabia, Salem Benferhat
2005 conf
CIMCA/IAWTIC
Salem Benferhat, Karim Tabia
tests/unit/conftest.py
← Index tests/unit/conftest.py python
"""
Unit test configuration.

Replaces the redb.extractors package with a minimal stub so that
``from redb.extractors.database_exporters import ...`` works without
pulling in the heavy __init__.py import chain (pefile, elftools,
signify, magic, etc.).

Also stubs out redb.settings so that Elasticsearch / ClickHouse
clients are never actually created during unit tests.

Additionally installs binaryninja stubs for decompiler unit tests.

Stubs heavy third-party packages (pefile, magic, psutil, etc.) so that
redb.workers, redb.queries, redb.ingestor, and redb.s3_utils can all
be imported and patched in unit tests without requiring the real packages.
"""
import sys
import types
from pathlib import Path
from unittest.mock import MagicMock

# ---------------------------------------------------------------------------
# 0. Install binaryninja stubs FIRST — must happen before any decompiler
#    module is imported (triggered by __init__.py chain).
# ---------------------------------------------------------------------------
from tests.unit.conftest_binja_stubs import install_binja_stubs as _install_binja_stubs
_install_binja_stubs()

# ---------------------------------------------------------------------------
# 1. Stub external packages required by database_exporters.py itself,
#    the decompiler chain, and the workers/ingestor modules.
# ---------------------------------------------------------------------------
_heavy_deps = [
    # Database / networking
    "elasticsearch", "clickhouse_connect", "dotenv",
    # Binary analysis — top-level packages
    "pefile", "magic", "machofile",
    # Archive handling
    "py7zr", "pyzipper",
    # File type detection
    "magika",
    # System monitoring
    "psutil",
    # S3 / MinIO (submodule paths needed for `from minio.error import S3Error`)
    "minio", "minio.error",
    # YARA
    "yara_x",
    # Binary parsing — elftools tree
    "elftools", "elftools.elf", "elftools.elf.elffile",
    "elftools.common", "elftools.common.exceptions",
    # Code signing — signify tree
    "signify", "signify.fingerprinter", "signify.authenticode",
    # LIEF
    "lief",
    # Fuzzy hashing
    "ppdeep",
    # .NET analysis
    "dotnetfile",
    # Crypto / ASN.1
    "asn1crypto", "asn1crypto.cms", "asn1crypto.pem", "asn1crypto.x509", "asn1crypto.core",
    # Hashing
    "xxhash", "blake3", "mmh3", "numpy",
    # APK analysis
    "androguard", "androguard.core", "androguard.core.apk",
    "androguard.core.dex", "androguard.core.api_specific_resources",
    "androguard.misc",
    "permhash",
]
for _mod in _heavy_deps:
    if _mod not in sys.modules:
        try:
            __import__(_mod)
        except (ImportError, ModuleNotFoundError):
            sys.modules[_mod] = MagicMock()

# Stub urllib3 with a real Warning subclass (warnings.filterwarnings needs a class)
if "urllib3" not in sys.modules or isinstance(sys.modules.get("urllib3"), MagicMock):
    try:
        import urllib3  # noqa: F401
    except (ImportError, ModuleNotFoundError):
        _urllib3_mod = types.ModuleType("urllib3")
        _urllib3_exc = types.ModuleType("urllib3.exceptions")

        class _InsecureRequestWarning(UserWarning):
            pass

        _urllib3_exc.InsecureRequestWarning = _InsecureRequestWarning
        _urllib3_mod.exceptions = _urllib3_exc
        sys.modules["urllib3"] = _urllib3_mod
        sys.modules["urllib3.exceptions"] = _urllib3_exc

# Provide a functional ppdeep stub (tests call ppdeep.hash() and expect a string).
# Must overwrite the MagicMock that the loop above may have installed.
_ppdeep_existing = sys.modules.get("ppdeep")
if _ppdeep_existing is None or isinstance(_ppdeep_existing, MagicMock):
    _ppdeep_mod = types.ModuleType("ppdeep")
    _ppdeep_mod.__name__ = "ppdeep"

    def _ppdeep_hash(data):
        """Fake ssdeep hash — returns a deterministic placeholder."""
        if isinstance(data, str):
            data = data.encode("utf-8")
        if len(data) < 50:
            return None
        import hashlib
        h = hashlib.md5(data).hexdigest()
        return f"3:{h[:16]}:{h[16:]}"

    _ppdeep_mod.hash = _ppdeep_hash
    sys.modules["ppdeep"] = _ppdeep_mod

# Stub mmh3 if the C extension is not available
_mmh3_existing = sys.modules.get("mmh3")
if _mmh3_existing is None or isinstance(_mmh3_existing, MagicMock):
    _mmh3_mod = types.ModuleType("mmh3")
    _mmh3_mod.__name__ = "mmh3"

    def _mmh3_hash(data, seed=0):
        """Fake MurmurHash3 — deterministic hash using built-in hashlib."""
        import hashlib
        if isinstance(data, str):
            data = data.encode("utf-8")
        seed_bytes = (seed & 0xFFFFFFFF).to_bytes(8, "little")
        h = hashlib.md5(data + seed_bytes).digest()
        return int.from_bytes(h[:4], "little", signed=True)

    _mmh3_mod.hash = _mmh3_hash
    sys.modules["mmh3"] = _mmh3_mod

# Stub tlsh if the C extension is not available
if "tlsh" not in sys.modules:
    try:
        import tlsh as _real_tlsh  # noqa: F401
    except (ImportError, ModuleNotFoundError):
        _tlsh_mock = types.ModuleType("tlsh")
        _tlsh_mock.__name__ = "tlsh"

        def _tlsh_hash(data):
            """Fake TLSH hash — returns a deterministic placeholder.

            Returns empty string for data < 50 bytes or data with very
            low entropy (e.g. repeating patterns), mimicking the real
            TLSH library's "TNULL" behaviour.
            """
            if isinstance(data, str):
                data = data.encode("utf-8")
            if len(data) < 50:
                return ""
            # Real TLSH returns "" for low-entropy input
            if len(set(data)) < 8:
                return ""
            import hashlib
            return "T1" + hashlib.sha256(data).hexdigest()[:70].upper()

        _tlsh_mock.hash = _tlsh_hash
        sys.modules["tlsh"] = _tlsh_mock

# ---------------------------------------------------------------------------
# 2. Stub redb.settings (package) so module-level code never runs
# ---------------------------------------------------------------------------
_settings_mock = MagicMock()
_settings_mock.__name__ = "redb.settings"
sys.modules["redb.settings"] = _settings_mock
sys.modules["redb.settings.elasticsearch"] = MagicMock()
sys.modules["redb.settings.clickhouse"] = MagicMock()

# ---------------------------------------------------------------------------
# 3. Replace redb.extractors with a minimal package that does NOT eagerly
#    import every extractor (and their heavy deps).  Sub-module imports
#    like ``from redb.extractors.database_exporters import ...`` still work
#    because __path__ points to the real package directory.
# ---------------------------------------------------------------------------
_repo_root = Path(__file__).resolve().parents[2]
_extractors_pkg = types.ModuleType("redb.extractors")
_extractors_pkg.__path__ = [str(_repo_root / "redb" / "extractors")]
_extractors_pkg.__package__ = "redb.extractors"
sys.modules["redb.extractors"] = _extractors_pkg

# ---------------------------------------------------------------------------
# 4. Force-import redb submodules so that @patch('redb.workers.xxx'),
#    @patch('redb.queries.xxx'), etc. can resolve at decoration time.
#    This works because all heavy deps are already stubbed above.
# ---------------------------------------------------------------------------
import redb.logging_utils   # noqa: F401, E402
import redb.s3_utils         # noqa: F401, E402
import redb.queries          # noqa: F401, E402
import redb.workers          # noqa: F401, E402
import redb.ingestor         # noqa: F401, E402