Nan Bai

30 papers A* 2B 1Journal 21Unranked 2
YearRankTypeTitle / Venue / Authors
2026 ed.
ECIR (1)
Ricardo Campos, Adam Jatowt, Yanyan Lan, Mohammad Aliannejadi, Christine Bauer, Sean MacAvaney, Avishek Anand, Zhaochun Ren, Suzan Verberne, Nan Bai, Masoud Mansoury
2026 ed.
ECIR (2)
Ricardo Campos, Adam Jatowt, Yanyan Lan, Mohammad Aliannejadi, Christine Bauer, Sean MacAvaney, Avishek Anand, Zhaochun Ren, Suzan Verberne, Nan Bai, Masoud Mansoury
2026 ed.
ECIR (3)
Ricardo Campos, Adam Jatowt, Yanyan Lan, Mohammad Aliannejadi, Christine Bauer, Sean MacAvaney, Avishek Anand, Zhaochun Ren, Suzan Verberne, Nan Bai, Masoud Mansoury
2026 ed.
ECIR (4)
Ricardo Campos, Adam Jatowt, Yanyan Lan, Mohammad Aliannejadi, Christine Bauer, Sean MacAvaney, Avishek Anand, Zhaochun Ren, Suzan Verberne, Nan Bai, Masoud Mansoury
2025 J jnl
Syst.
Shibo Xu, Nan Bai, Keun-sik Park, Miao Su
2025 J jnl
J. Frankl. Inst.
Nan Bai, Zhiyong Sun, Zhisheng Duan
2025 J jnl
Autom.
Nan Bai, Qishao Wang, Zhisheng Duan, Changxin Liu
2025 conf
ACL (Findings)
Hongzhi Qi, Nan Bai, Jianqiang Li, Wei Zhai, Qing Zhao, Qi Gao, Bing Xiang Yang, Guanghui Fu
2025 J jnl
CoRR
Maarten de Rijke, Bart van den Hurk, Flora Salim, Alaa Al Khourdajie, Nan Bai, Renato Calzone, Declan J. Curran, Getnet Demil, Lesley Frew, Noah Gießing, Mukesh Kumar Gupta, Maria Heuss, Sanaa Hobeichi, David Huard, Jingwei Kang, Ana Lucic, Tanwi Mallick, Shruti Nath, Andrew Okem, Barbara Pernici, Thilina Rajapakse, Hira Saleem, Harry Scells, Nicole Schneider, Damiano Spina, Yuanyuan Tian, Edmund Totin, Andrew Trotman, Ramamurthy Valavandan, Dereje Workneh, Yangxinyu Xie
2025 J jnl
CoRR
Yicheng Lin, Bingxian Wu, Nan Bai, Zhiyong Sun, Yunxiao Ren, Chuanze Chen, Zhisheng Duan
2025 A* conf
EMNLP
Wei Zhai, Nan Bai, Qing Zhao, Jianqiang Li, Fan Wang, Hongzhi Qi, Meng Jiang, Xiaoqin Wang, Bing Xiang Yang, Guanghui Fu
2025 J jnl
CoRR
Yicheng Lin, Bingxian Wu, Nan Bai, Yunxiao Ren, Zhisheng Duan
2025 J jnl
SIGIR Forum
Maarten de Rijke, Bart van den Hurk, Flora Salim, Alaa Al Khourdajie, Nan Bai, Renato Calzone, Declan J. Curran, Getnet Demil, Lesley Frew, Noah Gießing, Mukesh Kumar Gupta, Maria Heuss, Sanaa Hobeichi, David Huard, Jingwei Kang, Ana Lucic, Tanwi Mallick, Shruti Nath, Andrew Okem, Barbara Pernici, Thilina Rajapakse, Hira Saleem, Harry Scells, Nicole Schneider, Damiano Spina, Yuanyuan Tian, Edmund Totin, Andrew Trotman, Ramamurthy Valavandan, Dereje Workneh, Yangxinyu Xie
2024 J jnl
IEEE Trans. Control. Netw. Syst.
Nan Bai, Qishao Wang, Zhisheng Duan
2024 J jnl
IEEE Trans. Autom. Control.
Nan Bai, Qishao Wang, Zhisheng Duan, Guanrong Chen
2024 J jnl
Autom.
Nan Bai, Zhisheng Duan, Qishao Wang
2024 A* conf
SIGIR
Nan Bai, Ricardo da Silva Torres, Anna Fensel, Tamara Metze, Art Dewulf
2024 J jnl
J. Intell. Manuf.
Fanbo Meng, Jin Huang, Bu Ping, Pengfei Yuan, Nan Bai, Xiaolai Zhang, Xueyou Shi, Jinzhu Zhou, Peng Li, Pengbing Zhao
2024 J jnl
CoRR
Wei Zhai, Nan Bai, Qing Zhao, Jianqiang Li, Fan Wang, Hongzhi Qi, Meng Jiang, Xiaoqin Wang, Bing Xiang Yang, Guanghui Fu
2023 J jnl
CoRR
Pirouz Nourian, Shervin Azadi, Roy Uijtendaal, Nan Bai
2023 J jnl
CoRR
Pirouz Nourian, Shervin Azadi, Nan Bai, Bruno de Andrade, Nour Abu Zaid, Samaneh Rezvani, Ana Pereira Roders
2022 J jnl
ISPRS Int. J. Geo Inf.
Nan Bai, Pirouz Nourian, Renqian Luo, Ana Pereira Roders
2022 J jnl
CoRR
Nan Bai, Pirouz Nourian, Renqian Luo, Ana Pereira Roders
2021 J jnl
J. Chem. Inf. Model.
Nan Bai, Sven A. Miller, Grigorii V. Andrianov, Max Yates, Palani Kirubakaran, John Karanicolas
2021 J jnl
CoRR
Nan Bai, Renqian Luo, Pirouz Nourian, Ana Pereira Roders
2021 conf
EMNLP (Findings)
Nan Bai, Renqian Luo, Pirouz Nourian, Ana Pereira Roders
2020 J jnl
J. Intell. Fuzzy Syst.
Nan Bai, Guangzhu Chen, Rui Hou, Feng Ying
2020 B conf
IWCMC
Weijia Zeng, Fang Qin, Xuming Lu, Nan Bai
2019 J jnl
Int. J. Auton. Adapt. Commun. Syst.
Wenbo Zhang, Nan Bai, Guangjie Han, Yongxin Feng
2018 J jnl
Sensors
Hailing Fu, Guangzhu Chen, Nan Bai
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"