M. Anand Kumar

85 papers B 2Journal 18Unranked 61
YearRankTypeTitle / Venue / Authors
2024 J jnl
Concurr. Comput. Pract. Exp.
M. Anand Kumar, Edeh Michael Onyema, B. Sundaravadivazhagan, Manish Gupta, Achyut Shankar, Venkataramaiah Gude, Nagendar Yamsani
2024 conf
MIND (2)
Darshan R. K, A. D. Mahit Nandan, M. Anand Kumar
2024 conf
MIND (1)
Dhiraj Choudhary D, M. Shashank Reddy, M. Anand Kumar
2024 conf
MIND (1)
Ashinee Kesanam, Gummuluri Venkata Ravi Ram, M. Anand Kumar
2023 B conf
IEEE Big Data
Juyeon Kang, Mauli Mehulkumar Patel, Anushka Agrawal, Simhadri Sevitha, Srinivasa Ravi, Sandra Bellato, M. Anand Kumar, Ngawang Dempa Tsang, Mo El-Haj
2023 ch.
Smart Computer Vision
Niteesh Kumar, Rashad Ahmed, B. H. Venkatesh, M. Anand Kumar
2023 B conf
KES
Tejaswi Hegde, Kalyane Satyam Sanjay, Swetha Mary Thomas, Ranjana Kambhammettu, M. Anand Kumar, Sheela Ramanna
2022 conf
ICACDS (1)
M. Anand Kumar, A. Suresh Kumar
2022 conf
CVMI
Sidharth Lanka, Gaurang Velingkar, Rakshita Varadarajan, M. Anand Kumar
2022 J jnl
Neurocomputing
S. Niyas, S. J. Pawan, M. Anand Kumar, Jeny Rajan
2021 J jnl
Soc. Netw. Anal. Min.
Divyam Mehta, Aniket Dwivedi, Arunabha Patra, M. Anand Kumar
2021 conf
FIRE (Working Notes)
Ratnavel Rajalakshmi, Srivarshan S, Faerie Mattins, Kaarthik E, Prithvi Seshadri, M. Anand Kumar
2021 conf
ICCCNT
Pranav Surendran, B. Navyasree, Harshitha Kambham, M. Anand Kumar
2021 conf
FIRE (Working Notes)
Ratnavel Rajalakshmi, Faerie Mattins, Srivarshan S, Preethi Reddy, M. Anand Kumar
2021 conf
ICCCNT
Ayush Mangukia, Mohammed Ibrahim, Soorya Golamudi, Nishant Kumar, M. Anand Kumar
2021 conf
ICCCNT
Pratham Nayak, Gosu Praneeth, Rakshit Kulkarni, M. Anand Kumar
2021 J jnl
CoRR
S. Niyas, S. J. Pawan, M. Anand Kumar, Jeny Rajan
2021 conf
ICCCNT
Sai Srivatsa Gorti, Aadil Khalifa, Harini Thirunavukkarasan, Gayathri Nisha, M. Anand Kumar
2020 J jnl
Int. J. Comput. Aided Eng. Technol.
Sanjanasri J. P., M. Anand Kumar, K. P. Soman
2020 ch.
Nature-Inspired Computation in Data Mining and Machine Learning
G. Remmiya Devi, M. Anand Kumar, K. P. Soman
2019 ch.
Recent Advances in Computational Intelligence
Sujith Viswanathan, M. Anand Kumar, K. P. Soman
2019 J jnl
J. Intell. Syst.
M. Anand Kumar, B. Premjith, Shivkaran Singh, S. Rajendran, K. P. Soman
2019 J jnl
J. Intell. Syst.
S. Sachin Kumar, M. Anand Kumar, K. P. Soman
2019 ch.
Recent Advances in Computational Intelligence
B. Premjith, K. P. Soman, M. Anand Kumar, D. Jyothi Ratnam
2019 J jnl
J. Intell. Syst.
B. Premjith, M. Anand Kumar, K. P. Soman
2018 conf
SemEval@NAACL-HLT
Vivek Vinayan, M. Anand Kumar, Soman K. P
2018 conf
SemEval@NAACL-HLT
Nidhin A. Unnithan, Shalini K, Barathi Ganesh H. B., M. Anand Kumar, Soman K. P
2018 J jnl
J. Intell. Fuzzy Syst.
Shivkaran Singh, M. Anand Kumar, K. P. Soman
2018 conf
SemEval@NAACL-HLT
Naveen J. R, Barathi Ganesh H. B., M. Anand Kumar, Soman K. P
2018 conf
SemEval@NAACL-HLT
Naveen J. R, Hariharan V, Barathi Ganesh H. B., M. Anand Kumar, Soman K. P
2018 J jnl
Computación y Sistemas
P. V. Veena, M. Anand Kumar, K. P. Soman
2018 J jnl
J. Intell. Fuzzy Syst.
Remmiya Devi G, M. Anand Kumar, K. P. Soman
2018 J jnl
J. Intell. Fuzzy Syst.
S. Sooraj, K. Manjusha, M. Anand Kumar, K. P. Soman
2018 J jnl
Int. J. Document Anal. Recognit.
K. Manjusha, M. Anand Kumar, K. P. Soman
2018 conf
ICACCI
Shalini K, Barathi Ganesh H. B., M. Anand Kumar, K. P. Soman
2017 conf
FIRE (Working Notes)
Vivek Vinayan, Naveen J. R, Harikrishnan N. B., M. Anand Kumar, Soman K. P
2017 conf
ICACCI
P. V. Veena, M. Anand Kumar, K. P. Soman
2017 conf
ICACCI
R. Praveena, M. Anand Kumar, K. P. Soman
2017 J jnl
CoRR
R. Vinayakumar, Barathi Ganesh H. B., M. Anand Kumar, K. P. Soman
2017 J jnl
CoRR
Vijay Krishna Menon, S. Rajendran, M. Anand Kumar, K. P. Soman
2017 conf
ICACCI
Srinidhi Skanda V, M. Anand Kumar, K. P. Soman
2017 conf
FIRE (Working Notes)
Barathi Ganesh H. B., Reshma U, M. Anand Kumar, Soman K. P
2017 conf
ICACCI
Kavirajan B, M. Anand Kumar, K. P. Soman, S. Rajendran, S. Vaithehi
2017 conf
SMM4H@AMIA
Barathi Ganesh H. B., R. Vinayakumar, M. Anand Kumar, K. P. Soman
2017 conf
ICACCI
M. Anand Kumar, C. Vidya Raj
2017 conf
ICACCI
C. Sankaralingam, S. Rajendran, B. Kavirajan, M. Anand Kumar, K. P. Soman
2017 conf
FIRE (Working Notes)
M. Anand Kumar, Barathi Ganesh H. B., Shivkaran Singh, Soman K. P, Paolo Rosso
2017 conf
FIRE (Working Notes)
Barathi Ganesh H. B., Reshma U, M. Anand Kumar, Soman K. P
2017 conf
NCC
K. Manjusha, M. Anand Kumar, K. P. Soman
2017 conf
MIKE
S. Sachin Kumar, M. Anand Kumar, K. P. Soman
2017 J jnl
CoRR
Barathi Ganesh H. B., M. Anand Kumar, K. P. Soman
2016 J jnl
CoRR
Vijay Krishna Menon, S. Rajendran, M. Anand Kumar, K. P. Soman
2016 conf
FIRE (Working Notes)
Veena P. V, Remmiya Devi G, M. Anand Kumar, Soman K. P
2016 conf
FIRE (Working Notes)
Remmiya Devi G, Veena P. V, M. Anand Kumar, Soman K. P
2016 conf
FIRE (Working Notes)
M. Anand Kumar, Soman K. P
2016 conf
SemEval@NAACL-HLT
Barathi Ganesh H. B., M. Anand Kumar, K. P. Soman
2016 conf
FIRE (Working Notes)
Srinidhi Skanda V, Shivkaran Singh, Remmiya Devi G, Veena P. V, M. Anand Kumar, Soman K. P
2016 conf
FIRE (Working Notes)
Shivkaran Singh, M. Anand Kumar, Soman K. P
2016 conf
FIRE (Working Notes)
Barathi Ganesh H. B., M. Anand Kumar, Soman K. P
2016 conf
FIRE (Working Notes)
M. Anand Kumar, Shivkaran Singh, Kavirajan B, Soman K. P
2016 conf
FIRE (Working Notes)
Barathi Ganesh H. B., M. Anand Kumar, Soman K. P
2016 conf
FIRE (Working Notes)
Barathi Ganesh H. B., M. Anand Kumar, Soman K. P
2016 conf
FIRE Workshop
Remmiya Devi G, P. V. Veena, M. Anand Kumar, K. P. Soman
2016 conf
FIRE Workshop
Barathi Ganesh H. B., M. Anand Kumar, K. P. Soman
2016 conf
FIRE Workshop
M. Anand Kumar, Shivkaran Singh, B. Kavirajan, K. P. Soman
2016 conf
CLEF (Working Notes)
Barathi Ganesh H. B., M. Anand Kumar, K. P. Soman
2015 conf
ICACCI
Sanjanasri J. P., M. Anand Kumar
2015 conf
#MSM
Barathi Ganesh H. B., Abinaya N., M. Anand Kumar, Vinaykumar R., K. P. Soman
2015 conf
FIRE Workshops
Sanjay S. P., Nivedhitha Ezhilarasan, M. Anand Kumar, K. P. Soman
2015 conf
MIKE
Shriya Se, R. Vinayakumar, M. Anand Kumar, K. P. Soman
2015 conf
FIRE Workshops
M. Anand Kumar, Shriya Se, K. P. Soman
2015 conf
FIRE Workshops
Sanjay S. P., M. Anand Kumar, K. P. Soman
2015 conf
MIKE
S. Sachin Kumar, B. Premjith, M. Anand Kumar, K. P. Soman
2015 conf
FIRE Workshops
Rahul Venkatesh Kumar, M. Anand Kumar, K. P. Soman
2015 conf
ICACCI
Barathi Ganesh H. B., Reshma U, M. Anand Kumar
2014 conf
FIRE
N. Abinaya, Neethu John, Barathi H. B. Ganesh, M. Anand Kumar, K. P. Soman
2014 J jnl
CoRR
M. Anand Kumar, V. Dhanalakshmi, K. P. Soman, V. Sharmiladevi
2011 conf
SPIT/IPC
R. Dhivya, V. Dhanalakshmi, M. Anand Kumar, K. P. Soman
2011 conf
SPIT/IPC
S. Keerthana, V. Dhanalakshmi, M. Anand Kumar, V. P. Ajith, K. P. Soman
2010 conf
ICDEM
R. U. Rekha, M. Anand Kumar, V. Dhanalakshmi, K. P. Soman, S. Rajendran
2010 conf
T4E
V. Dhanalakshmi, M. Anand Kumar, R. U. Rekha, K. P. Soman, S. Rajendran
2010 conf
ICDEM
V. P. Abeera, S. Aparna, R. U. Rekha, M. Anand Kumar, V. Dhanalakshmi, K. P. Soman, S. Rajendran
2010 conf
ICT
G. Sai Kiranmai, K. Mallika, M. Anand Kumar, V. Dhanalakshmi, K. P. Soman
2009 conf
ARTCom
V. Dhanalakshmi, P. Padmavathy, M. Anand Kumar, K. P. Soman, S. Rajendran
2009 conf
ARTCom
V. Dhanalakshmi, M. Anand Kumar, R. U. Rekha, C. Arun Kumar, K. P. Soman, S. Rajendran
redb/extractors/js_extractors/js_xray.py
← Index redb/extractors/js_extractors/js_xray.py python
"""Subprocess wrapper for the bundled js-x-ray Node bridge.

Mirrors `js_deobfuscator.py`: shell out to a Node script with a per-sample
timeout, kill the process group on hang, demote `FileNotFoundError` to debug
(missing tool is routine — the host either has Node + the bundled package
installed or it doesn't), and return a structured result on success.

The bridge lives at `redb/extractors/js_extractors/scripts/js-xray-runner.js`.
Operators install the JS dependency once with `npm install` in that directory
(or override the path with `JS_XRAY_RUNNER_PATH`).

Configuration (env vars):
    JS_XRAY_RUNNER_PATH   Path to the Node bridge script (default: bundled).
    JS_XRAY_TIMEOUT       Seconds before the subprocess is killed. Default: 30.

`run(source, log)` returns `XRayResult(obfuscator, warnings)` on a successful
analysis, or `XRayResult(None, [])` for any non-success path (binary missing,
timeout, parse failure, etc.). The two unsuccessful states are
indistinguishable to the caller on purpose — they all collapse to "no
js-x-ray verdict, fall back to heuristic".
"""

from __future__ import annotations

import json
import os
import signal
import subprocess
import tempfile
from dataclasses import dataclass, field
from typing import List, Optional

# Bundled bridge: redb/extractors/js_extractors/scripts/js-xray-runner.js
_DEFAULT_RUNNER = os.path.join(
    os.path.dirname(__file__), "scripts", "js-xray-runner.js"
)
_DEFAULT_NODE = "node"
_DEFAULT_TIMEOUT_SECS = 30


@dataclass
class XRayResult:
    """Parsed js-x-ray output. `obfuscator` is the recognised family name
    (e.g. "jsfuck", "obfuscator.io") or None when js-x-ray did not flag the
    code. `warnings` carries every {kind, value} pair the analyser produced;
    the heuristic uses it as a corroborating signal. `avg_identifier_length`
    is js-x-ray's own AST-derived figure — used as a fallback for the
    heuristic's `avg_identifier_length<2` strong signal when pyjsparser
    can't parse the source (anything ES2015+ trips it)."""

    obfuscator: Optional[str] = None
    warnings: List[dict] = field(default_factory=list)
    avg_identifier_length: Optional[float] = None

    @property
    def flagged(self) -> bool:
        return self.obfuscator is not None


def _empty() -> XRayResult:
    return XRayResult(obfuscator=None, warnings=[])


def run(source: str, log) -> XRayResult:
    if not source:
        return _empty()

    runner = os.getenv("JS_XRAY_RUNNER_PATH", _DEFAULT_RUNNER)
    node_bin = os.getenv("JS_XRAY_NODE_BIN", _DEFAULT_NODE)
    timeout = int(os.getenv("JS_XRAY_TIMEOUT", str(_DEFAULT_TIMEOUT_SECS)))

    if not os.path.exists(runner):
        log.debug(f"js-x-ray runner not found at {runner}")
        return _empty()

    # Skip the subprocess entirely when the JS dependency isn't installed.
    # Without this, every call to a host that has `node` but never ran
    # `npm install` next to the runner would still fork node, get a require
    # error, and exit nonzero — wasted ~50–200ms per JS sample (and per test).
    runner_dir = os.path.dirname(runner)
    if not os.path.isdir(os.path.join(runner_dir, "node_modules", "@nodesecure", "js-x-ray")):
        log.debug(f"@nodesecure/js-x-ray not installed in {runner_dir}")
        return _empty()

    tmp_path = None
    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(
                [node_bin, runner, tmp_path],
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
                preexec_fn=os.setsid,
            )
            try:
                stdout, stderr = process.communicate(timeout=timeout)
            except subprocess.TimeoutExpired:
                # Kill the whole process group so any node helpers die 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"js-x-ray timed out after {timeout}s")
                return _empty()

            if process.returncode != 0:
                err = stderr.decode("utf-8", errors="replace").strip()
                log.debug(f"js-x-ray exited {process.returncode}: {err}")
                return _empty()

            text = stdout.decode("utf-8", errors="replace").strip()
            if not text:
                return _empty()

            try:
                payload = json.loads(text)
            except json.JSONDecodeError as e:
                log.warning(f"js-x-ray emitted non-JSON output: {e}")
                return _empty()

            obfuscator = payload.get("obfuscator")
            warnings = payload.get("warnings") or []
            if not isinstance(warnings, list):
                warnings = []

            ids_avg = payload.get("idsLengthAvg")
            if not isinstance(ids_avg, (int, float)):
                ids_avg = None

            return XRayResult(
                obfuscator=obfuscator,
                warnings=warnings,
                avg_identifier_length=ids_avg,
            )
        finally:
            if tmp_path:
                try:
                    os.unlink(tmp_path)
                except Exception:
                    pass
    except FileNotFoundError:
        log.debug(f"node binary not found at {node_bin}")
        return _empty()
    except Exception as e:
        log.error(f"js-x-ray subprocess error: {e}")
        return _empty()