Oana Balmau

32 papers A* 2A 3B 1Misc 2Journal 11Unranked 13
YearRankTypeTitle / Venue / Authors
2026 A conf
EuroSys
Rahma Nouaji, Stella Bitchebe, Ricardo Macedo, Oana Balmau
2026 conf
CHEOPS@EuroSys
Abrar Fuad, Shubham Vashisth, Oana Balmau, Bettina Kemme
2026 conf
EuroMLSys@EuroSys
Sami Abuzakuk, Oana Balmau, Jiaxuan Chen, Anne-Marie Kermarrec, Rafael Pires, Ramya Prabhu, Martijn de Vos
2025 conf
EuroMLSys
Oana Balmau, Anne-Marie Kermarrec, Rafael Pires, André Loureiro Espírito Santo, Martijn de Vos, Milos Vujasinovic
2025 J jnl
CoRR
Oana Balmau, Anne-Marie Kermarrec, Rafael Pires, André Loureiro Espírito Santo, Martijn de Vos, Milos Vujasinovic
2025 J jnl
CoRR
Zachary Doucet, Rishi Sharma, Martijn de Vos, Rafael Pires, Anne-Marie Kermarrec, Oana Balmau
2025 J jnl
CoRR
Rúben Adão, Zhongjie Wu, Changjun Zhou, Oana Balmau, João Paulo, Ricardo Macedo
2025 J jnl
Proc. VLDB Endow.
Rúben Adão, Zhongjie Wu, Changjun Zhou, Oana Balmau, João Paulo, Ricardo Macedo
2025 J jnl
CoRR
Stella Bitchebe, Oana Balmau
2025 J jnl
CoRR
Rahma Nouaji, Stella Bitchebe, Ricardo Macedo, Oana Balmau
2024 Misc conf
SEC
Pritish Mishra, Nelson Bore, Brian Ramprasad, Myles Thiessen, Moshe Gabel, Alexandre da Silva Veith, Oana Balmau, Eyal de Lara
2024 J jnl
ACM SIGOPS Oper. Syst. Rev.
Sebastian Rolon, Oana Balmau
2024 conf
EdgeSys@EuroSys
Vinicius Dantas de Lima Melo, Myles Thiessen, Aleksey Panas, Alexandre da Silva Veith, Keijiro Yano, Oana Balmau, Eyal de Lara
2024 J jnl
Dagstuhl Reports
Oana Balmau, Matthias Boehm, Ana Klimovic, Peter R. Pietzuch, Pinar Tözün
2024 conf
EuroMLSys@EuroSys
Rahma Nouaji, Stella Bitchebe, Oana Balmau
2024 conf
EdgeSys@EuroSys
Yuqin Yan, Pritish Mishra, Wei Huang, Aastha Mehta, Oana Balmau, David Lie
2024 A conf
Middleware
Dufy Teguia, Jiaxuan Chen, Stella Bitchebe, Oana Balmau, Alain Tchana
2023 conf
CHEOPS@EuroSys
Sebastian Rolon, Oana Balmau
2022 J jnl
SIGMOD Rec.
Oana Balmau
2022 Misc conf
SEC
Brian Ramprasad, Pritish Mishra, Myles Thiessen, Hongkai Chen, Alexandre da Silva Veith, Moshe Gabel, Oana Balmau, Abelard Chow, Eyal de Lara
2022 conf
CHEOPS@EuroSys
Yong Zhang, Xinran Xiong, Oana Balmau
2020 A* conf
OSDI
Baptiste Lepers, Oana Balmau, Karan Gupta, Willy Zwaenepoel
2019 A* conf
SOSP
Baptiste Lepers, Oana Balmau, Karan Gupta, Willy Zwaenepoel
2019 conf
USENIX ATC
Oana Balmau, Florin Dinu, Willy Zwaenepoel, Karan Gupta, Ravishankar Chandhiramoorthi, Diego Didona
2019 conf
NETYS
Oana Balmau, Rachid Guerraoui, Anne-Marie Kermarrec, Alexandre Maurer, Matej Pavlovic, Willy Zwaenepoel
2018 J jnl
CoRR
Oana Balmau, Rachid Guerraoui, Anne-Marie Kermarrec, Alexandre Maurer, Matej Pavlovic, Willy Zwaenepoel
2018 J jnl
ACM Trans. Comput. Syst.
Oana Balmau, Florin Dinu, Willy Zwaenepoel, Karan Gupta, Ravishankar Chandhiramoorthi, Diego Didona
2017 A conf
EuroSys
Oana Balmau, Rachid Guerraoui, Vasileios Trigonakis, Igor Zablotchi
2017 conf
USENIX ATC
Oana Balmau, Diego Didona, Rachid Guerraoui, Willy Zwaenepoel, Huapeng Yuan, Aashray Arora, Karan Gupta, Pavan Konka
2016 B conf
SPAA
Oana Balmau, Rachid Guerraoui, Maurice Herlihy, Igor Zablotchi
2014 conf
SmartGridComm
Oana Balmau, Dacfey Dzung, Abdulkadir Karaagaç, Vukasin Nesovic, Aleksandar Paunovic, Yvonne-Anne Pignolet, Niloufar Alipour Tehrani
2014 conf
SmartGridComm
Oana Balmau, Dacfey Dzung, Yvonne-Anne Pignolet
redb/extractors/pe_extractors/pe_sections.py
← Index redb/extractors/pe_extractors/pe_sections.py python
import base64
import hashlib
import inspect
from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PESection
from datetime import datetime, timezone
from typing import Any


class PESectionExtractor(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_sections"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_sections(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        sections = []
        for section in self.pe.sections:
            try:
                name = self.process_binary_string(section.Name)
            except Exception as e:
                name = "UnableToDecode"
                self.log.warning(
                    f'Unable to store section Name "{section.Name}" for {self.hash.sha256}'
                    f" exception {e}"
                )
            sec_sha256 = section.get_hash_sha256()
            sec_md5 = section.get_hash_md5()
            # sec_entropy = "%.2f" % section.get_entropy()
            sec_entropy = section.get_entropy()
            pe_section = PESection(
                _id=hashlib.sha256(
                    name.encode()
                ).hexdigest(),  # usecase 8e035beb02a411f8a9e92d4cf184ad34f52bbd0a81a50c222cdd4706e4e45104, all section have same sha256
                section_name=name,
                section_name_b64=base64.b64encode(
                    section.Name.rstrip(b'\x00')
                ).decode(),  # base64.b64decode(b64) to decode
                section_v_addr=section.VirtualAddress,
                section_v_addr_hex=hex(section.VirtualAddress),
                section_v_size=section.Misc_VirtualSize,
                section_size=section.SizeOfRawData,
                section_pointer_to_raw_data=hex(section.PointerToRawData),
                section_md5=sec_md5,
                section_sha256=sec_sha256,
                section_entropy=sec_entropy,
            )
            sections.append(pe_section)
        return sections

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

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            sections = self.extract()
            if sections is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            for section in sections:
                data.append([
                    self.sha256,                          # sha256
                    self.md5,                             # md5
                    self.sha1,                            # sha1
                    section.section_name,                 # section_name
                    section.section_name_b64,             # section_name_b64
                    section.section_entropy,              # section_entropy
                    section.section_sha256,               # section_sha256
                    section.section_md5,                  # section_md5
                    section.section_size,                 # section_size
                    section.section_v_addr,               # section_v_addr
                    section.section_v_size,               # section_v_size
                    int(section.section_pointer_to_raw_data, 16),  # section_pointer_to_raw_data - convert from hex
                    current_time                          # analysis_date
                ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'section_name', 'section_name_b64',
                'section_entropy', 'section_sha256', 'section_md5', 'section_size',
                'section_v_addr', 'section_v_size', 'section_pointer_to_raw_data',
                'analysis_date'
            ]
            
            if not data:
                return None

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

            return (data, column_names, column_type_names)

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