Ilze Andersone

19 papers Misc 2Journal 7Unranked 10
YearRankTypeTitle / Venue / Authors
2025 conf
ICCAI
Ilze Andersone
2025 conf
ICCAI
Ilze Birzniece, Ilze Andersone, Janis Bicans, Signe Balina
2022 conf
AIAI (2)
Ilze Andersone, Agris Nikitenko, Valdis Bergs, Uldis Jansons
2022 conf
ICMLT
Agris Nikitenko, Ilze Andersone, Andrejs Zujevs, Elina Gaile-Sarkane, Valdis Bergs
2022 J jnl
Complex Syst. Informatics Model. Q.
Agris Nikitenko, Signe Balina, Andrejs Dubrovskis, Ilze Andersone, Ilze Birzniece
2022 conf
ICMLT
Ilze Birzniece, Ilze Andersone, Agris Nikitenko, Liga Zvirbule
2021 conf
ICAART (1)
Ilze Andersone
2020 conf
ICAART (1)
Ilze Andersone
2019 J jnl
Robotics
Ilze Andersone
2014 Misc conf
PAAMS
Agris Nikitenko, Janis Grundspenkis, Aleksis Liekna, Martins Ekmanis, Guntis Kulikovskis, Ilze Andersone
2014 Misc conf
PAAMS
Ilze Andersone, Agris Nikitenko
2013 conf
CAiSE Forum
Alla Anohina-Naumeca, Ilze Andersone, Zohra Bellahsene, Remi Coletta, Vita Graudina, Janis Grundspenkis, DuyHoa Ngo
2013 J jnl
Appl. Comput. Syst.
Ilze Andersone, Aleksis Liekna, Agris Nikitenko
2013 J jnl
Appl. Comput. Syst.
Agris Nikitenko, Aleksis Liekna, Martins Ekmanis, Guntis Kulikovskis, Ilze Andersone
2012 J jnl
Appl. Comput. Syst.
Ilze Andersone
2011 J jnl
Sci. J. Riga Tech. Univ. Ser. Comput. Sci.
Ilze Andersone
2010 J jnl
Sci. J. Riga Tech. Univ. Ser. Comput. Sci.
Ilze Andersone
2009 conf
ADBIS (Workshops)
Marite Kirikova, Renate Strazdina, Ilze Andersone, Uldis Sukovskis
2008 conf
ISD
Renate Strazdina, Julija Stecjuka, Ilze Andersone, Marite Kirikova
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"