Man Huang

18 papers A* 1B 2Misc 1Journal 8Unranked 6
YearRankTypeTitle / Venue / Authors
2025 B conf
IJCNN
Changlin Ou, Bo Li, Man Huang
2025 B conf
IJCNN
Chunlong Liu, Daoming Lu, Man Huang, Bo Li
2025 Misc conf
ICASSP
Yang Yan, Bingqing Yue, Qiaxuan Li, Man Huang, Jingyu Chen, Zhenzhong Lan
2025 J jnl
CoRR
Yang Yan, Bingqing Yue, Qiaxuan Li, Man Huang, Jingyu Chen, Zhenzhong Lan
2025 J jnl
Educ. Inf. Technol.
Man Huang
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Weihua Xu, Man Huang, Zongying Jiang, Yuhua Qian
2024 J jnl
BMC Medical Informatics Decis. Mak.
Qiqiang Liang, Shuo Ding, Juan Chen, Xinyi Chen, Yongshan Xu, Zhijiang Xu, Man Huang
2023 J jnl
IEEE J. Biomed. Health Informatics
Ruiqing Ding, Yu Zhou, Jie Xu, Yan Xie, Qiqiang Liang, He Ren, Yixuan Wang, Yanlin Chen, Leye Wang, Man Huang
2022 J jnl
CoRR
Man Huang, Luis Carvalho
2021 conf
ICEMT
Man Huang
2021 J jnl
CoRR
Ruiqing Ding, Yu Zhou, Jie Xu, Yan Xie, Qiqiang Liang, He Ren, Yixuan Wang, Yanlin Chen, Leye Wang, Man Huang
2016 J jnl
计算机科学
Hongliang Yao, Man Huang, Hao Wang, Junzhao Li
2012 conf
iConference
Bo Xie, Tom Yeh, Greg Walsh, Ivan Watkins, Man Huang
2012 conf
iConference
Man Huang, Derek L. Hansen, Bo Xie
2011 conf
ASIST
Bo Xie, Tom Yeh, Greg Walsh, Ivan Watkins, Man Huang
2011 A* conf
UIST
Tom Yeh, Tsung-Hsiang Chang, Bo Xie, Greg Walsh, Ivan Watkins, Krist Wongsuphasawat, Man Huang, Larry S. Davis, Benjamin B. Bederson
2011 conf
iConference
Bo Xie, Ivan Watkins, Man Huang
2010 conf
IHI
Bo Xie, Ivan Watkins, Man Huang
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"