Van-Hau Pham

112 papers B 8C 5Misc 1Journal 46Unranked 51
YearRankTypeTitle / Venue / Authors
2026 J jnl
J. Inf. Secur. Appl.
Do Thi Thu Hien, Bao Pham-Thai, Nguyen Tan Cam, Van-Hau Pham
2026 J jnl
Inf. Softw. Technol.
Do Thi Thu Hien, Le Viet Tai Man, Le Trong Nhan, Phan Ngoc Yen Nhi, Hoang Thanh Lam, Nguyen Tan Cam, Van-Hau Pham
2026 J jnl
Internet Things
Tuan-Dung Tran, Quang Vu, Bao Huynh, Van-Hau Pham
2026 J jnl
Inf. Softw. Technol.
Nghi Hoang Khoa, Doan Minh Trung, Duong The Dat, Phan The Duy, Van-Hau Pham, Nguyen Tan Cam
2026 J jnl
Inf. Sci.
Tuan-Dung Tran, Bao Huynh, Van-Hau Pham
2026 J jnl
J. Syst. Archit.
Tuan-Dung Tran, Phuong-Dai Bui, Van-Hau Pham
2026 J jnl
Future Gener. Comput. Syst.
Tuan-Dung Tran, Phuong-Dai Bui, Nguyen Tan Cam, Van-Hau Pham
2026 J jnl
Comput. Networks
Hien Do Hoang, Trong-Nghia To, Ngo Duc Hoang Son, Khoa Ngo-Khanh, Nguyen Tan Cam, Van-Hau Pham
2026 J jnl
CoRR
Tran Duong Minh Dai, Triet Huynh Minh Le, M. Ali Babar, Van-Hau Pham, Phan The Duy
2026 J jnl
CoRR
Phan The Duy, Nghi Hoang Khoa, Nguyen Tran Anh Quan, Luong Ha Tien, Ngo Duc Hoang Son, Van-Hau Pham
2026 J jnl
Internet Things
Tuan-Dung Tran, Tam Truong Ha Huy, Van-Hau Pham
2026 J jnl
CoRR
Tran Vy Khang, Nguyen Dang Nguyen Khang, Nghi Hoang Khoa, Do Thi Thu Hien, Van-Hau Pham, Phan The Duy
2026 J jnl
J. Syst. Softw.
Kien Luu Trung, Doan Minh Trung, Tuan-Dung Tran, Phan The Duy, Van-Hau Pham
2026 J jnl
Inf. Softw. Technol.
Phan The Duy, Nguyen Manh Cuong, Ha Trieu Yen Vy, Le Tuan Luong, Nguyen Tran Duc Anh, Nghi Hoang Khoa, Van-Hau Pham
2025 conf
ACIIDS (1)
Khoa Tran Dinh, Anh Bui Vuong Tam, Loc Nguyen Vo Tien, Dat Nguyen Phan Quoc, Trong-Nghia To, Phan The Duy, Van-Hau Pham
2025 J jnl
J. Inf. Secur. Appl.
Tuan-Dung Tran, Huynh Phan Gia Bao, Nguyen Tan Cam, Van-Hau Pham
2025 J jnl
CoRR
Doan Minh Trung, Tien Duc Anh Hao, Luong Hoang Minh, Nghi Hoang Khoa, Nguyen Tan Cam, Van-Hau Pham, Phan The Duy
2025 J jnl
Inf. Fusion
Nguyen Huu Quyen, Phan The Duy, Ngo Thao Nguyen, Nghi Hoang Khoa, Van-Hau Pham
2025 conf
ICCAI
Le Minh Khan, Hien Do Hoang, Khoa Ngo-Khanh, Phan The Duy, Van-Hau Pham
2025 B conf
IEEE Big Data
Phong Tran Thanh, Phuc Nguyen Le Bao, Trong-Nghia To, Van-Hau Pham, Phan The Duy
2025 J jnl
Int. J. Inf. Sec.
Trong-Nghia To, Danh Le Kim, Do Thi Thu Hien, Nghi Hoang Khoa, Hien Do Hoang, Phan The Duy, Van-Hau Pham
2025 J jnl
Clust. Comput.
Vo Truong Trung Hieu, Nguyen Huu Quyen, Hien Do Hoang, Phan The Duy, Van-Hau Pham
2025 J jnl
Internet Things
Van-Hau Pham, Nguyen Tan Cam, Pham Nhat Duy, Nguyen Vinh Tan
2025 J jnl
Int. J. Inf. Sec.
Phan The Duy, Nghi Hoang Khoa, Nguyen Huu Quyen, Le Cong Trinh, Vu Trung Kien, Trinh Minh Hoang, Van-Hau Pham
2025 B conf
NSS
Phan The Duy, Truong Thi Hoang Hao, Nguyen Viet Hoang, Nguyen Duc Trung, Le Duc Thinh, Doan Minh Trung, Van-Hau Pham
2025 J jnl
J. Supercomput.
Vu Le Anh Quan, Chau Thuan Phat, Kiet Van Nguyen, Phan The Duy, Van-Hau Pham
2025 J jnl
CoRR
Phung Duc Luong, Le Tran Gia Bao, Nguyen Vu Khai Tam, Dong Huu Nguyen Khoa, Nguyen Huu Quyen, Van-Hau Pham, Phan The Duy
2024 J jnl
IEEE Access
Van-Hau Pham, Do Thi Thu Hien, Nguyen Phuc Chuong, Pham Thanh Thai, Phan The Duy
2024 conf
RIVF
Nguyen Ngoc Thanh, Van-Giau Ung, Phan The Duy, Van-Hau Pham
2024 J jnl
IEEE Access
Phan The Duy, Vo Quang Minh, Dang Bui Tan Hai, Ngo Duc Hoang Son, Nguyen Huu Quyen, Van-Hau Pham
2024 conf
MAPR
Pham Thai Bao, Do Thi Thu Hien, Nguyen Tan Cam, Van-Hau Pham
2024 J jnl
Vietnam. J. Comput. Sci.
Doan Minh Trung, Nghi Hoang Khoa, Phan The Duy, Van-Hau Pham, Nguyen Tan Cam
2024 conf
RIVF
Ba Truc Le, Van-Giau Ung, Phan The Duy, Van-Hau Pham
2024 conf
MAPR
Le Tran Gia Lac, Nguyen Cao Cuong, Ngo Duc Hoang Son, Van-Hau Pham, Phan The Duy
2024 conf
RIVF
Khoa Ngo-Khanh, Hai Nguyen Phuc, Do Thi Thu Hien, Van-Hau Pham, Phan The Duy
2024 J jnl
Int. J. Inf. Sec.
Van-Hau Pham, Do Thi Thu Hien, Hien Do Hoang, Phan The Duy
2024 J jnl
Internet Things
Phan The Duy, Do Thi Thu Hien, Tran Duc Luong, Nguyen Huu Quyen, Van-Hau Pham
2024 J jnl
J. Inf. Secur. Appl.
Tran Duc Luong, Vuong Minh Tien, Nguyen Huu Quyen, Do Thi Thu Hien, Phan The Duy, Van-Hau Pham
2024 conf
RIVF
Phuoc-Sang Dang, Phan The Duy, Van-Hau Pham
2024 J jnl
Comput. Networks
Van-Hau Pham, Hien Do Hoang, Phan Thanh Trung, Van Dinh Quoc, Trong-Nghia To, Phan The Duy
2024 conf
MAPR
Tuan-Dung Tran, Nguyen Anh Tai, Tran The Anh, Phan The Duy, Van-Hau Pham
2023 conf
ICSSE
Vo Truong Trung Hieu, Truong Thi Hoang Hao, Le Xuan Hoang, Doan Minh Trung, Phan The Duy, Van-Hau Pham
2023 B conf
GLOBECOM
Le Cong Trinh, Vu Trung Kien, Trinh Minh Hoang, Nguyen Huu Quyen, Nghi Hoang Khoa, Phan The Duy, Van-Hau Pham
2023 conf
SoICT
Thinh Nguyen Hung, Hai Nguyen Phuc, Khoa Tran Dinh, Nhan Le Tran Thanh, Nghia To Trong, Khoa Ngo-Khanh, Duy Phan The, Van-Hau Pham
2023 conf
SoICT
Son Ngo Duc Hoang, Anh Bui Vuong Tam, Phuoc Phan Hoang, Giang Tran Thi Cam, Thinh Nguyen Hung, Quyen Nguyen Huu, Duy Phan The, Van-Hau Pham
2023 conf
SoICT
Bang Lê Hong, Thang Lê Duc, Trung Doàn Minh, Tuan-Dung Tran, Duy Phan The, Van-Hau Pham
2023 conf
RIVF
Phan The Duy, Tuan-Dung Tran, Hoang Nguyen Duy, Hien Do Hoang, Van-Hau Pham
2023 conf
SoICT
Phong Phan Nguyen Huu, Khoa Tran Dinh, Ngan Tran Kim Ngoc, Tran Duc Luong, Phuc Le Hoang, Quyen Nguyen Huu, Duy Phan The, Van-Hau Pham
2023 J jnl
CoRR
Tran Duc Luong, Vuong Minh Tien, Nguyen Huu Quyen, Do Thi Thu Hien, Phan The Duy, Van-Hau Pham
2023 J jnl
Internet Things
Phan The Duy, Nguyen Huu Quyen, Nghi Hoang Khoa, Tuan-Dung Tran, Van-Hau Pham
2023 C conf
ISPEC
Tran Duc Luong, Vuong Minh Tien, Phan The Duy, Van-Hau Pham
2023 J jnl
J. Inf. Secur. Appl.
Phan The Duy, Nghi Hoang Khoa, Do Thi Thu Hien, Hien Do Hoang, Van-Hau Pham
2023 conf
CSoNet
Bui Kim Ngan Nguyen, Binh Thuc Tram Nguyen, Tuan-Dung Tran, Phan The Duy, Van-Hau Pham
2023 conf
MAPR
Trong-Nghia To, Hien Do Hoang, Phan The Duy, Van-Hau Pham
2023 J jnl
CoRR
Trong-Nghia To, Danh Le Kim, Do Thi Thu Hien, Nghi Hoang Khoa, Hien Do Hoang, Phan The Duy, Van-Hau Pham
2023 conf
MAPR
Doan Minh Trung, Nghi Hoang Khoa, Dang Bui Tan Hai, Phan The Duy, Nguyen Tan Cam, Van-Hau Pham
2023 J jnl
CoRR
Van-Hau Pham, Hien Do Hoang, Phan Thanh Trung, Van Dinh Quoc, Trong-Nghia To, Phan The Duy
2023 conf
SoICT
Minh Vo Quang, Dang Bui Tan Hai, Ngan Tran Kim Ngoc, Son Ngo Duc Hoang, Quyen Nguyen Huu, Duy Phan The, Van-Hau Pham
2023 conf
ICCAIS
Ngoc-My Bui, Van-Ngoc Dinh, Van-Hau Pham, Quang-Kien Trinh
2023 J jnl
CoRR
Phan The Duy, Nghi Hoang Khoa, Nguyen Huu Quyen, Le Cong Trinh, Vu Trung Kien, Trinh Minh Hoang, Van-Hau Pham
2023 conf
SoICT
Hien Do Hoang, Ha Nguyen Thi Hai, Do Thi Thu Hien, The Duy Phan, Van-Hau Pham
2023 C conf
ISPEC
Ngo Duc Hoang Son, Huynh Thai Thi, Phan The Duy, Van-Hau Pham
2023 J jnl
CoRR
Huynh Thai Thi, Ngo Duc Hoang Son, Phan The Duy, Nghi Hoang Khoa, Khoa Ngo-Khanh, Van-Hau Pham
2023 J jnl
CoRR
Vu Le Anh Quan, Chau Thuan Phat, Kiet Van Nguyen, Phan The Duy, Van-Hau Pham
2022 conf
RIVF
Hien Do Hoang, Phan The Duy, Nguyen Thanh Tien, Do Thi Thu Hien, Van-Hau Pham
2022 conf
RIVF
Do Thi Thu Hien, Hien Do Hoang, Phan The Duy, Do Thi Huong Lan, Van-Hau Pham
2022 conf
SoICT
Do Thi Thu Hien, The Duy Phan, Hao Le Anh, Lan Nguyen Duy, Nghi Hoang Khoa, Van-Hau Pham
2022 conf
SoICT
Luyen Ngan Van, Anh Hoang Tuan, Duy Phan The, Tan-Khoa Vo, Van-Hau Pham
2022 conf
RIVF
Nghia To Trong, Hien Do Hoang, Doan Minh Trung, Phan The Duy, Van-Hau Pham
2022 conf
RIVF
Ho Huy Thai, Nguyen Duc Hieu, Nguyen Van Tho, Hien Do Hoang, Phan The Duy, Van-Hau Pham
2022 J jnl
J. Inf. Secur. Appl.
Phan The Duy, Hien Do Hoang, Do Thi Thu Hien, Anh Gia-Tuan Nguyen, Van-Hau Pham
2022 conf
RIVF
Nghi Hoang Khoa, Doan Minh Trung, Bui Cong Nguyen Khoa, To Thi My Au, Van-Giau Ung, Phan The Duy, Van-Hau Pham
2022 conf
RIVF
Hien Do Hoang, Do Thi Thu Hien, Thai Bui Xuan, Tri Nguyen Ngoc Minh, Phan The Duy, Van-Hau Pham
2022 C conf
ISPEC
Nguyen Huu Quyen, Phan The Duy, Nguyen Chi Vy, Do Thi Thu Hien, Van-Hau Pham
2022 conf
ISCIT
Huynh Thai Thi, Ngo Duc Hoang Son, Phan The Duy, Van-Hau Pham
2022 conf
ISCIT
Phan The Duy, Hien Do Hoang, Nghi Hoang Khoa, Do Thi Thu Hien, Van-Hau Pham
2022 C conf
SoMeT
Do Thi Thu Hien, Ba Truc Le, The Duy Phan, Thi Huong Lan Do, Do Hoang Hien, Van-Hau Pham
2022 conf
SoICT
Nguyen Bac Trinh, The Duy Phan, Van-Hau Pham
2022 conf
RIVF
Le Van Hoang, Nguyen Xuan Nhu, To Trong Nghia, Nguyen Huu Quyen, Van-Hau Pham, Phan The Duy
2022 conf
SoICT
The Duy Phan, Tran Duc Luong, Nguyen Hoang Quoc An, Quyen Nguyen Huu, Nghi Hoang Khoa, Van-Hau Pham
2022 conf
ICO
Nguyen Tan Cam, To Ung Vu, Nghi Hoang Khoa, Van-Hau Pham
2021 C conf
SoMeT
Phan The Duy, Nghi Hoang Khoa, Hoang Hiep, Nguyen Ba Tuan, Hien Do Hoang, Do Thi Thu Hien, Van-Hau Pham
2021 B conf
NSS
Phan The Duy, Huynh Nhat Hao, Huynh Minh Chu, Van-Hau Pham
2021 J jnl
CoRR
Phan The Duy, Hien Do Hoang, Do Thi Thu Hien, Anh Gia-Tuan Nguyen, Van-Hau Pham
2021 J jnl
Comput. Secur.
Phan The Duy, Le Khac Tien, Nghi Hoang Khoa, Do Thi Thu Hien, Anh Gia-Tuan Nguyen, Van-Hau Pham
2021 conf
ICMLSC
Nghi Hoang Khoa, Nguyen Tan Cam, Van-Hau Pham, Anh Gia-Tuan Nguyen
2021 conf
RIVF
Do Thi Thu Hien, Hien Do Hoang, Van-Hau Pham
2021 B conf
NSS
Nguyen Chi Vy, Nguyen Huu Quyen, Phan The Duy, Van-Hau Pham
2021 conf
RIVF
Cao Phan Xuan Qui, Dang Hong Quang, Phan The Duy, Do Thi Thu Hien, Van-Hau Pham
2020 J jnl
CoRR
Phan The Duy, Do Thi Thu Hien, Van-Hau Pham
2020 conf
RIVF
Nghi Hoang Khoa, Phan The Duy, Hien Do Hoang, Do Thi Thu Hien, Van-Hau Pham
2019 conf
SoICT
Hien Do Hoang, Phan The Duy, Van-Hau Pham
2019 conf
SoICT
Do Thi Thu Hien, Thanh Duc Ngo, Duy-Dinh Le, Hiroo Sekiya, Van-Hau Pham, Kien Nguyen
2019 conf
ICCT
Phan The Duy, Do Thi Thu Hien, Huynh Phu Qui, Van-Hau Pham
2019 conf
ICCT
Nguyen Tan Cam, Toan Nguyen, Khanh Nguyen, Tuan A. Nguyen, Van-Hau Pham
2019 J jnl
Clust. Comput.
Nguyen Tan Cam, Van-Hau Pham, Tuan A. Nguyen
2019 J jnl
Clust. Comput.
Ly Hoang Tuan, Nguyen Tan Cam, Van-Hau Pham
2019 conf
ICCNS
Phan The Duy, Le Duy An, Van-Hau Pham
2019 conf
ICCAI
Nguyen Tan Cam, Nghi Hoang Khoa, Le Duc Thinh, Van-Hau Pham, Tuan A. Nguyen
2019 conf
ISCIT
Do Thi Thu Hien, Thanh Duc Ngo, Duy-Dinh Le, Hiroo Sekiya, Van-Hau Pham, Kien Nguyen
2019 conf
INISCOM
Phan The Duy, Do Thi Thu Hien, Nguyen Van Vuong, Nguyen Ngoc Hai Au, Van-Hau Pham
2018 conf
SoICT
Phan The Duy, Do Thi Thu Hien, Do Hoang Hien, Van-Hau Pham
2017 conf
ICISA
Nguyen Tan Cam, Van-Hau Pham, Tuan A. Nguyen
2017 B conf
MDM
Nguyen Tan Cam, Van-Hau Pham, Tuan A. Nguyen
2017 conf
ICISA
Hoang Tuan Ly, Cam Nguyen Tan, Van-Hau Pham
2013 conf
ICCSA (5)
Cuong Duc Nguyen, Tien-Dung Nguyen, Van-Hau Pham
2011 J jnl
Future Gener. Comput. Syst.
Van-Hau Pham, Marc Dacier
2009 B conf
NSS
Van-Hau Pham, Marc Dacier
2009 Misc conf
ICISS
Marc Dacier, Van-Hau Pham, Olivier Thonnard
2008 B conf
DIMVA
Van-Hau Pham, Marc Dacier, Guillaume Urvoy-Keller, Taoufik En-Najjary
2008 J jnl
Int. J. Crit. Infrastructures
Fabien Pouget, Marc Dacier, Van-Hau Pham
2006 ch.
Quality of Protection
Eric Alata, Marc Dacier, Yves Deswarte, M. Kaaâniche, K. Kortchinsky, Vincent Nicomette, Van-Hau Pham, Fabien Pouget
redb/extractors/elf_extractors/elf_notes.py
← Index redb/extractors/elf_extractors/elf_notes.py python
import inspect
import binascii
from datetime import datetime, timezone
from typing import Any, List, Dict

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFNote


class ELFNotesExtractor(ELFExtractor):

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

    def _get_note_type_string(self, note_type: int, note_name: str) -> str:
        """Convert note type number to human-readable string."""

        # GNU-specific note types
        if note_name == "GNU":
            gnu_types = {
                1: "NT_GNU_ABI_TAG",
                2: "NT_GNU_HWCAP",
                3: "NT_GNU_BUILD_ID",
                4: "NT_GNU_GOLD_VERSION",
                5: "NT_GNU_PROPERTY_TYPE_0"
            }
            return gnu_types.get(note_type, f"NT_GNU_UNKNOWN_{note_type}")

        # Generic note types
        generic_types = {
            1: "NT_PRSTATUS",
            2: "NT_FPREGSET",
            3: "NT_PRPSINFO",
            4: "NT_TASKSTRUCT",
            5: "NT_AUXV",
            6: "NT_PSTATUS",
            7: "NT_FPREGS",
            8: "NT_PSINFO",
            9: "NT_PRCRED",
            10: "NT_UTSNAME",
            11: "NT_LWPSTATUS",
            12: "NT_LWPSINFO",
            13: "NT_PRFPXREG"
        }

        return generic_types.get(note_type, f"NT_UNKNOWN_{note_type}")

    def _format_note_description(self, note_desc, note_type: int, note_name: str) -> str:
        """Format note description based on type for human readability."""
        try:
            if not note_desc:
                return ""

            # Handle build ID specifically (common case)
            if note_name == "GNU" and note_type == 3:  # NT_GNU_BUILD_ID
                if isinstance(note_desc, bytes):
                    return binascii.hexlify(note_desc).decode('ascii')
                return str(note_desc)

            # Handle ABI tag
            if note_name == "GNU" and note_type == 1:  # NT_GNU_ABI_TAG
                if isinstance(note_desc, bytes) and len(note_desc) >= 16:
                    # ABI tag contains OS, major, minor, subminor
                    import struct
                    try:
                        os_val, major, minor, subminor = struct.unpack('<IIII', note_desc[:16])
                        os_names = {0: "Linux", 1: "GNU", 2: "Solaris", 3: "FreeBSD"}
                        os_name = os_names.get(os_val, f"OS_{os_val}")
                        return f"{os_name} {major}.{minor}.{subminor}"
                    except:
                        pass

            # For binary data, convert to hex
            if isinstance(note_desc, bytes):
                # Limit size for very large descriptions
                if len(note_desc) > 256:
                    return binascii.hexlify(note_desc[:256]).decode('ascii') + "..."
                return binascii.hexlify(note_desc).decode('ascii')

            # For string data
            if isinstance(note_desc, str):
                return note_desc

            # Fallback
            return str(note_desc)

        except Exception as e:
            self.log.error(f"Error formatting note description: {e}")
            return str(note_desc) if note_desc else ""

    def _extract_note_data(self, note, section_name: str) -> ELFNote:
        """Extract data from a single note entry."""
        try:
            # Get note properties
            note_name = note.get('n_name', '').rstrip('\x00') if note.get('n_name') else ""
            note_type_raw = note.get('n_type', 0)
            note_desc_raw = note.get('n_desc', b'')

            # Handle note_type - pyelftools may return string or int
            if isinstance(note_type_raw, str):
                # pyelftools returned the type as a string like 'NT_GNU_BUILD_ID'
                note_type_str = note_type_raw
                # Map known string types to integers
                note_type_map = {
                    'NT_GNU_ABI_TAG': 1,
                    'NT_GNU_HWCAP': 2,
                    'NT_GNU_BUILD_ID': 3,
                    'NT_GNU_GOLD_VERSION': 4,
                    'NT_GNU_PROPERTY_TYPE_0': 5,
                    'NT_PRSTATUS': 1,
                    'NT_FPREGSET': 2,
                    'NT_PRPSINFO': 3,
                    'NT_TASKSTRUCT': 4,
                    'NT_AUXV': 5,
                    'NT_PSTATUS': 6,
                    'NT_FPREGS': 7,
                    'NT_PSINFO': 8,
                    'NT_PRCRED': 9,
                    'NT_UTSNAME': 10,
                    'NT_LWPSTATUS': 11,
                    'NT_LWPSINFO': 12,
                    'NT_PRFPXREG': 13,
                }
                note_type = note_type_map.get(note_type_raw, 0)
            else:
                note_type = note_type_raw
                # Get human-readable type string
                note_type_str = self._get_note_type_string(note_type, note_name)

            # Format description
            note_desc = self._format_note_description(note_desc_raw, note_type, note_name)

            return ELFNote(
                note_name=note_name,
                note_type=note_type,
                note_type_str=note_type_str,
                note_desc=note_desc,
                note_section=section_name
            )

        except Exception as e:
            self.log.error(f"Error extracting note data: {e}")
            return None

    def _extract_notes_from_sections(self, elf) -> List[Dict]:
        """Extract notes from note sections."""
        notes = []

        try:
            # Look for note sections
            for section in elf.iter_sections():
                if (section.name and
                    section.name.startswith('.note') and
                    hasattr(section, 'iter_notes')):

                    section_name = section.name
                    try:
                        for note in section.iter_notes():
                            note_data = self._extract_note_data(note, section_name)
                            if note_data:
                                notes.append(note_data)
                    except Exception as e:
                        self.log.debug(f"Could not process notes in section {section_name}: {e}")

        except Exception as e:
            self.log.error(f"Error extracting notes from sections: {e}")

        return notes

    def _extract_notes_from_segments(self, elf) -> List[Dict]:
        """Extract notes from PT_NOTE segments."""
        notes = []

        try:
            # Look for PT_NOTE segments
            for segment in elf.iter_segments():
                if segment.header.get('p_type') == 'PT_NOTE':
                    segment_name = f"PT_NOTE_segment_{segment.header.get('p_offset', 0)}"

                    try:
                        if hasattr(segment, 'iter_notes'):
                            for note in segment.iter_notes():
                                note_data = self._extract_note_data(note, segment_name)
                                if note_data:
                                    notes.append(note_data)
                    except Exception as e:
                        self.log.debug(f"Could not process notes in segment: {e}")

        except Exception as e:
            self.log.error(f"Error extracting notes from segments: {e}")

        return notes

    def tag(self):
        return Tag.ELF_NOTES.value if hasattr(Tag, 'ELF_NOTES') else "elf_notes"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                all_notes = []

                # Extract notes from note sections
                section_notes = self._extract_notes_from_sections(elf)
                all_notes.extend(section_notes)

                # Extract notes from PT_NOTE segments
                segment_notes = self._extract_notes_from_segments(elf)
                all_notes.extend(segment_notes)

                # Remove duplicates (same note might appear in section and segment)
                unique_notes = []
                seen_notes = set()
                for note in all_notes:
                    note_key = (note.note_name, note.note_type, note.note_desc)
                    if note_key not in seen_notes:
                        seen_notes.add(note_key)
                        unique_notes.append(note)

                return unique_notes

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_notes = result
            return self.elf_notes

        except Exception as e:
            self.log.error(f"Error extracting ELF notes {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_notes
        elif exporter_type == "ClickHouseExporter":
            try:
                # Return valid empty structure if no notes found
                # None is reserved for actual errors

                # Prepare data arrays for all notes
                data = []
                current_time = datetime.now(timezone.utc)
                for note in self.elf_notes:
                    row = [
                        self.sha256,
                        self.md5,
                        self.sha1,
                        note.note_name,
                        note.note_type,
                        note.note_type_str,
                        note.note_desc,
                        note.note_section,
                        current_time
                    ]
                    data.append(row)

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'note_name', 'note_type', 'note_type_str',
                    'note_desc', 'note_section',
                    'analysis_date'
                ]

                if not data:
                    return None

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'LowCardinality(String)', 'UInt32', 'LowCardinality(String)',
                    'String CODEC(ZSTD(3))', 'LowCardinality(String)',
                    'DateTime64(3, \'UTC\')'
                ]

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

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