Carla Lopes

27 papers A* 1A 4B 3Journal 4Unranked 15
YearRankTypeTitle / Venue / Authors
2025 conf
AMCIS
Carla Lopes, João Barata
2024 B conf
KES
Carla Lopes, João Barata
2018 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Jorge Proença, Carla Lopes, Michael Tjalve, Andreas Stolcke, Sara Candeias, Fernando Perdigão
2017 A conf
INTERSPEECH
Jorge Proença, Carla Lopes, Michael Tjalve, Andreas Stolcke, Sara Candeias, Fernando Perdigão
2017 J jnl
Speech Commun.
Jorge Proença, Carla Lopes, Michael Tjalve, Andreas Stolcke, Sara Candeias, Fernando Perdigão
2017 A conf
INTERSPEECH
Jorge Proença, Carla Lopes, Michael Tjalve, Andreas Stolcke, Sara Candeias, Fernando Perdigão
2016 conf
IberSPEECH
Jorge Proença, Dirce Celorico, Carla Lopes, Sara Candeias, Fernando Perdigão
2016 conf
PROPOR
Jorge Proença, Dirce Celorico, Carla Lopes, Miguel Sales Dias, Michael Tjalve, Andreas Stolcke, Sara Candeias, Fernando Perdigão
2016 B conf
LREC
Jorge Proença, Dirce Celorico, Sara Candeias, Carla Lopes, Fernando Perdigão
2015 A conf
INTERSPEECH
Jorge Proença, Dirce Celorico, Sara Candeias, Carla Lopes, Fernando Perdigão
2014 conf
PROPOR
Arlindo Veiga, Carla Lopes, Luís Sá, Fernando Perdigão
2014 B conf
LREC
Sara Candeias, Dirce Celorico, Jorge Proença, Arlindo Veiga, Carla Lopes, Fernando Perdigão
2012 conf
PROPOR
Carla Lopes, Arlindo Veiga, Fernando Perdigão
2012 J jnl
EURASIP J. Adv. Signal Process.
Carla Lopes, Fernando Perdigão
2012 J jnl
Linguamática
Arlindo Veiga, Carla Lopes, Dirce Celorico, Jorge Proença, Fernando Perdigão, Sara Candeias
2011 conf
ICPhS
Arlindo Veiga, Sara Candeias, Carla Lopes, Fernando Perdigão
2010 conf
PROPOR
Carla Lopes, Arlindo Veiga, Fernando Perdigão
2009 conf
EUSIPCO
Carla Lopes, Fernando Perdigão
2009 A* conf
SIGIR
Carla Lopes
2008 conf
SIGMAP
Alexandre M. A. Maciel, Arlindo Veiga, Cláudio Neves, José Lopes, Carla Lopes, Fernando Perdigão, Luís Sá
2008 conf
PROPOR
José Lopes, Cláudio Neves, Arlindo Veiga, Alexandre M. A. Maciel, Carla Lopes, Fernando Perdigão, Luís Sá
2008 conf
PROPOR
Carla Lopes, Fernando Perdigão
2007 conf
EUSIPCO
Carla Lopes, Fernando Perdigão
2007 conf
ISSPA
Carla Lopes, Fernando Perdigão
2006 conf
SIGMAP
Pedro A. Amado Assunção, Carla Lopes, Rafael F. S. Caldeirinha
2006 A conf
INTERSPEECH
Carla Lopes, Fernando Perdigão
2004 conf
WOB
Carla Lopes
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"