Oded Green

57 papers A* 1A 3B 1Misc 4Journal 18Unranked 29
YearRankTypeTitle / Venue / Authors
2025 conf
HPEC
Siddharth Samsi, Dan Campbell, Emanuel Scoullos, Oded Green
2025 J jnl
CoRR
Siddharth Samsi, Dan Campbell, Emanuel Scoullos, Oded Green
2025 conf
SC Workshops
Oded Green, Joe Eaton, Alok Tripathy, Corey Nolet, Justin Luitjens
2025 J jnl
CoRR
Yulun Wang, Esteban Ginez, Jamie Friel, Yuval Baum, Jin-Sung Kim, Alex Shih, Oded Green
2023 conf
ICCS (4)
Luca Cappelletti, Tommaso Fontana, Oded Green, David A. Bader
2022 conf
IA3@SC
Ahmedur Rahman Shovon, Landon Richard Dyken, Oded Green, Thomas Gilray, Sidharth Kumar
2022 conf
HPEC
Oded Green, Corey Nolet, Joe Eaton
2022 J jnl
ACM J. Exp. Algorithmics
Alexander van der Grinten, Elisabetta Bergamini, Oded Green, David A. Bader, Henning Meyerhenke
2021 Misc conf
HiPC
Oded Green, Zhihui Du, Sanyamee Patel, Zehui Xie, Hang Liu, David A. Bader
2021 J jnl
CoRR
Oded Green
2021 J jnl
ACM Trans. Parallel Comput.
Oded Green
2021 conf
HPEC
Oded Green
2021 J jnl
CoRR
Alok Tripathy, Oded Green
2020 conf
IEEE BigData
Alok Tripathy, Oded Green
2020 conf
HPEC
Todd Hricik, David A. Bader, Oded Green
2019 J jnl
CoRR
Oded Green
2019 conf
HPEC
James Fox, Alok Tripathy, Oded Green
2019 conf
IA3@SC
Oded Green, James Fox, Jeffrey Young, Jun Shirako, David A. Bader
2019 J jnl
CoRR
Oded Green, James Fox, Jeffrey Young, Jun Shirako, David A. Bader
2019 conf
FTXS@SC
Piyush Sao, Christian Engelmann, Srinivas Eswar, Oded Green, Richard W. Vuduc
2019 conf
HPEC
Xiaojing An, Kasimir Gabert, James Fox, Oded Green, David A. Bader
2018 conf
IA3@SC
Alex Watkins, Oded Green
2018 J jnl
IEEE Trans. Image Process.
Oded Green
2018 conf
HPEC
James Fox, Oded Green, Kasimir Gabert, Xiaojing An, David A. Bader
2018 conf
HPEC
Federico Busato, Oded Green, Nicola Bombieri, David A. Bader
2018 conf
HPEC
Oded Green, James Fox, Alex Watkins, Alok Tripathy, Kasimir Gabert, Euna Kim, Xiaojing An, Kumar Aatish, David A. Bader
2018 conf
IEEE BigData
Alok Tripathy, Fred Hohman, Duen Horng Chau, Oded Green
2018 A conf
ESA
Alexander van der Grinten, Elisabetta Bergamini, Oded Green, David A. Bader, Henning Meyerhenke
2018 J jnl
CoRR
Alexander van der Grinten, Elisabetta Bergamini, Oded Green, David A. Bader, Henning Meyerhenke
2018 conf
HPEC
Alok Tripathy, Oded Green
2017 J jnl
IEEE Trans. Parallel Distributed Syst.
Chirag Jain, Patrick Flick, Tony Pan, Oded Green, Srinivas Aluru
2017 conf
HPEC
Shijie Zhou, Kartik Lakhotia, Shreyas G. Singapura, Hanqing Zeng, Rajgopal Kannan, Viktor K. Prasanna, James Fox, Euna Kim, Oded Green, David A. Bader
2017 Misc conf
HiPC
Devavret Makkar, David A. Bader, Oded Green
2017 J jnl
CoRR
Yongchao Liu, Tony Pan, Oded Green, Srinivas Aluru
2017 conf
HPEC
Oded Green, James Fox, Euna Kim, Federico Busato, Nicola Bombieri, Kartik Lakhotia, Shijie Zhou, Shreyas G. Singapura, Hanqing Zeng, Rajgopal Kannan, Viktor K. Prasanna, David A. Bader
2016 conf
FTXS@HPDC
Piyush Sao, Oded Green, Chirag Jain, Richard W. Vuduc
2016 J jnl
CoRR
Chirag Jain, Patrick Flick, Tony Pan, Oded Green, Srinivas Aluru
2016 conf
HPEC
Oded Green, David A. Bader
2015 B conf
SPAA
Oded Green, Marat Dukhan, Richard W. Vuduc
2014 J jnl
XRDS
Oded Green, Yoav Green
2014 J jnl
CoRR
Oded Green, Marat Dukhan, Richard W. Vuduc
2014 conf
IA3@SC
Oded Green, Pavan Yalamanchili, Lluís-Miquel Munguía
2014
Oded Green
2014 conf
PPAA@PPoPP
Oded Green, Lluís-Miquel Munguía, David A. Bader
2014 J jnl
CoRR
Oded Green, Saher Odeh, Yitzhak Birk
2014 J jnl
Parallel Comput.
Oded Green, Yitzhak Birk
2014 conf
IA3@SC
Oded Green
2013 A conf
SC
Oded Green, Yitzhak Birk
2013 Misc conf
HiPC
Robert McColl, Oded Green, David A. Bader
2013 A* conf
KDD
Ted E. Senator, Henry G. Goldberg, Alex Memory, William T. Young, Brad Rees, Robert Pierce, Daniel Huang, Matthew Reardon, David A. Bader, Edmond Chow, Irfan A. Essa, Joshua Jones, Vinay Bettadapura, Duen Horng Chau, Oded Green, Oguz Kaya, Anita Zakrzewska, Erica Briscoe, Rudolph L. Mappus IV, Robert McColl, Lora Weiss, Thomas G. Dietterich, Alan Fern, Weng-Keen Wong, Shubhomoy Das, Andrew Emmott, Jed Irvine, Jay Yoon Lee, Danai Koutra, Christos Faloutsos, Daniel D. Corkill, Lisa Friedland, Amanda Gentzel, David D. Jensen
2013 J jnl
CoRR
Oded Green, Lior David, Ami Galperin, Yitzhak Birk
2013 Misc conf
ICCS
Oded Green, David A. Bader
2013 conf
SocialCom
Oded Green, David A. Bader
2013 conf
PMAM
Oded Green, Yitzhak Birk
2012 conf
SocialCom/PASSAT
Oded Green, Robert McColl, David A. Bader
2012 A conf
ICS
Oded Green, Robert McColl, David A. Bader
2012 conf
IPDPS Workshops
Saher Odeh, Oded Green, Zahi Mwassi, Oz Shmueli, Yitzhak Birk
redb/extractors/js_extractors/js_deobfuscation.py
← Index redb/extractors/js_extractors/js_deobfuscation.py python
import hashlib
import inspect
import re
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.js_extractor import JSExtractor
from redb.extractors.js_extractors.js_patterns import PATTERNS

# String literals of 4+ characters; only used by the deobfuscation diff to count
# strings revealed after deobfuscation. Compiled once at module load.
_STRING_LITERAL_4PLUS_RE = re.compile(r"[\"\']([^\"\']{4,})[\"\']")


class JSDeobfuscationExtractor(JSExtractor):
    """Compute pre/post-deobfuscation metrics for a JS sample.

    The actual deobfuscation pass (external tool with jsbeautifier fallback)
    lives on `JSContext.deobfuscated` and is cached per sample, so any other
    extractor that needs the deobfuscated text reads the same value without
    re-running the subprocess. Configure the external tool via env vars:
        JS_DEOBFUSCATOR_PATH    Path or name (default: webcrack)
        JS_DEOBFUSCATE_TIMEOUT  Seconds (default: 60)
    """

    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.deobfuscation_result = None
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def extract(self):
        src = self.js_source
        if not src:
            return None

        deobfuscated, deobfuscator_used = self._context.deobfuscated
        if deobfuscated is None:
            return None

        original_size = len(src)
        original_entropy = self._context.text_entropy
        deobfuscated_size = len(deobfuscated)
        deobfuscated_entropy = self._calculate_text_entropy(deobfuscated)
        size_change_ratio = round(deobfuscated_size / original_size, 4) if original_size else 0.0

        # Strings revealed by deobfuscation: matched literals are extracted from
        # both versions and the set difference is the count of "new" strings.
        original_strings = set(_STRING_LITERAL_4PLUS_RE.findall(src))
        deobfuscated_strings = set(_STRING_LITERAL_4PLUS_RE.findall(deobfuscated))
        new_strings = deobfuscated_strings - original_strings

        # Suspicious APIs revealed by deobfuscation. Both sides of the diff
        # come from JSContext caches: the raw scan is computed once for the
        # whole pipeline; the deobfuscated scan is computed once and reused
        # by JSSuspiciousAPIsExtractor's revealed_by_deobf rows.
        original_apis = {n for n in self._context.scan if n in PATTERNS}
        deobfuscated_apis = set(self._context.scan_deobfuscated)
        new_apis = deobfuscated_apis - original_apis

        deobfuscated_sha256 = hashlib.sha256(deobfuscated.encode('utf-8')).hexdigest()

        self.deobfuscation_result = {
            'deobfuscator_used': deobfuscator_used,
            'deobfuscation_successful': True,
            'original_size': original_size,
            'deobfuscated_size': deobfuscated_size,
            'size_change_ratio': size_change_ratio,
            'original_entropy': original_entropy,
            'deobfuscated_entropy': deobfuscated_entropy,
            'new_strings_found': len(new_strings),
            'new_apis_found': len(new_apis),
            'deobfuscated_sha256': deobfuscated_sha256,
        }
        return self.deobfuscation_result

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ClickHouseExporter":
            if not self.deobfuscation_result:
                return None

            r = self.deobfuscation_result
            current_time = datetime.now(timezone.utc)
            data = [[
                self.sha256,
                r['deobfuscator_used'],
                int(r['deobfuscation_successful']),
                r['original_size'],
                r['deobfuscated_size'],
                r['size_change_ratio'],
                r['original_entropy'],
                r['deobfuscated_entropy'],
                r['new_strings_found'],
                r['new_apis_found'],
                r['deobfuscated_sha256'],
                current_time,
            ]]

            column_names = [
                "sha256", "deobfuscator_used", "deobfuscation_successful",
                "original_size", "deobfuscated_size", "size_change_ratio",
                "original_entropy", "deobfuscated_entropy",
                "new_strings_found", "new_apis_found",
                "deobfuscated_sha256", "analysis_date",
            ]

            column_type_names = [
                "FixedString(64)", "LowCardinality(String)", "UInt8",
                "UInt64", "UInt64", "Float64",
                "Float64", "Float64",
                "UInt32", "UInt32",
                "FixedString(64)", "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

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