Jae Young Choi

91 papers A* 1A 2B 10C 5Journal 55Unranked 18
YearRankTypeTitle / Venue / Authors
2026 conf
CHI Extended Abstracts
Eunseo Oh, Suyoun Lee, Jae Young Choi, Soobin Park, Youn-kyung Lim
2026 J jnl
CoRR
Eunseo Oh, Suyoun Lee, Jae Young Choi, Soobin Park, Youn-kyung Lim
2026 A* conf
CHI
Yugyeong Jung, Thu Hoang Anh Vo, Hyun Seung Moon, Jae Young Choi, Hyangkyeong Oh, Ujin Lee, EunJoo Kim, Tak Yeon Lee, Uichin Lee
2025 B conf
PacificVis
Seon Gyeom Kim, Jae Young Choi, Ryan A. Rossi, Eunyee Koh, Tak Yeon Lee
2025 J jnl
CoRR
Seon Gyeom Kim, Jae Young Choi, Ryan A. Rossi, Eunyee Koh, Tak Yeon Lee
2025 conf
UbiComp Companion
Jae Young Choi, Seon Gyeom Kim, Jaywoong Jeong, Ryan A. Rossi, Jihyung Kil, Tak Yeon Lee
2025 J jnl
IEEE Access
A. Yeong Han, Kwang Moo Yi, Kyeong Tae Kim, Jae Young Choi
2025 J jnl
J. Comput. Inf. Syst.
Se Jun Byun, Jae Young Choi
2024 J jnl
Sensors
Jichung Song, Jae Young Choi, Byung-Wook Lee, Dong-Myung Eom, Chang-Hyun Song
2023 J jnl
IEEE Trans. Multim.
Jae Young Choi, Bumshik Lee
2023 J jnl
IEICE Trans. Inf. Syst.
Min Ho Kwak, Youngwoo Kim, Kang-In Lee, Jae Young Choi
2022 J jnl
IEEE Access
Chaitra Dayananda, Jae Young Choi, Bumshik Lee
2022 J jnl
Scientometrics
Jung-Kyu Jung, Jae Young Choi
2022 J jnl
Sensors
Nagaraj Yamanakkanavar, Jae Young Choi, Bumshik Lee
2022 J jnl
Sensors
Nagaraj Yamanakkanavar, Jae Young Choi, Bumshik Lee
2021 J jnl
Multim. Tools Appl.
Kyeong Tae Kim, Bumshik Lee, Jae Young Choi
2021 conf
ICTC
Chaitra Dayananda, Wonsang You, Jae Young Choi, Bumshik Lee
2021 J jnl
Technol. Anal. Strateg. Manag.
Junhwa Choi, Jae Young Choi
2020 J jnl
IEEE Signal Process. Lett.
Jae Young Choi, Bumshik Lee
2020 J jnl
IEEE Trans. Image Process.
Jae Young Choi, Bumshik Lee
2020 J jnl
Sensors
Nagaraj Yamanakkanavar, Jae Young Choi, Bumshik Lee
2020 J jnl
IEEE Trans. Multim.
Sarala Ghimire, Jae Young Choi, Bumshik Lee
2019 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Muhammad Ammar Malik, Jae Young Choi, Moonsoo Kang, Bumshik Lee
2019 J jnl
Telematics Informatics
Junghyo Lee, Junghun Kim, Jae Young Choi
2019 J jnl
IEICE Trans. Inf. Syst.
Bumshik Lee, Waqas Ellahi, Jae Young Choi
2019 J jnl
Multim. Tools Appl.
Jae Young Choi
2018 J jnl
IEICE Trans. Inf. Syst.
Bumshik Lee, Jae Young Choi
2018 J jnl
Multidimens. Syst. Signal Process.
Jae Young Choi
2018 J jnl
Technol. Anal. Strateg. Manag.
Seokkyun Joshua Woo, Jae Young Choi
2018 J jnl
Vis. Comput.
Jae Young Choi
2017 J jnl
Symmetry
Kyunam Kim, Jungwoo Shin, Jae Young Choi
2017 J jnl
Telematics Informatics
Junghun Kim, Sangkyu Park, Heecheon Cho, Junsang Kim, Jae Young Choi
2016 conf
PACIS
Jae Young Choi, Gyoo Gun Lim, Mi Na Woo
2016 J jnl
Expert Syst. Appl.
Jae Young Choi, Dae Hoe Kim, Konstantinos N. Plataniotis, Yong Man Ro
2016 J jnl
Int. J. Pattern Recognit. Artif. Intell.
Jae Young Choi
2016 J jnl
Multim. Tools Appl.
Hyungil Kim, Jae Young Choi, Seung-Ho Lee, Yong Man Ro
2016 J jnl
Simul.
Jungwoo Shin, Jae Young Choi, DaeHo Lee
2015 J jnl
Comput. Biol. Medicine
Dae Hoe Kim, Jae Young Choi, Yong Man Ro
2015 J jnl
Scientometrics
Seongkyoon Jeong, Jong-Chan Kim, Jae Young Choi
2014 J jnl
Signal Process. Image Commun.
Semin Kim, Jae Young Choi, SeungWan Han, Yong Man Ro
2013 C conf
GPC
Seung Yoon Park, Jae Young Choi, Jong Pil Jeong
2013 conf
Computer-Aided Diagnosis
Dae Hoe Kim, Jae Young Choi, Yong Man Ro
2013 C conf
GPC
Chulhee Cho, Jae Young Choi, Younghwa Cho, Jong Pil Jeong
2013 conf
Computer-Aided Diagnosis
Seung Hyun Lee, Dae Hoe Kim, Jae Young Choi, Yong Man Ro
2013 J jnl
IEICE Trans. Commun.
Jae Young Choi, Bong Dae Choi
2013 J jnl
Expert Syst. Appl.
Jae Hyun Jeon, Jae Young Choi, Sihyoung Lee, Yong Man Ro
2013 J jnl
Behav. Inf. Technol.
Jae Young Choi, Jungwoo Shin, Jongsu Lee
2012 B conf
ICIP
Dae Hoe Kim, Jae Young Choi, Yong Man Ro
2012 J jnl
IEEE Trans. Image Process.
Jae Young Choi, Yong Man Ro, Konstantinos N. Plataniotis
2012 conf
EMBC
Jae Young Choi, Dae Hoe Kim, Konstantinos N. Plataniotis, Yong Man Ro
2012 conf
BHI
Jae Young Choi, Dae Hoe Kim, Yong Man Ro
2012 J jnl
IEEE Trans. Syst. Man Cybern. Part B
Jae Young Choi, Konstantinos N. Plataniotis, Yong Man Ro
2012 J jnl
IEEE Trans. Image Process.
Seung-Ho Lee, Jae Young Choi, Yong Man Ro, Konstantinos N. Plataniotis
2012 conf
Computer-Aided Diagnosis
Dae Hoe Kim, Jae Young Choi, Seon Hyeong Choi, Yong Man Ro
2012 conf
Computer-Aided Diagnosis
Jae Young Choi, Dae Hoe Kim, Seon Hyeong Choi, Yong Man Ro
2012 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Hyun-seok Min, Jae Young Choi, Wesley De Neve, Yong Man Ro
2012 B conf
ICIP
Dae Hoe Kim, Jae Young Choi, Yong Man Ro
2012 J jnl
Scientometrics
Seongkyoon Jeong, Jae Young Choi
2011 J jnl
Ind. Manag. Data Syst.
Jae Young Choi, Yeonbae Kim, Yungman Jun, Yunhee Kim
2011 J jnl
Pattern Recognit.
Jae Young Choi, Yong Man Ro, Konstantinos N. Plataniotis
2011 J jnl
Signal Process. Image Commun.
Hyun-seok Min, Jae Young Choi, Wesley De Neve, Yong Man Ro
2011 J jnl
IEEE Trans. Image Process.
Jae Young Choi, Yong Man Ro, Konstantinos N. Plataniotis
2011 J jnl
IEEE Trans. Multim.
Jae Young Choi, Wesley De Neve, Konstantinos N. Plataniotis, Yong Man Ro
2011 A conf
ICME
Hyun-seok Min, Jae Young Choi, Wesley De Neve, Yong Man Ro
2011 B conf
ICIP
Seung-Ho Lee, Jae Young Choi, Konstantinos N. Plataniotis, Yong Man Ro
2011 J jnl
Scientometrics
Seongkyoon Jeong, Jae Young Choi, Jaeyun Kim
2011 B conf
ICIP
Hyun-seok Min, Jae Young Choi, Wesley De Neve, Yong Man Ro
2010 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Jae Young Choi, Wesley De Neve, Yong Man Ro, Konstantinos N. Plataniotis
2010 B conf
FUZZ-IEEE
Seung-Ho Lee, Jae Young Choi, Konstantinos N. Plataniotis, Yong Man Ro
2010 A conf
ICME
Jae Young Choi, Konstantinos N. Plataniotis, Yong Man Ro
2010 J jnl
IEEE Trans. Consumer Electron.
Jae Young Choi, Wesley De Neve, Yong Man Ro
2010 conf
PCM (1)
Jaehyun Jeon, Jae Young Choi, Semin Kim, Hyun-seok Min, SeungWan Han, Yong Man Ro
2010 B conf
ICIP
Jae Young Choi, Konstantinos N. Plataniotis, Yong Man Ro
2009 J jnl
IEEE Trans. Syst. Man Cybern. Part B
Jae Young Choi, Yong Man Ro, Konstantinos N. Plataniotis
2009 J jnl
Expert Syst. Appl.
Namgyu Kim, Han Seok Lee, Kyong Joo Oh, Jae Young Choi
2009 conf
DPS
Jae Young Choi, Wesley De Neve, Yong Man Ro, Konstantinos N. Plataniotis
2009 B conf
ICIP
Jae Young Choi, Yong Man Ro, Konstantinos N. Plataniotis
2009 C conf
ISM
Hyun-seok Min, Jae Young Choi, Wesley De Neve, Yong Man Ro
2009 B conf
ICIP
Hyun-seok Min, Jae Young Choi, Wesley De Neve, Yong Man Ro, Konstantinos N. Plataniotis
2008 C conf
ISM
Jae Young Choi, Seungji Yang, Yong Man Ro, Konstantinos N. Plataniotis
2008 conf
Multimedia Information Retrieval
Jae Young Choi, Seungji Yang, Yong Man Ro, Konstantinos N. Plataniotis
2008 B conf
FG
Jae Young Choi, Yong Man Ro, Konstantinos N. Plataniotis
2007 C conf
SERA
Jae Young Choi, Ki Joon Choi
2006 conf
VTC Spring
Jae Young Choi, Jongwook Lee, Kamrok Lee, Sunghyun Choi, Wook Hyun Kwon, Hong Seong Park
2006 conf
VTC Spring
Kamrok Lee, Jae Young Choi, Wook Hyun Kwon, Hong Seong Park
2006 J jnl
Int. J. Pattern Recognit. Artif. Intell.
Jae Young Choi, Taeg Keun Whangbo, Young-Gyu Yang, Murlikrishna Viswanathan, Nak-Bin Kim
2005 J jnl
Comput. Commun.
Jae Young Choi, Hyung Seok Kim, Iljoo Baek, Wook Hyun Kwon
2005 conf
BVAI
Taeg Keun Whangbo, Jae Young Choi, Murlikrishna Viswanathan, Nak-Bin Kim, Young-Gyu Yang
2005 conf
ICIAR
Jae Young Choi, Murlikrishna Viswanathan, Taeg Keun Whangbo, Young-Gyu Yang, Nak-Bin Kim
2001 conf
ETFA (1)
Jae-Min Lee, Tae Rim Park, Hyung Seok Kim, Soo Young Shin, Jae Young Choi, Wook Hyun Kwon, Sung Woo Lee, Sung Il Song
1995 J jnl
Comput. Oper. Res.
Chae-Young Lee, Jae Young Choi
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)