Walter Allasia

17 papers B 1C 1Journal 1Unranked 13
YearRankTypeTitle / Venue / Authors
2021 conf
ECML/PKDD (4)
Michele Starnini, Charalampos E. Tsourakakis, Maryam Zamanipour, André Panisson, Walter Allasia, Marco Fornasiero, Laura Li Puma, Valeria Ricci, Silvia Ronchiadin, Angela Ugrinoska, Marco Varetto, Dario Moncalvo
2018 ch.
Personal Multimedia Preservation
Francesco Gallo, Claudia Niederée, Walter Allasia
2015 conf
ICME Workshops
Walter Allasia, Enrico Palumbo
2015 conf
ICME Workshops
Jacopo Pellegrino, Marco Maggiora, Walter Allasia
2015 conf
RTSI
Marcella Ugliano, Luca Bianchi, Andrea Bottino, Walter Allasia
2015 B conf
SISAP
Enrico Palumbo, Walter Allasia
2014 conf
iPRES
Walter Allasia, Wo Chang, Sergiu Gordea, Werner Bailer
2013 conf
DASIP
Federico Francesco Barresi, Walter Allasia
2013 conf
DASIP
Francesco Rosso, Francesco Gallo, Walter Allasia, Enrico Licata, Paolo Prinetto, Daniele Rolfo, Pascal Trotta, Alain Favetto, Marco Paleari, Paolo Ariano
2011 conf
QI
Elisa Maria Todarello, Walter Allasia, Mario Stroppiana
2010 conf
INTL-DPIF
Matthew Addis, Walter Allasia, Werner Bailer, Laurent Boch, Francesco Gallo, Richard Wright
2009 J jnl
Informatica (Slovenia)
Walter Allasia, Francesco Gallo, Marco Milanesio, Rossano Schifanella
2008 conf
DEXA Workshops
Walter Allasia, Fabrizio Falchi, Francesco Gallo, Mouna Kacimi, Aaron Kaplan, Jonathan Mamou, Yosi Mass, Nicola Orio
2008 conf
WIAMIS
Walter Allasia, Francesco Gallo, Marco Milanesio, Rossano Schifanella, Filippo Chiariglione, Angelo Difino
2008 C conf
ICIW
Walter Allasia, Francesco Gallo, Marco Milanesio, Rossano Schifanella
2007 conf
MS
Walter Allasia, Fabrizio Falchi, Francesco Gallo, Nicola Orio
2006 conf
AXMEDIS
Alberto Messina, Laurent Boch, Giorgio Dimino, Werner Bailer, Peter Schallauer, Walter Allasia, Milton Groppo, M. Vigilante, Roberto Basili
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"