Xenofon Vasilakos

52 papers A 1B 6C 4Journal 25Unranked 15
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Netw. Serv. Manag.
Haiyuan Li, Yuelin Liu, Hari Madhukumar, Amin Emami, Xueqing Zhou, Yulei Wu, Xenofon Vasilakos, Shuangyi Yan, Dimitra Simeonidou
2025 conf
ICC
Yuelin Liu, Haiyuan Li, Xenofon Vasilakos, Rasheed Hussain, Dimitra Simeonidou
2025 J jnl
CoRR
Yuelin Liu, Haiyuan Li, Xenofon Vasilakos, Rasheed Hussain, Dimitra Simeonidou
2025 J jnl
IEEE Trans. Netw. Serv. Manag.
Shadi Moazzeni, Zijie Huang, Shah Zeb, Xunzheng Zhang, Juan Marcelo Parra Ullauri, Anderson Bravalheri, Rasheed Hussain, Yulei Wu, Xenofon Vasilakos, Dimitra Simeonidou
2025 J jnl
CoRR
Juan Marcelo Parra Ullauri, Xueqing Zhou, Shadi Moazzeni, Rasheed Hussain, Xenofon Vasilakos, Yulei Wu, Renjith Baby, M. M. Hassan Mahmud, Gabriele Incorvaia, Darryl Hond, Hamid Asgari, Andrea Tassi, Daniel Warren, Dimitra Simeonidou
2025 J jnl
IEEE Wirel. Commun.
Juan Marcelo Parra Ullauri, Xueqing Zhou, Shadi Moazzeni, Rasheed Hussain, Xenofon Vasilakos, Yulei Wu, Renjith Baby, M. M. Hassan Mahmud, Gabriele Incorvaia, Darryl Hond, Hamid Asgari, Andrea Tassi, Daniel Warren, Dimitra Simeonidou
2024 conf
6GNet
Hari Madhukumar, Thomas A. Bower, Xenofon Vasilakos, Juan Marcelo Parra Ullauri, Maria Lema, Dimitra Simeonidou
2024 J jnl
IEEE Trans. Learn. Technol.
Zoe C. M. Davidson, Shuping Dang, Xenofon Vasilakos
2024 conf
INFOCOM (Workshops)
Runzhe Hao, Rasheed Hussain, Juan Marcelo Parra Ullauri, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2024 J jnl
IEEE Trans. Netw. Serv. Manag.
Xenofon Vasilakos, Shadi Moazzeni, Anderson Bravalheri, Pratchaya Jaisudthi, Reza Nejabati, Dimitra Simeonidou
2024 J jnl
Future Gener. Comput. Syst.
Juan Marcelo Parra Ullauri, Hari Madhukumar, Adrian-Cristian Nicolaescu, Xunzheng Zhang, Anderson Bravalheri, Rasheed Hussain, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2023 J jnl
CoRR
Haiyuan Li, Yuelin Liu, Xueqing Zhou, Xenofon Vasilakos, Reza Nejabati, Shuangyi Yan, Dimitra Simeonidou
2023 conf
INFOCOM Workshops
Juan Marcelo Parra Ullauri, Luis F. Gonzalez, Anderson Bravalheri, Rasheed Hussain, Xenofon Vasilakos, Iván Vidal, Francisco Valera, Reza Nejabati, Dimitra Simeonidou
2023 conf
INFOCOM Workshops
Pratchaya Jaisudthi, Shadi Moazzeni, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2023 J jnl
CoRR
Xenofon Vasilakos, Shadi Moazzeni, Anderson Bravalheri, Pratchaya Jaisudthi, Reza Nejabati, Dimitra Simeonidou
2022 conf
ICC
Monchai Bunyakitanon, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2021 J jnl
IEEE Trans. Netw. Serv. Manag.
Shadi Moazzeni, Pratchaya Jaisudthi, Anderson Bravalheri, Navdeep Uniyal, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2021 conf
OFC
Dan Warren, Xenofon Vasilakos, Walter Featherstone
2021 B conf
GLOBECOM
Navdeep Uniyal, Anderson Bravalheri, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou, Walter Featherstone, Shangbin Wu, Daniel Warren
2021 J jnl
IEEE Trans. Netw. Serv. Manag.
Yu Bi, Carlos Colman Meixner, Monchai Bunyakitanon, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2021 conf
MeditCom
Xenofon Vasilakos, Monchai Bunyakitanon, Reza Nejabati, Dimitra Simeonidou
2020 J jnl
IEEE Internet Things J.
Alexandros Mavromatis, Carlos Colman Meixner, Aloizio P. Silva, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2020 J jnl
Comput. Networks
Monchai Bunyakitanon, Aloizio Pereira da Silva, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2020 B conf
NOMS
Xenofon Vasilakos, Berkay Köksal, Dwi Hartati Izaldi, Navid Nikaein, Robert Schmidt, Nasim Ferdosian, Riri Fitri Sari, Ray-Guang Cheng
2020 J jnl
IEEE Trans. Cogn. Commun. Netw.
Monchai Bunyakitanon, Xenofon Vasilakos, Reza Nejabati, Dimitra Simeonidou
2020 J jnl
CoRR
Xenofon Vasilakos, Navid Nikaein, Dean H. Lorenz, Berkay Köksal, Nasim Ferdosian
2019 J jnl
IEEE Trans. Broadcast.
Qi Wang, José M. Alcaraz Calero, Ruben Ricart-Sanchez, Maria Barros Weiss, Anastasius Gavras, Navid Nikaein, Xenofon Vasilakos, Giacomo Bernini, Pietro G. Giardina, Mark Roddy, Michael Healy, Paul Walsh, Thuy Truong, Zdravko Bozakov, Konstantinos Koutsopoulos, Pedro Neves, Cristian Patachia-Sultanoiu, Marius Iordache, Elena-Madalina Oproiu, Imen Grida Ben Yahia, Ciriaco Angelo, Cosimo Zotti, Giuseppe Celozzi, Donal Morris, Ricardo Figueiredo, Dean H. Lorenz, Salvatore Spadaro, George Agapiou, Ana Cristina Aleixo, Cipriano Lomba
2019 B conf
NetSoft
Luca Baldini, Qi Wang, José M. Alcaraz Calero, Maria Barros Weiss, Anastasius Gavras, Giacomo Bernini, Pietro G. Giardina, Ciriaco Angelo, Xenofon Vasilakos, Chia-Yu Chang, Navid Nikaein, Salvatore Spadaro, Albert Pagès, Fernando Agraz, George Agapiou, Thuy Truong, Konstantinos Koutsopoulos, José Cabaça, Ricardo Figueiredo
2018 conf
EuCNC
George Xylomenos, Yannis Thomas, Xenofon Vasilakos, Michael Georgiades, Alexander Phinikarides, Ioannis Doumanis, Stuart Porter, Dirk Trossen, Sebastian Robitzsch, Martin J. Reed, Mays F. Al-Naday, George P. Petropoulos, Konstantinos V. Katsaros, Maria-Evgenia Xezonaki, Janne Riihijärvi
2018 J jnl
CoRR
George Xylomenos, Yannis Thomas, Xenofon Vasilakos, Michael Georgiades, Alexander Phinikarides, Ioannis Doumanis, Stuart Porter, Dirk Trossen, Sebastian Robitzsch, Martin J. Reed, Mays F. Al-Naday, George P. Petropoulos, Konstantinos V. Katsaros, Maria-Evgenia Xezonaki, Janne Riihijärvi
2018 conf
PV@MMSys
George Xylomenos, Alexander Phinikarides, Ioannis Doumanis, Xenofon Vasilakos, Yannis Thomas, Dirk Trossen, Michael Georgiades, Stuart Porter
2018 J jnl
CoRR
George Xylomenos, Alexander Phinikarides, Ioannis Doumanis, Xenofon Vasilakos, Yannis Thomas, Dirk Trossen, Michael Georgiades, Stuart Porter
2018 conf
CloudNet
Navid Nikaein, Xenofon Vasilakos, Anta Huang
2018 A conf
MobiSys
Navid Nikaein, Chia-Yu Chang, Robert Schmidt, Shahab Shariat, Konstantinos Alexandris, Xenofon Vasilakos
2017 conf
MECOMM@SIGCOMM
Xenofon Vasilakos, Mohammed Al-Khalidi, Vasilios A. Siris, Martin J. Reed, Nikolaos Thomos, George C. Polyzos
2017
Xenofon Vasilakos
2016 J jnl
EAI Endorsed Trans. Cloud Syst.
Xenofon Vasilakos, Vasilios A. Siris
2016 J jnl
Comput. Networks
Xenofon Vasilakos, Vasilios A. Siris, George C. Polyzos
2016 C conf
WoWMoM
Vasilios A. Siris, Xenofon Vasilakos, Dimitrios Dimopoulos
2015 B conf
Networking
Konstantinos V. Katsaros, Xenofon Vasilakos, Timothy Okwii, George Xylomenos, George Pavlou, George C. Polyzos
2014 J jnl
IEEE Commun. Surv. Tutorials
George Xylomenos, Christopher N. Ververidis, Vasilios A. Siris, Nikos Fotiou, Christos Tsilopoulos, Xenofon Vasilakos, Konstantinos V. Katsaros, George C. Polyzos
2014 C conf
QSHINE
Xenofon Vasilakos, Vasilios A. Siris
2014 J jnl
CoRR
Vasilios A. Siris, Xenofon Vasilakos, George C. Polyzos
2014 C conf
WoWMoM
Vasilios A. Siris, Xenofon Vasilakos, George C. Polyzos
2012 J jnl
IEEE Commun. Mag.
George Xylomenos, Xenofon Vasilakos, Christos Tsilopoulos, Vasilios A. Siris, George C. Polyzos
2012 conf
NCCA
Xenofon Vasilakos, Konstantinos V. Katsaros, George Xylomenos
2012 B conf
Networking (1)
Konstantinos V. Katsaros, Nikos Fotiou, Xenofon Vasilakos, Christopher N. Ververidis, Christos Tsilopoulos, George Xylomenos, George C. Polyzos
2012 conf
ICN
Xenofon Vasilakos, Vasilios A. Siris, George C. Polyzos, Marios Pomonis
2011 conf
ICUMT
Dirk Trossen, Xenofon Vasilakos, Paris Flegkas, Vasilis Sourlas, George Parisis
2011 C conf
ISCC
Varvara Giannaki, Xenofon Vasilakos, Charilaos Stais, George C. Polyzos, George Xylomenos
2010 B conf
ICCCN
Xenofon Vasilakos, Jan Sacha, Guillaume Pierre
2007 J jnl
Int. J. Artif. Intell. Tools
Georgios Lucarelli, Xenofon Vasilakos, Ion Androutsopoulos
redb/extractors/js_extractors/js_deobfuscator.py
← Index redb/extractors/js_extractors/js_deobfuscator.py python
"""Subprocess-driven JavaScript deobfuscator with jsbeautifier fallback.

Owns the heavy lifting that was previously embedded inside
`JSDeobfuscationExtractor` (`_run_deobfuscator` + `_try_jsbeautifier`). Exposed
as a single module-level entry point `deobfuscate(source, log)` so it can be
called from `JSContext.deobfuscated` (cached per sample) without dragging
extractor state through the call.

Configuration (env vars):
    JS_DEOBFUSCATOR_PATH    Path or name of the external tool (default: webcrack).
    JS_DEOBFUSCATE_TIMEOUT  Seconds before the external tool is killed
                            (process-group SIGTERM, then SIGKILL). Default: 60.

If the external tool produces non-empty output and exits 0, that wins. Otherwise
the source is run through jsbeautifier (which only normalises formatting, but
already exposes strings hidden by minification). If neither path produces
output, returns (None, None).

`FileNotFoundError` for the external tool is treated as routine — the analysis
server is either provisioned with the tool or it isn't — and demoted to a
debug-level log.
"""

import os
import signal
import subprocess
import tempfile
from typing import Optional, Tuple

DEFAULT_DEOBFUSCATOR = "webcrack"
DEFAULT_TIMEOUT_SECS = 60


def _run_external(
    source: str, deobfuscator_path: str, timeout: int, log
) -> Tuple[Optional[str], int]:
    """Run the configured external deobfuscator over `source` and capture stdout.

    Returns (text, returncode). `text` is `None` and `returncode` is `-1` when
    the binary is missing, the run timed out, or any other unexpected failure
    occurred. Missing-binary is logged at debug; timeouts and unexpected errors
    surface at warning/error.
    """
    try:
        with tempfile.NamedTemporaryFile(
            suffix=".js", mode="w", delete=False, encoding="utf-8"
        ) as tmp:
            tmp.write(source)
            tmp_path = tmp.name

        try:
            process = subprocess.Popen(
                [deobfuscator_path, tmp_path],
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
                preexec_fn=os.setsid,
            )

            try:
                stdout, _ = process.communicate(timeout=timeout)
                return stdout.decode("utf-8", errors="replace"), process.returncode
            except subprocess.TimeoutExpired:
                # Kill the entire process group so spawned helpers (e.g. node
                # subprocesses webcrack itself launches) get cleaned up too.
                try:
                    os.killpg(os.getpgid(process.pid), signal.SIGTERM)
                    process.wait(timeout=5)
                except Exception:
                    try:
                        os.killpg(os.getpgid(process.pid), signal.SIGKILL)
                    except Exception:
                        pass
                log.warning(f"Deobfuscation timed out after {timeout}s")
                return None, -1
        finally:
            try:
                os.unlink(tmp_path)
            except Exception:
                pass
    except FileNotFoundError:
        log.debug(f"Deobfuscator binary not found at {deobfuscator_path}")
        return None, -1
    except Exception as e:
        log.error(f"Error running deobfuscator: {e}")
        return None, -1


def _try_jsbeautifier(source: str, log) -> Tuple[Optional[str], Optional[str]]:
    """Fallback path: format the source with jsbeautifier. Returns
    `(text, "jsbeautifier")` or `(None, None)` if jsbeautifier isn't installed
    or the call raised."""
    try:
        import jsbeautifier
        opts = jsbeautifier.default_options()
        opts.indent_size = 2
        return jsbeautifier.beautify(source, opts), "jsbeautifier"
    except ImportError:
        log.debug("jsbeautifier not available")
        return None, None
    except Exception as e:
        log.warning(f"jsbeautifier failed: {e}")
        return None, None


def deobfuscate(source: str, log) -> Tuple[Optional[str], Optional[str]]:
    """Run the configured external deobfuscator, falling back to jsbeautifier.

    Returns `(text, normalizer_used)` on success, or `(None, None)` when neither
    path produced non-empty output. `normalizer_used` is the basename of the
    external tool (e.g. `"webcrack"`) or the literal `"jsbeautifier"`.
    """
    if not source:
        return None, None

    deobfuscator_path = os.getenv("JS_DEOBFUSCATOR_PATH", DEFAULT_DEOBFUSCATOR)
    timeout = int(os.getenv("JS_DEOBFUSCATE_TIMEOUT", str(DEFAULT_TIMEOUT_SECS)))

    text, returncode = _run_external(source, deobfuscator_path, timeout, log)
    if text and returncode == 0 and text.strip():
        return text, os.path.basename(deobfuscator_path)

    return _try_jsbeautifier(source, log)