Orestis Akribopoulos

14 papers B 3C 1Misc 1Journal 3Unranked 6
YearRankTypeTitle / Venue / Authors
2017 conf
COMPSAC (2)
Orestis Akribopoulos, Ioannis Chatzigiannakis, Christos Tselios, Athanasios Antoniou
2013 B conf
Intelligent Environments
Orestis Akribopoulos, Marios Logaras, Georgios Mylonas, Ioannis Chatzigiannakis, Irene Mavrommati
2013 conf
Panhellenic Conference on Informatics
Orestis Akribopoulos, Dimitrios Amaxilatis, Dimitrios Dimakopolos, Ioannis Chatzigiannakis
2012 conf
MOBILWARE
Orestis Akribopoulos, Dimitrios Amaxilatis, Vasileios Georgitzikis, Marios Logaras, Vasileios Keramidas, Konstantinos Kontodimas, Evangelos Lagoudianakis, Nikolaos Nikoloutsakos, Vasileios Papoutsakis, Ioannis P. Prevezanos, Georgios P. Pyrgeris, Stylianos Tsampas, Vasileios Voutsas, Ioannis Chatzigiannakis
2012 C conf
ETFA
Orestis Akribopoulos, Dimitrios Amaxilatis, Ioannis Chatzigiannakis
2011 conf
Panhellenic Conference on Informatics
Orestis Akribopoulos, Vasileios Georgitzikis, Anastasia Protopapa, Ioannis Chatzigiannakis
2011 J jnl
CoRR
Orestis Akribopoulos, Vasileios Georgitzikis, Christos Koninis, Ioannis Papavasileiou, Ioannis Chatzigiannakis
2011 J jnl
J. Syst. Softw.
Ioannis Chatzigiannakis, Georgios Mylonas, Panagiotis C. Kokkinos, Orestis Akribopoulos, Marios Logaras, Irene Mavrommati
2010 B conf
SPAA
Ioannis Chatzigiannakis, Georgios Mylonas, Orestis Akribopoulos, Marios Logaras, Panagiotis C. Kokkinos, Paul G. Spirakis
2010 J jnl
CoRR
Ioannis Chatzigiannakis, Georgios Mylonas, Orestis Akribopoulos, Marios Logaras, Panagiotis C. Kokkinos, Paul G. Spirakis
2009 conf
Advances in Computer Entertainment Technology
Orestis Akribopoulos, Marios Logaras, Nikos Vasilakis, Panagiotis C. Kokkinos, Georgios Mylonas, Ioannis Chatzigiannakis, Paul G. Spirakis
2009 conf
Advances in Computer Entertainment Technology
Orestis Akribopoulos, Marios Logaras, Nikos Vasilakis, Panagiotis C. Kokkinos, Georgios Mylonas, Ioannis Chatzigiannakis, Paul G. Spirakis
2008 B conf
MASS
Orestis Akribopoulos, Dimitrios Bousis, Dionysios Efstathiou, Haris Koutsouridis, Marios Logaras, Andreas Loukas, Alexandros Nafas, Georgios Oikonomou, Irini Thireou, Nikos Vasilakis, Panagiotis C. Kokkinos, Georgios Mylonas, Ioannis Chatzigiannakis
2008 Misc conf
SenSys
Orestis Akribopoulos, Marios Logaras, Nikos Vasilakis, Panagiotis C. Kokkinos, Georgios Mylonas, Ioannis Chatzigiannakis
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"