Wan-Yu Liu

24 papers B 2C 3Journal 14Unranked 5
YearRankTypeTitle / Venue / Authors
2025 J jnl
Ecol. Informatics
Chih-Lin Liu, Wan-Yu Liu
2023 J jnl
Comput. Ind. Eng.
Chun-Cheng Lin, Wan-Yu Liu, Yi-Chun Peng, Tien-Kang Lee
2021 J jnl
IEEE Trans. Ind. Informatics
Chun-Cheng Lin, Der-Jiunn Deng, Jia-Rong Kang, Wan-Yu Liu
2021 J jnl
J. Vis.
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Chang-Yu Chen
2020 J jnl
Comput. Ind. Eng.
Chun-Cheng Lin, Wan-Yu Liu, Yu-Hsiang Chen
2020 C conf
IV
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Chang-Yu Chen
2019 J jnl
J. Vis.
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Sheng-Feng Wu
2019 J jnl
IEEE Access
Chun-Cheng Lin, Wan-Yu Liu, Yu-Wen Lu
2018 J jnl
J. Vis. Lang. Comput.
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Wen-Lin Chen
2018 J jnl
Comput. Ind. Eng.
Chun-Cheng Lin, Lun-Ping Hung, Wan-Yu Liu, Ming-Chun Tsai
2017 J jnl
IEEE Access
Chun-Cheng Lin, Der-Jiunn Deng, Wan-Yu Liu, Linnan Chen
2016 J jnl
J. Vis. Lang. Comput.
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Shierly Tanizar, Shun-Yu Jhong
2015 C conf
VINCI
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Shierly Tanizar
2015 J jnl
Environ. Model. Softw.
Wan-Yu Liu, Chun-Cheng Lin
2014 B conf
IEEE Congress on Evolutionary Computation
Wan-Yu Liu, Chun-Cheng Lin
2014 conf
ChinaCom
Chien-Liang Chen, Wan-Yu Liu, Shu-Huai Chang, Chun-Cheng Lin
2013 B conf
WCNC
Chun-Cheng Lin, Wan-Yu Liu, Der-Jiunn Deng
2013 conf
WPMC
Chun-Cheng Lin, Wan-Yu Liu, Hung-Chun Chou, Der-Jiunn Deng
2013 J jnl
Math. Comput. Model.
Wan-Yu Liu, Chun-Cheng Lin, Yang Sun Lee, Der-Jiunn Deng
2013 C conf
GPC
Chun-Cheng Lin, Yi-Ling Lin, Wan-Yu Liu
2012 conf
WPMC
Chun-Cheng Lin, Tzong-Shyan Lin, Wan-Yu Liu
2011 J jnl
Asia Pac. J. Oper. Res.
Wan-Yu Liu, Chun-Cheng Lin, Chang-Sung Yu
2011 conf
SUComS
Shun-Yu Jhong, Chun-Cheng Lin, Wan-Yu Liu, Weidong Huang
2009 conf
ICECS
Wan-Yu Liu, Chun-Cheng Lin, Kuo-Ching Lin
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"