Na Luo

39 papers A* 1C 3Journal 17Unranked 18
YearRankTypeTitle / Venue / Authors
2025 conf
ICBBS
Zongchang Du, Weiyang Shi, Na Luo, Congying Chu, Zhengyi Yang, Tianzi Jiang
2025 conf
ICBBS
Shiqi Di, Na Luo, Shengfeng Liu, Tianzi Jiang
2025 J jnl
Electron. Mark.
Zhangwei Feng, Na Luo, Sihong Wu, Zheng Joseph Yan
2024 J jnl
Comput. Biol. Medicine
Yue Cui, Haibin Huang, Jialu Liu, Mingyang Zhao, Chengyi Li, Xinyong Han, Na Luo, Jinquan Gao, Dong-Ming Yan, Chen Zhang, Tianzi Jiang, Shan Yu
2024 J jnl
Mach. Intell. Res.
Na Luo, Weiyang Shi, Zhengyi Yang, Ming Song, Tianzi Jiang
2024 J jnl
Int. J. Prod. Res.
Zhangwei Feng, Na Luo, Timofey Shalpegin, Huan Cui
2024 A* conf
ICDM
Yanan Xiao, Xianglin Li, Lu Jiang, Pengfei Wang, Kaidi Wang, Na Luo
2023 J jnl
CoRR
Lu Jiang, Yuanhan Li, Na Luo, Jianan Wang, Qiao Ning
2023 conf
e-Energy (Companion)
Syed Ahsan Raza Naqvi, Vikas Chandan, Saptarshi Bhattacharya, Na Luo, Koushik Kar, Chitra Sivaraman, Nikitha Radhakrishnan
2022 conf
ICDM (Workshops)
Lu Jiang, Yuanhan Li, Na Luo, Jianan Wang, Qiao Ning
2022 J jnl
Medical Image Anal.
Min Zhao, Weizheng Yan, Na Luo, Dongmei Zhi, Zening Fu, Yuhui Du, Shan Yu, Tianzi Jiang, Vince D. Calhoun, Jing Sui
2022 J jnl
Briefings Bioinform.
Lu Jiang, Jiahao Sun, Yue Wang, Qiao Ning, Na Luo, Minghao Yin
2022 J jnl
J. Oper. Res. Soc.
Yupeng Zhou, Minghao Liu, Feifei Ma, Na Luo, Minghao Yin
2022 conf
ISBI
Chao Li, Yue Cui, Na Luo, Yong Liu, Pierrick Bourgeat, Jurgen Fripp, Tianzi Jiang
2022 conf
ISWC (Posters/Demos/Industry)
SangKeun Lee, Borui Cui, Mahabir Bhandari, Na Luo, Piljae Im
2021 J jnl
IEEE Trans. Medical Imaging
Dongren Yao, Jing Sui, Mingliang Wang, Erkun Yang, Yeerfan Jiaerken, Na Luo, Pew-Thian Yap, Mingxia Liu, Dinggang Shen
2021 C conf
ADMA
Lu Jiang, Wanfei Zhang, Yibin Wang, Na Luo, Lin Yue
2021 conf
BIBM
Lu Jiang, Jiahao Sun, Yue Wang, Qiao Ning, Na Luo, Minghao Yin
2021 conf
EMBC
Na Luo, Xiangsheng Luo, Dongren Yao, Vince D. Calhoun, Li Sun, Jing Sui
2019 conf
ICCSE
Na Luo, Chun Wang, Juan Luo
2019 conf
DASFAA (3)
Xin Xu, Zeyu Huang, Jingyi Wu, Yanjie Fu, Na Luo, Weitong Chen, Jianan Wang, Minghao Yin
2018 J jnl
Neural Comput. Appl.
Yupeng Zhou, Yiyuan Wang, Jian Gao, Na Luo, Jianan Wang
2018 conf
EMBC
Na Luo, Lin Tian, Vince D. Calhoun, Jiayu Chen, Dongdong Lin, Victor M. Vergara, Shuquan Rao, Fuquan Zhang, Jing Sui
2018 conf
SOFL+MSVL
Xinfeng Shu, Na Luo, Bo Wang, Xiaobing Wang, Liang Zhao
2018 C conf
ACC
Na Luo, Fengqi You
2016 J jnl
Comput. Chem. Eng.
Zhi Li, Weimin Zhong, Xiaoqiang Wang, Na Luo, Feng Qian
2015 J jnl
IEICE Trans. Inf. Syst.
Xia Mao, Yiping Peng, Yu-Li Xue, Na Luo, Alberto Rovetta
2015 J jnl
Knowl. Based Syst.
Jinwei Niu, Weimin Zhong, Yi Liang, Na Luo, Feng Qian
2015 J jnl
Int. J. Appl. Math. Comput. Sci.
Na Luo, Yonghong Tan, Ruili Dong
2015 J jnl
Publ.
Na Luo
2013 J jnl
Comput. Math. Methods Medicine
Yi Wu, Na Luo, Liwen Tan, Bin-Ji Fang, Ying Li, Bing Xie, Kaijun Liu, Chun Chu, Min Li, Shaoxiang Zhang
2012 J jnl
Comput. Medical Imaging Graph.
Yi Wu, Li-Wen Tan, Ying Li, Bin-Ji Fang, Bing Xie, Tongning Wu, Qi-Yu Li, Ming-Guo Qiu, Guang-jiu Liu, Kai Li, Hao-Tong Xu, Na Luo, Shao-Xiang Zhang
2012 conf
ICAART (2)
Xia Mao, Na Luo, Yu-Li Xue
2011 conf
ICEIS (3)
Dai Wang, Dan Chang, Na Luo, Jingyi Xu
2010 conf
ICCA
Na Luo, Feng Qian
2009 conf
NCM
Na Luo, Weiwei Hu, Jin Zhang, Tao Fu, Jun Kong
2008 conf
RSKT
Na Luo, Fuyu Yuan, Wanli Zuo, Fengling He, Zhiguo Zhou
2008 C conf
ICMLA
Na Luo, Fuyu Yuan, Wanli Zuo, Fengling He
2006 conf
RSKT
Na Luo, Wanli Zuo, Fuyu Yuan, Changli Zhang
redb/extractors/basicproperties.py
← Index redb/extractors/basicproperties.py python
from dataclasses import asdict
import inspect
import os
import magic
from magika import Magika
from datetime import datetime, timezone
from typing import Any, List, Tuple

from redb.extractors.enum import Tag
from redb.models.dataclasses import BasicProperties
from redb.extractors.extractor import Extractor


class BasicPropertiesExtractor(Extractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        parent_sha256=None,
        precomputed_hashes=None,
        is_fat=None,
        child_sha256=None,
        child_architecture=None,
        child_filetype=None,
        first_seen=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters=exporters,
            index_prefix=index_prefix,
            elastic_index=elastic_index,
            known_benign=known_benign,
            known_malicious=known_malicious,
            precomputed_hashes=precomputed_hashes,
        )
        self.basic_properties = None
        self.elastic_index = self.index_prefix + "-basic_properties"
        self.is_packed = None
        self.parent_sha256 = parent_sha256  # For FAT Mach-O slices, points to container hash
        self.is_fat = is_fat  # True for FAT Mach-O containers, None otherwise
        self.child_sha256 = child_sha256  # SHA256 hashes of children (FAT slices, zip contents)
        self.child_architecture = child_architecture  # Architecture names for FAT Mach-O slices
        self.child_filetype = child_filetype  # Magika filetypes for children (useful for zip archives)
        self.first_seen = first_seen  # From catalog_samples, None for local files

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

    def _extract_basic_properties(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        filename = None  # Reserved for future use
        sample_name = os.path.basename(self.filepath)
        file_entropy = round(self.calculate_entropy(self.binary), 3)
        type_ = magic.from_buffer(self.binary)
        type_mime = magic.from_buffer(self.binary, mime=True)
        type_magika = Magika().identify_bytes(self.binary).output.label
        size = len(self.binary)
        self.basic_properties = BasicProperties(
            filename, sample_name, size, type_, type_mime, type_magika,
            file_entropy, self.is_packed, self.is_fat, self.child_sha256,
            self.child_architecture, self.child_filetype,
            first_seen=str(self.first_seen) if self.first_seen else None,
        )
        self.log.debug(f"Basic Properties dump: {asdict(self.basic_properties)}")

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            self._extract_basic_properties()
            # self.export_to_elastic([self.basic_properties])
            return self.basic_properties
        except Exception as e:
            self.log.error(f"Extract basic properties error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.basic_properties
        elif exporter_type == "ClickHouseExporter":
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                self.parent_sha256,  # NULL for standalone/FAT, fat_hash for slices
                self.basic_properties.child_sha256 or [],  # SHA256 hashes of children
                self.basic_properties.child_architecture or [],  # Architecture names for FAT slices
                self.basic_properties.child_filetype or [],  # Magika filetypes for children
                self.basic_properties.is_fat,  # True for FAT Mach-O containers, NULL otherwise
                self.basic_properties.filename,
                self.basic_properties.sample_name,
                self.basic_properties.filesize,
                self.basic_properties.file_entropy,
                self.basic_properties.filetype,
                self.basic_properties.filetype_mime,
                self.basic_properties.filetype_magika,
                self.first_seen or datetime(1970, 1, 1, tzinfo=timezone.utc),  # From catalog_samples, epoch zero for local files (uses original datetime, not string)
                datetime.now(timezone.utc)
            ]]

            column_names = [
                'sha256', 'md5', 'sha1', 'parent_sha256', 'child_sha256', 'child_architecture', 'child_filetype',
                'is_fat', 'filename', 'sample_name',
                'filesize', 'file_entropy', 'filetype', 'filetype_mime',
                'filetype_magika', 'first_seen', 'analysis_date'
            ]

            column_type_names = [
                'String', 'String', 'String', 'Nullable(String)',
                'Array(FixedString(64))', 'Array(LowCardinality(String))', 'Array(LowCardinality(String))',
                'Nullable(UInt8)', 'Nullable(String)', 'String',
                'UInt64', 'Float64', 'LowCardinality(String)',
                'LowCardinality(String)', 'LowCardinality(String)',
                'DateTime64(3, \'UTC\')',
                'DateTime64(3, \'UTC\')'
            ]

            return data, column_names, column_type_names

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