Kapil Chawla

24 papers A 1B 11Journal 10Unranked 2
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Kapil Chawla, Youngjoon Hong, Jae Yong Lee, Sanghyun Lee
2025 J jnl
CoRR
Kapil Chawla, William Holmes
2024 J jnl
CoRR
Kapil Chawla, William Holmes, Roger Temam
2001 J jnl
IEEE J. Sel. Areas Commun.
Kin K. Leung, Peter F. Driessen, Kapil Chawla, Xiaoxin Qiu
2001 J jnl
IEEE J. Sel. Areas Commun.
Xiaoxin Qiu, Kapil Chawla, Justin C.-I. Chuang, Nelson Sollenberger
2001 conf
ICC
Li-Fung Chang, Xiaoxin Qiu, Kapil Chawla, Jian Cai
2001 conf
ICC
Xiaoxin Qiu, Li-Fung Chang, Kapil Chawla, Justin C.-I. Chuang, Nelson Sollenberger, Jim Whitehead
2000 B conf
WCNC
Xiaoxin Qiu, Kapil Chawla, Li-Fung Chang, Justin C.-I. Chuang, Nelson Sollenberger, James F. Whitehead
2000 B conf
GLOBECOM
Jian Cai, Li-Fung Chang, Kapil Chawla, Xiaoxin Qiu
2000 B conf
WCNC
Kapil Chawla, Xiaoxin Qiu, Justin C.-I. Chuang, Nelson Sollenberger
2000 B conf
PIMRC
Xiaoxin Qiu, Li-Fung Chang, Kapil Chawla, Justin C.-I. Chuang, Nelson Sollenberger, Jim Whitehead
2000 B conf
ICIP
Amy R. Reibman, Yao Wang, Xiaoxin Qiu, Zhimei Jiang, Kapil Chawla
2000 A conf
IEEE International Conference on Multimedia and Expo (I)
Kapil Chawla, Zhimei Jiang, Xiaoxin Qiu, Amy R. Reibman
1999 B conf
WCNC
Kapil Chawla, Xiaoxin Qiu, Martin V. Clark
1999 J jnl
IEEE Trans. Commun.
Xiaoxin Qiu, Kapil Chawla
1999 B conf
WCNC
Xiaoxin Qiu, Justin C.-I. Chuang, Kapil Chawla, Jim Whitehead
1999 J jnl
IEEE J. Sel. Areas Commun.
Kapil Chawla, Xiaoxin Qiu
1998 J jnl
Int. J. Wirel. Inf. Networks
Kapil Chawla, Xiaoxin Qiu
1998 B conf
PIMRC
Xiaoxin Qiu, Kapil Chawla
1998 J jnl
Int. J. Wirel. Inf. Networks
Li-Chun Wang, Kapil Chawla, Larry J. Greenstein
1997 J jnl
IEEE Commun. Lett.
Xiaoxin Qiu, Kapil Chawla
1997 B conf
PIMRC
Kapil Chawla, Reinaldo A. Valenzuela, Michael Dunn
1997 B conf
PIMRC
Kapil Chawla, Reinaldo A. Valenzuela, Michael Dunn
1995 B conf
PIMRC
Sanjiv Nanda, Kapil Chawla, Kenneth C. Budka
redb/extractors/js_extractors/js_content.py
← Index redb/extractors/js_extractors/js_content.py python
"""Persists raw + normalised text into the generic `code_text_content` table.

Reads the raw source and the deobfuscation result directly from the shared
JSContext so no extra compute happens here — both values are computed once
per sample (the source at JSContext construction, the deobfuscation lazily
on first access) and reused by any extractor that needs them.

`text_normalized` is left NULL when the deobfuscation pass produced no
output, so analysts can distinguish "we tried and got nothing" from
"normalisation succeeded".
"""

import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.js_extractor import JSExtractor


class JSContentExtractor(JSExtractor):

    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.content_row = None
        self.log.debug(inspect.currentframe().f_code.co_name)

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

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

        deobfuscated, normalizer_used = self._context.deobfuscated

        self.content_row = {
            "content_type": self._context.content_type,
            "text_raw": src,
            "text_normalized": deobfuscated,  # may be None
            "normalizer_used": normalizer_used,  # may be None
        }
        return self.content_row

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

        r = self.content_row
        data = [[
            self.sha256,
            r["content_type"],
            r["text_raw"],
            r["text_normalized"],
            r["normalizer_used"],
            datetime.now(timezone.utc),
        ]]

        column_names = [
            "sha256",
            "content_type",
            "text_raw",
            "text_normalized",
            "normalizer_used",
            "analysis_date",
        ]

        column_type_names = [
            "FixedString(64)",
            "LowCardinality(String)",
            "String",
            "Nullable(String)",
            "Nullable(String)",
            "DateTime64(3, 'UTC')",
        ]

        return (data, column_names, column_type_names)

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