Karine Amis

77 papers B 15C 1Journal 33Unranked 28
YearRankTypeTitle / Venue / Authors
2025 conf
BlackSeaCom
Linda Kanaan, Karine Amis, Frédéric Guilloud, Rémi Chauvat
2025 J jnl
CoRR
Linda Kanaan, Karine Amis, Frédéric Guilloud, Rémi Chauvat
2025 J jnl
CoRR
Karine Amis, Eloi Boutillon, Emmanuel Boutillon
2025 B conf
PIMRC
Linda Kanaan, Karine Amis, Frédéric Guilloud, Rémi Chauvat
2023 J jnl
IEEE Commun. Lett.
Anouar Jerbi, Karine Amis, Frédéric Guilloud, Tarik Benaddi
2023 conf
WPMC
Tania Alhajj, Nicolas Huin, Karine Amis, Xavier Lagrange
2022 J jnl
CoRR
Anouar Jerbi, Karine Amis, Frédéric Guilloud, Tarik Benaddi
2022 B conf
PIMRC
Anouar Jerbi, Frédéric Guilloud, Karine Amis, Tarik Benaddi
2021 J jnl
IEEE Commun. Lett.
Fangping Ye, Navid Mahmoudian Bidgoli, Elsa Dupraz, Aline Roumy, Karine Amis, Thomas Maugey
2021 B conf
PIMRC
Karine Amis, Thomas Galezowski, Xavier Lagrange
2020 J jnl
IEEE Access
Zahran Hajji, Karine Amis, Abdeldjalil Aïssa-El-Bey
2020 B conf
PIMRC
Karine Amis, Thomas Galezowski, Xavier Lagrange
2019 conf
VTC Spring
Kaoutar Abdelalim, Getachew Redieteab, Sandrine Destouet Roblot, Karine Amis
2019 J jnl
Signal Process.
Malek Messai, Abdeldjalil Aïssa-El-Bey, Karine Amis, Frédéric Guilloud
2019 J jnl
IEEE Trans. Commun.
Fangping Ye, Elsa Dupraz, Zeina Mheich, Karine Amis
2019 J jnl
IEEE Access
Malek Messai, Karine Amis, Frédéric Guilloud, Abdeldjalil Aïssa-El-Bey
2018 conf
ICT
Nicolas Alibert, Karine Amis, Charlotte Langlais, Damien Castelain
2018 conf
ISTC
Nicolas Alibert, Karine Amis, Charlotte Langlais, Damien Castelain
2018 conf
ISTC
Zahran Hajji, Karine Amis, Abdeldjalil Aïssa-El-Bey
2018 J jnl
Digit. Signal Process.
Nhat-Quang Nhan, Philippe Rostaing, Karine Amis, Ludovic Collin, Emanuel Radoi
2018 J jnl
CoRR
Fangping Ye, Elsa Dupraz, Zeina Mheich, Karine Amis
2018 conf
ICT
Fangping Ye, Zeina Mheich, Elsa Dupraz, Karine Amis
2018 J jnl
IEEE Trans. Veh. Technol.
Nhat-Quang Nhan, Philippe Rostaing, Karine Amis, Emanuel Radoi, Yahong Rosa Zheng
2018 J jnl
Digit. Signal Process.
Zahran Hajji, Abdeldjalil Aïssa-El-Bey, Karine Amis
2018 B conf
WCNC
Zahran Hajji, Karine Amis, Abdeldjalil Aïssa-El-Bey
2017 J jnl
IEEE Trans. Commun.
Nhat-Quang Nhan, Philippe Rostaing, Karine Amis, Ludovic Collin, Emanuel Radoi
2017 conf
ICC
Nhat-Quang Nhan, Philippe Rostaing, Karine Amis, Ludovic Collin, Emanuel Radoi
2017 J jnl
Digit. Signal Process.
Malek Messai, Abdeldjalil Aïssa-El-Bey, Karine Amis, Frédéric Guilloud
2016 J jnl
IEEE Commun. Lett.
Thanh Nhan Vo, Karine Amis, Thierry Chonavel, Pierre Siohan
2016 J jnl
IEEE Commun. Lett.
Malek Messai, Amina Piemontese, Giulio Colavolpe, Karine Amis, Frédéric Guilloud
2016 J jnl
IEEE Trans. Wirel. Commun.
Malek Messai, Karine Amis, Frédéric Guilloud
2016 conf
ISTC
Nhat-Quang Nhan, Philippe Rostaing, Karine Amis, Ludovic Collin, Emanuel Radoi
2016 conf
ISTC
Zahran Hajji, Karine Amis, Abdeldjalil Aïssa-El-Bey
2015 J jnl
IEEE Trans. Commun.
Thanh Nhan Vo, Karine Amis, Thierry Chonavel, Pierre Siohan
2015 B conf
GLOBECOM
Nhat-Quang Nhan, Philippe Rostaing, Karine Amis, Ludovic Collin, Emanuel Radoi
2015 conf
EUSIPCO
Thanh Man Vo, Karine Amis, Thierry Chonavel, Pierre Siohan
2015 J jnl
CoRR
Malek Messai, Amina Piemontese, Giulio Colavolpe, Karine Amis, Frédéric Guilloud
2015 J jnl
CoRR
Malek Messai, Giulio Colavolpe, Karine Amis, Frédéric Guilloud
2015 J jnl
IEEE Trans. Commun.
Malek Messai, Giulio Colavolpe, Karine Amis, Frédéric Guilloud
2015 conf
ISPLC
Thanh Nhan Vo, Karine Amis, Thierry Chonavel, Pierre Siohan
2015 conf
SPAWC
Yasser Fadlallah, Abdeldjalil Aïssa-El-Bey, Karine Amis, Dominique Pastor
2015 conf
COMNET
Zahran Hajji, Karine Amis, Abdeldjalil Aïssa-El-Bey, Fatma Abdelkefi
2015 J jnl
IEEE Commun. Lett.
Nhat-Quang Nhan, Telex Magloire Nkouatchah Ngatched, Octavia A. Dobre, Philippe Rostaing, Karine Amis, Emanuel Radoi
2015 J jnl
IEEE Trans. Veh. Technol.
Yasser Fadlallah, Abdeldjalil Aïssa-El-Bey, Karine Amis, Dominique Pastor, Ramesh Pyndiah
2015 conf
EUSIPCO
Nhat-Quang Nhan, Philippe Rostaing, Karine Amis, Ludovic Collin, Emanuel Radoi
2015 J jnl
IEEE Commun. Lett.
Malek Messai, Giulio Colavolpe, Karine Amis, Frédéric Guilloud
2015 conf
EUSIPCO
Malek Messai, Frédéric Guilloud, Karine Amis, Giulio Colavolpe
2014 conf
EUSIPCO
Malek Messai, Frédéric Guilloud, Karine Amis
2014 conf
ISTC
Malek Messai, Karine Amis, Frédéric Guilloud
2014 J jnl
IEEE Trans. Commun.
Thanh Nhan Vo, Karine Amis, Thierry Chonavel, Pierre Siohan
2014 J jnl
EURASIP J. Wirel. Commun. Netw.
Yasser Fadlallah, Karine Amis, Abdeldjalil Aïssa-El-Bey, Ramesh Pyndiah
2014 J jnl
IEEE Trans. Wirel. Commun.
Karine Amis, Yizhi Yin, Ramesh Pyndiah
2013 conf
EUSIPCO
Yasser Fadlallah, Abdeldjalil Aïssa-El-Bey, Karine Amis, Dominique Pastor, Ramesh Pyndiah
2013 B conf
PIMRC
Yasser Fadlallah, Amir K. Khandani, Karine Amis, Abdeldjalil Aïssa-El-Bey, Ramesh Pyndiah
2013 J jnl
IEEE Wirel. Commun. Lett.
Yasser Fadlallah, Abdeldjalil Aïssa-El-Bey, Karim Abed-Meraim, Karine Amis, Ramesh Pyndiah
2013 conf
VTC Spring
Yizhi Yin, Karine Amis, Ramesh Pyndiah
2012 conf
VTC Spring
Yasser Fadlallah, Abdeldjalil Aïssa-El-Bey, Karine Amis, Ramesh Pyndiah
2012 conf
SPAWC
Yasser Fadlallah, Abdeldjalil Aïssa-El-Bey, Karine Amis, Ramesh Pyndiah
2012 J jnl
IET Commun.
Mohamad Sayed Hassan, Karine Amis
2012 conf
SPAWC
Yizhi Yin, Ramesh Pyndiah, Karine Amis
2011 J jnl
EURASIP J. Wirel. Commun. Netw.
Mohamad Sayed Hassan, Karine Amis
2011 conf
WPMC
Yizhi Yin, Ramesh Pyndiah, Karine Amis
2010 B conf
IWCMC
Zhongliang Fan, Ramesh Pyndiah, Raphaël Le Bidan, Karine Amis
2009 conf
ISWCS
Mohamad Sayed Hassan, Karine Amis
2009 B conf
PIMRC
Mohamad Sayed Hassan, Karine Amis
2008 J jnl
IEEE Commun. Lett.
Nicolas Le Josse, Christophe Laot, Karine Amis
2008 J jnl
IEEE Trans. Wirel. Commun.
Massinissa Lalam, Karine Amis, Dominique Leroux
2007 B conf
PIMRC
Patricia Armando, Karine Amis, Dominique Leroux
2007 B conf
GLOBECOM
Nicolas Le Josse, Laurent Boher, Christophe Laot, Karine Amis, Maryline Hélard
2007 B conf
PIMRC
Massinissa Lalam, Karine Amis, Dominique Leroux
2006 B conf
ISIT
Massinissa Lalam, Karine Amis, Dominique Leroux, Dongning Feng, Jinhong Yuan
2006 conf
VTC Fall
Nicolas Le Josse, Christophe Laot, Karine Amis
2006 conf
VTC Spring
Dongning Feng, Jinhong Yuan, Karine Amis
2005 B conf
PIMRC
Massinissa Lalam, Karine Amis, Dominique Leroux
2005 B conf
PIMRC
Karine Amis, Dominique L. Roux
2004 C conf
VCIP
Sonia Zaibi, Mahmoud Ammar, Karine Amis, Ramesh Pyndiah, Samir Saoudi
2003 conf
Security and Watermarking of Multimedia Contents
Christian Rey, Karine Amis, Jean-Luc Dugelay, Ramesh Pyndiah, Annie Picart
redb/extractors/js_extractors/js_deobfuscation.py
← Index redb/extractors/js_extractors/js_deobfuscation.py python
import hashlib
import inspect
import re
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.js_extractor import JSExtractor
from redb.extractors.js_extractors.js_patterns import PATTERNS

# String literals of 4+ characters; only used by the deobfuscation diff to count
# strings revealed after deobfuscation. Compiled once at module load.
_STRING_LITERAL_4PLUS_RE = re.compile(r"[\"\']([^\"\']{4,})[\"\']")


class JSDeobfuscationExtractor(JSExtractor):
    """Compute pre/post-deobfuscation metrics for a JS sample.

    The actual deobfuscation pass (external tool with jsbeautifier fallback)
    lives on `JSContext.deobfuscated` and is cached per sample, so any other
    extractor that needs the deobfuscated text reads the same value without
    re-running the subprocess. Configure the external tool via env vars:
        JS_DEOBFUSCATOR_PATH    Path or name (default: webcrack)
        JS_DEOBFUSCATE_TIMEOUT  Seconds (default: 60)
    """

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False, source=None, context=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, source, context=context,
        )
        self.deobfuscation_result = None
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def extract(self):
        src = self.js_source
        if not src:
            return None

        deobfuscated, deobfuscator_used = self._context.deobfuscated
        if deobfuscated is None:
            return None

        original_size = len(src)
        original_entropy = self._context.text_entropy
        deobfuscated_size = len(deobfuscated)
        deobfuscated_entropy = self._calculate_text_entropy(deobfuscated)
        size_change_ratio = round(deobfuscated_size / original_size, 4) if original_size else 0.0

        # Strings revealed by deobfuscation: matched literals are extracted from
        # both versions and the set difference is the count of "new" strings.
        original_strings = set(_STRING_LITERAL_4PLUS_RE.findall(src))
        deobfuscated_strings = set(_STRING_LITERAL_4PLUS_RE.findall(deobfuscated))
        new_strings = deobfuscated_strings - original_strings

        # Suspicious APIs revealed by deobfuscation. Both sides of the diff
        # come from JSContext caches: the raw scan is computed once for the
        # whole pipeline; the deobfuscated scan is computed once and reused
        # by JSSuspiciousAPIsExtractor's revealed_by_deobf rows.
        original_apis = {n for n in self._context.scan if n in PATTERNS}
        deobfuscated_apis = set(self._context.scan_deobfuscated)
        new_apis = deobfuscated_apis - original_apis

        deobfuscated_sha256 = hashlib.sha256(deobfuscated.encode('utf-8')).hexdigest()

        self.deobfuscation_result = {
            'deobfuscator_used': deobfuscator_used,
            'deobfuscation_successful': True,
            'original_size': original_size,
            'deobfuscated_size': deobfuscated_size,
            'size_change_ratio': size_change_ratio,
            'original_entropy': original_entropy,
            'deobfuscated_entropy': deobfuscated_entropy,
            'new_strings_found': len(new_strings),
            'new_apis_found': len(new_apis),
            'deobfuscated_sha256': deobfuscated_sha256,
        }
        return self.deobfuscation_result

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ClickHouseExporter":
            if not self.deobfuscation_result:
                return None

            r = self.deobfuscation_result
            current_time = datetime.now(timezone.utc)
            data = [[
                self.sha256,
                r['deobfuscator_used'],
                int(r['deobfuscation_successful']),
                r['original_size'],
                r['deobfuscated_size'],
                r['size_change_ratio'],
                r['original_entropy'],
                r['deobfuscated_entropy'],
                r['new_strings_found'],
                r['new_apis_found'],
                r['deobfuscated_sha256'],
                current_time,
            ]]

            column_names = [
                "sha256", "deobfuscator_used", "deobfuscation_successful",
                "original_size", "deobfuscated_size", "size_change_ratio",
                "original_entropy", "deobfuscated_entropy",
                "new_strings_found", "new_apis_found",
                "deobfuscated_sha256", "analysis_date",
            ]

            column_type_names = [
                "FixedString(64)", "LowCardinality(String)", "UInt8",
                "UInt64", "UInt64", "Float64",
                "Float64", "Float64",
                "UInt32", "UInt32",
                "FixedString(64)", "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

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