M. Kanat Camlibel

125 papers C 1Journal 83Unranked 41
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Control. Syst. Lett.
Amir Shakouri, Henk J. van Waarde, M. Kanat Camlibel
2025 J jnl
Math. Control. Signals Syst.
Amir Shakouri, Henk J. van Waarde, M. Kanat Camlibel
2025 J jnl
CoRR
Amir Shakouri, Henk J. van Waarde, M. Kanat Camlibel
2024 J jnl
IEEE Trans. Autom. Control.
Henk J. van Waarde, Jaap Eising, M. Kanat Camlibel, Harry L. Trentelman
2024 J jnl
CoRR
M. Kanat Camlibel, Paolo Rapisarda
2024 J jnl
Syst. Control. Lett.
Azka Muji Burohman, Bart Besselink, Jacquelien M. A. Scherpen, M. Kanat Camlibel
2024 J jnl
IEEE Trans. Autom. Control.
Paolo Rapisarda, Henk J. van Waarde, M. Kanat Camlibel
2023 J jnl
IEEE Trans. Autom. Control.
Junjie Jiao, Harry L. Trentelman, M. Kanat Camlibel
2023 J jnl
IEEE Control. Syst. Lett.
Paolo Rapisarda, M. Kanat Camlibel, Henk van Waarde
2023 J jnl
IEEE Trans. Autom. Control.
Azka Muji Burohman, Bart Besselink, Jacquelien M. A. Scherpen, M. Kanat Camlibel
2023 J jnl
IEEE Control. Syst. Lett.
M. Kanat Camlibel, Martin Guay, Sophie Tarbouriech, Simone Baldi, Timm Faulwasser, Francesco Ferrante, Paolo Rapisarda, Henk J. van Waarde, Melanie N. Zeilinger
2023 J jnl
SIAM J. Control. Optim.
M. Kanat Camlibel, A. J. van der Schaft
2023 J jnl
SIAM J. Control. Optim.
Henk J. van Waarde, M. Kanat Camlibel, Jaap Eising, Harry L. Trentelman
2023 J jnl
SIAM J. Control. Optim.
Isil Öner, M. Kanat Camlibel
2022 J jnl
SIAM J. Control. Optim.
Jaap Eising, M. Kanat Camlibel
2022 conf
CDC
Henk J. van Waarde, Jaap Eising, M. Kanat Camlibel, Harry L. Trentelman
2022 J jnl
IEEE Trans. Autom. Control.
Harry L. Trentelman, Henk J. van Waarde, M. Kanat Camlibel
2022 J jnl
Oper. Res. Lett.
Koorosh Shomalzadeh, Jacquelien M. A. Scherpen, M. Kanat Camlibel
2022 J jnl
Math. Program.
M. Kanat Camlibel, Luigi Iannelli, Aneel Tanwani
2022 J jnl
IEEE Control. Syst. Lett.
Jaap Eising, M. Kanat Camlibel
2022 conf
CDC
Henk J. van Waarde, M. Kanat Camlibel, Harry L. Trentelman
2022 J jnl
IEEE Trans. Autom. Control.
Henk J. van Waarde, M. Kanat Camlibel, Mehran Mesbahi
2022 J jnl
IEEE Control. Syst. Lett.
Brayan M. Shali, Henk J. van Waarde, M. Kanat Camlibel, Harry L. Trentelman
2022 conf
HANDY
Mónika Józsa, Mihály Petreczky, M. Kanat Camlibel
2022 J jnl
IEEE Trans. Control. Netw. Syst.
Jiajia Jia, Brayan M. Shali, Henk J. van Waarde, M. Kanat Camlibel, Harry L. Trentelman
2021 conf
CDC
Henk J. van Waarde, M. Kanat Camlibel
2021 J jnl
IEEE Trans. Autom. Control.
Jiajia Jia, Henk J. van Waarde, Harry L. Trentelman, M. Kanat Camlibel
2021 conf
CDC
Junjie Jiao, Henk J. van Waarde, Harry L. Trentelman, M. Kanat Camlibel, Sandra Hirche
2021 J jnl
CoRR
Junjie Jiao, Henk J. van Waarde, Harry L. Trentelman, M. Kanat Camlibel, Sandra Hirche
2021 J jnl
Syst. Control. Lett.
Junjie Jiao, Harry L. Trentelman, M. Kanat Camlibel
2021 J jnl
Syst. Control. Lett.
Jiajia Jia, Harry L. Trentelman, Nikolaos Charalampidis, M. Kanat Camlibel
2021 J jnl
Autom.
Henk J. van Waarde, Pietro Tesi, M. Kanat Camlibel
2020 J jnl
CoRR
Koorosh Shomalzadeh, Jacquelien M. A. Scherpen, M. Kanat Camlibel
2020 J jnl
IEEE Trans. Autom. Control.
Junjie Jiao, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
Autom.
Junjie Jiao, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
IEEE Trans. Autom. Control.
Mónika Józsa, Mihály Petreczky, M. Kanat Camlibel
2020 conf
ECC
Jaap Eising, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
IEEE Trans. Autom. Control.
Henk J. van Waarde, Jaap Eising, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
IEEE Control. Syst. Lett.
Junjie Jiao, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
IEEE Control. Syst. Lett.
Jiajia Jia, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
CoRR
Jiajia Jia, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
CoRR
Azka Muji Burohman, Bart Besselink, Jacquelien M. A. Scherpen, M. Kanat Camlibel
2020 J jnl
CoRR
Junjie Jiao, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
CoRR
Junjie Jiao, Harry L. Trentelman, M. Kanat Camlibel
2020 J jnl
CoRR
Azka Muji Burohman, Bart Besselink, Jacquelien M. A. Scherpen, M. Kanat Camlibel
2020 J jnl
IEEE Trans. Autom. Control.
Henk J. van Waarde, Pietro Tesi, M. Kanat Camlibel
2020 J jnl
IEEE Control. Syst. Lett.
W. P. M. H. Heemels, M. Kanat Camlibel, Marcel François Heertjes
2020 conf
CDC
Jaap Eising, M. Kanat Camlibel
2020 conf
ECC
Koorosh Shomalzadeh, Jacquelien M. A. Scherpen, M. Kanat Camlibel
2020 J jnl
IEEE Trans. Autom. Control.
Jiajia Jia, Harry L. Trentelman, Wouter Baar, M. Kanat Camlibel
2020 J jnl
IEEE Control. Syst. Lett.
Henk J. van Waarde, Claudio De Persis, M. Kanat Camlibel, Pietro Tesi
2019 J jnl
IEEE Control. Syst. Lett.
Jaap Eising, M. Kanat Camlibel
2019 J jnl
IEEE Trans. Autom. Control.
Mónika Józsa, Mihály Petreczky, M. Kanat Camlibel
2019 conf
CDC
Henk J. van Waarde, Pietro Tesi, M. Kanat Camlibel
2019 J jnl
IEEE Trans. Autom. Control.
Henk van Waarde, Pietro Tesi, M. Kanat Camlibel
2018 J jnl
IEEE Control. Syst. Lett.
Henk van Waarde, Pietro Tesi, M. Kanat Camlibel
2018 J jnl
IEEE Trans. Autom. Control.
Hidde-Jan Jongsma, Harry L. Trentelman, M. Kanat Camlibel
2017 J jnl
IEEE Trans. Autom. Control.
Henk van Waarde, M. Kanat Camlibel, Harry L. Trentelman
2017 conf
CDC
Mónika Józsa, Mihály Petreczky, M. Kanat Camlibel
2017 J jnl
IEEE Trans. Autom. Control.
Henk van Waarde, M. Kanat Camlibel, Harry L. Trentelman
2017 J jnl
Autom.
Jieqiang Wei, Anneroos R. F. Everts, M. Kanat Camlibel, A. J. van der Schaft
2017 J jnl
Syst. Control. Lett.
Anneroos R. F. Everts, M. Kanat Camlibel
2016 conf
CDC
M. Kanat Camlibel, Luigi Iannelli, Aneel Tanwani, Stephan Trenn
2016 J jnl
Math. Program.
M. Kanat Camlibel, Johannes M. Schumacher
2016 J jnl
Syst. Control. Lett.
Hidde-Jan Jongsma, Harry L. Trentelman, M. Kanat Camlibel
2015 J jnl
SIAM J. Control. Optim.
M. Devrim Kaba, M. Kanat Camlibel
2015 J jnl
Syst. Control. Lett.
Nima Monshizadeh, Shuo Zhang, M. Kanat Camlibel
2015 conf
CDC
Paolo Rapisarda, Anneroos R. F. Everts, M. Kanat Camlibel
2015 conf
CDC
Hidde-Jan Jongsma, Harry L. Trentelman, M. Kanat Camlibel
2015 conf
CDC
Nima Monshizadeh, M. Kanat Camlibel, Harry L. Trentelman
2014 conf
CDC
Paolo Rapisarda, M. Kanat Camlibel
2014 J jnl
SIAM J. Control. Optim.
Le Quang Thuan, M. Kanat Camlibel
2014 J jnl
Syst. Control. Lett.
Le Quang Thuan, M. Kanat Camlibel
2014 J jnl
Math. Program.
M. Kanat Camlibel, Luigi Iannelli, Francesco Vasca
2014 J jnl
IEEE Trans. Control. Netw. Syst.
Nima Monshizadeh, Harry L. Trentelman, M. Kanat Camlibel
2014 J jnl
Autom.
Yavuz Eren, Jinglai Shen, M. Kanat Camlibel
2014 conf
CDC
M. Devrim Kaba, M. Kanat Camlibel
2014 conf
CDC
Anneroos R. F. Everts, M. Kanat Camlibel
2014 conf
CDC
W. P. M. H. Heemels, Valentina Sessa, Francesco Vasca, M. Kanat Camlibel
2014 J jnl
IEEE Trans. Autom. Control.
Shuo Zhang, Ming Cao, M. Kanat Camlibel
2014 J jnl
IEEE Trans. Autom. Control.
Nima Monshizadeh, Shuo Zhang, M. Kanat Camlibel
2014 J jnl
CoRR
Nima Monshizadeh, Shuo Zhang, M. Kanat Camlibel
2013 J jnl
IEEE Trans. Autom. Control.
Ming Cao, Shuo Zhang, M. Kanat Camlibel
2013 conf
ECC
Evren Yurtseven, M. Kanat Camlibel, W. P. Maurice H. Heemels
2013 J jnl
Syst. Control. Lett.
Evren Yurtseven, M. Kanat Camlibel, W. P. M. H. Heemels
2013 conf
CDC
M. Kanat Camlibel, A. J. van der Schaft
2013 conf
CDC
Hidde-Jan Jongsma, Harry L. Trentelman, M. Kanat Camlibel
2013 J jnl
Syst. Control. Lett.
Nima Monshizadeh, Harry L. Trentelman, M. Kanat Camlibel
2012 J jnl
IEEE Trans. Autom. Control.
Nima Monshizadeh, Harry L. Trentelman, M. Kanat Camlibel
2012 J jnl
Optim. Methods Softw.
Lanshan Han, M. Kanat Camlibel, Jong-Shi Pang, W. P. M. H. Heemels
2012 J jnl
Syst. Control. Lett.
Evren Yurtseven, W. P. M. H. Heemels, M. Kanat Camlibel
2012 J jnl
CoRR
Le Quang Thuan, M. Kanat Camlibel
2012 conf
ADHS
M. Kanat Camlibel, Shuo Zhang
2011 J jnl
IEEE Trans. Autom. Control.
Le Quang Thuan, M. Kanat Camlibel
2011 conf
CDC/ECC
Shuo Zhang, M. Kanat Camlibel, Ming Cao
2011 conf
CDC/ECC
Nima Monshizadeh, Harry L. Trentelman, M. Kanat Camlibel
2010 conf
CDC
Lanshan Han, M. Kanat Camlibel, Jong-Shi Pang, W. P. M. H. Heemels
2010 conf
CDC
Evren Yurtseven, W. P. M. H. Heemels, M. Kanat Camlibel
2010 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Roberto Frasca, M. Kanat Camlibel, Izzet Cem Göknar, Luigi Iannelli, Francesco Vasca
2009 conf
CDC
Arjan van der Schaft, M. Kanat Camlibel
2009 J jnl
SIAM J. Numer. Anal.
Lanshan Han, Alok Tiwari, M. Kanat Camlibel, Jong-Shi Pang
2009 J jnl
Syst. Control. Lett.
M. Kanat Camlibel, Roberto Frasca
2008 J jnl
Autom.
M. Kanat Camlibel, W. P. M. H. Heemels, Johannes M. Schumacher
2008 J jnl
IEEE Trans. Autom. Control.
M. Kanat Camlibel, W. P. M. H. Heemels, Johannes M. Schumacher
2008 conf
CDC
Maurice Heemels, M. Kanat Camlibel
2008 conf
HSCC
W. P. M. H. Heemels, M. Kanat Camlibel, Bernard Brogliato, Johannes M. Schumacher
2008 C conf
ISCAS
Roberto Frasca, M. Kanat Camlibel, Izzet Cem Göknar, Luigi Iannelli, Francesco Vasca
2007 conf
CDC
W. P. M. H. Heemels, M. Kanat Camlibel
2007 conf
CDC
M. Kanat Camlibel, Roberto Frasca
2007 J jnl
Int. J. Control
A. C. Van Der Heijden, A. F. A. Serrarens, M. Kanat Camlibel, Henk Nijmeijer
2007 conf
CDC
M. Kanat Camlibel, Nathan van de Wouw
2007 J jnl
Syst. Control. Lett.
M. Kanat Camlibel
2006 conf
CDC
Luigi Iannelli, Francesco Vasca, M. Kanat Camlibel
2006 J jnl
SIAM J. Control. Optim.
M. Kanat Camlibel, Jong-Shi Pang, Jinglai Shen
2006 J jnl
SIAM J. Optim.
M. Kanat Camlibel, Jong-Shi Pang, Jinglai Shen
2006 conf
ADHS
M. Kanat Camlibel, Maurice Heemels, Hans Schumacher
2005 conf
CDC/ECC
Mario di Bernardo, M. Kanat Camlibel
2004 conf
HSCC
M. Kanat Camlibel, W. P. M. H. Heemels, Johannes M. Schumacher
2003 conf
HSCC
W. P. M. H. Heemels, M. Kanat Camlibel, A. J. van der Schaft, Johannes M. Schumacher
2003 conf
CDC
M. Kanat Camlibel, Jan C. Willems, Madhu N. Belur
2003 conf
CDC
M. Kanat Camlibel, W. P. M. H. Heemels, Johannes M. Schumacher
2002 J jnl
Eur. J. Control
M. Kanat Camlibel, Johannes M. Schumacher
2001 conf
CDC
M. Kanat Camlibel, Johannes M. Schumacher
2000 conf
CDC
M. Kanat Camlibel, M. K. Külmiz Cevik, W. P. M. H. Heemels, Johannes M. Schumacher
1999 J jnl
Autom.
Y. J. Lootsma, A. J. van der Schaft, M. Kanat Camlibel
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)