Hanping Hou

26 papers Journal 18Unranked 8
YearRankTypeTitle / Venue / Authors
2025 J jnl
Syst.
Jianliang Yang, Kun Zhang, Hanping Hou, Na Li
2025 J jnl
Int. J. Prod. Res.
Yingjie Ju, Hanping Hou, Jimei Yang, Qiuxia Zhang, Yuheng Ren
2024 conf
AICCC
Yifan Zhu, Hanping Hou, Wei Zhou, Ruiyang Qi, Qiuxia Zhang, Shiyu Jiang
2024 J jnl
Syst.
Qiuxia Zhang, Hanping Hou, Yingjie Ju, Jiandong Yuan, Kun Zhang, Huanhuan Wang, Junhe Chen
2024 J jnl
Inf. Syst. Frontiers
Lu Han, Hanping Hou, Zhu Ming Bi, Jianliang Yang, Xiaoxiao Zheng
2024 J jnl
Syst.
Yingjie Ju, Hanping Hou, Jianliang Yang, Yuheng Ren, Jimei Yang
2024 J jnl
Ann. Oper. Res.
Shaoqing Geng, Yu (jack) Gong, Hanping Hou, Jianliang Yang, Bhakti Stephan Onggo
2024 J jnl
Syst.
Kun Zhang, Mei He, Jimei Yang, Hanping Hou
2021 J jnl
J. Ind. Inf. Integr.
Jiaqi Fang, Hanping Hou, Zhuming Bi, Dongzhen Jin, Lu Han, Jimei Yang, Shilan Dai
2021 J jnl
Ind. Manag. Data Syst.
Yingjie Ju, Hanping Hou, Jianliang Yang
2020 J jnl
Libr. Hi Tech
Hanping Hou, Jianliang Yang, Yong Chen, Mingli Yu
2020 J jnl
Libr. Hi Tech
Jianliang Yang, Hanping Hou, Yong Chen, Lu Han
2020 J jnl
IEEE Access
Jiaqi Fang, Hanping Hou, Lingle Pan, Qingshan Deng, Haiyun Pang, Yong Ye
2020 J jnl
Int. J. Sens. Networks
Jianliang Yang, Hanping Hou, Shaoqing Geng, Shaobo Qiao, Yue Wang, Fangcheng Tang, Xuan Wang
2017 J jnl
Inf. Technol. Manag.
Hanping Hou, Sohail S. Chaudhry, Yong Chen, Mingyao Hu
2016 J jnl
Internet Res.
Heng Luo, Minjie Zhu, Sengang Ye, Hanping Hou, Yong Chen, Larissa Bulysheva
2016 J jnl
Internet Res.
Mingyao Hu, Fang Huang, Hanping Hou, Yong Chen, Larissa Bulysheva
2016 conf
LISS
Lu Han, Hanping Hou, Jianliang Yang, Jieyi Xie
2016 conf
LISS
Bowen Qin, Hanping Hou
2016 conf
LISS
Jianliang Yang, Hanping Hou, Lu Han, Dawei Zhang
2016 conf
LISS
Pei Zhang, Hanping Hou, Jianliang Yang, Dawei Zhang
2016 conf
LISS
Mingli Yu, Hanping Hou
2011 J jnl
Inf. Technol. Manag.
Hanping Hou, Mingyao Hu, Li Chen, Jung Y. Choi
2011 conf
LISS (1)
Mingyao Hu, Hanping Hou, Dengyi Zhou
2007 J jnl
Enterp. Inf. Syst.
Hanping Hou, Shoubo Xu, H. Wang
2007 conf
CONFENIS (2)
Hanping Hou, Shoubo Xu
redb/extractors/pe_extractors/pe_overlay.py
← Index redb/extractors/pe_extractors/pe_overlay.py python
from hashlib import md5, sha1, sha256
import inspect
from datetime import datetime, timezone
from typing import Any

import magic
from magika import Magika

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEOverlay


class PEOverlayExtractor(PEExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            pe,
        )
        self.elastic_index = self.index_prefix + "-pe_overlay"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_pe_overlay(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        overlay = self.pe.get_overlay()
        if overlay:
            return PEOverlay(
                _id=sha256(overlay).hexdigest(),
                overlay_size=len(overlay),
                overlay_entropy=self.calculate_entropy(overlay),
                overlay_offset=self.pe.get_overlay_data_start_offset(),
                overlay_mimetype=magic.from_buffer(overlay, mime=True),
                overlay_type=magic.from_buffer(overlay),
                overlay_magika=Magika().identify_bytes(overlay).output.ct_label,
                overlay_sha256=sha256(overlay).hexdigest(),
                overlay_sha1=sha1(overlay).hexdigest(),
                overlay_md5=md5(overlay).hexdigest(),
            )
        return None

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            overlay = self._extract_pe_overlay()
            # self.export_to_elastic([overlay])  # Let the exporters handle this
            return overlay
        except Exception as e:
            self.log.error(f"Error extracting PE overlay: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            overlay = self.extract()
            if overlay is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            data.append([
                self.sha256,              # sha256
                self.md5,                 # md5
                self.sha1,                # sha1
                overlay.overlay_size,     # overlay_size
                overlay.overlay_entropy,  # overlay_entropy
                overlay.overlay_offset,   # overlay_offset
                overlay.overlay_mimetype, # overlay_mimetype
                overlay.overlay_type,     # overlay_type
                overlay.overlay_magika,   # overlay_magika
                overlay.overlay_sha256,   # overlay_sha256
                overlay.overlay_sha1,     # overlay_sha1
                overlay.overlay_md5,      # overlay_md5
                current_time             # analysis_date
            ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'overlay_size', 'overlay_entropy',
                'overlay_offset', 'overlay_mimetype', 'overlay_type', 'overlay_magika',
                'overlay_sha256', 'overlay_sha1', 'overlay_md5',
                'analysis_date'
            ]
            
            if not data:
                return None

            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'UInt64', 'Float64', 'UInt64',
                'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(String)',
                'FixedString(64)', 'FixedString(40)', 'FixedString(32)',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

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