Jamie C. Gorman

33 papers A* 1B 4Misc 3Journal 20Unranked 5
YearRankTypeTitle / Venue / Authors
2025 conf
AAAI Spring Symposia
Elmira Zahmat Doost, Xiaoyun Yin, Shiwen Zhou, David A. Grimm, Nancy J. Cooke, Jamie C. Gorman
2025 J jnl
Hum. Factors
Jamie C. Gorman, David A. Grimm, F. Eric Robinson, Jennifer L. Winner, Christopher W. Wiese, Cameron Roudebush
2025 conf
AAAI Spring Symposia
Elmira Zahmat Doost, Jamie C. Gorman
2025 A* conf
CHI
Wen Duan, Christopher Flathmann, Nathan J. McNeese, Matthew J. Scalia, Ruihao Zhang, Jamie C. Gorman, Guo Freeman, Shiwen Zhou, Allyson Ivy Hauptman, Xiaoyun Yin
2025 J jnl
Comput. Hum. Behav.
Wen Duan, Shiwen Zhou, Matthew J. Scalia, Guo Freeman, Jamie C. Gorman, Michael T. Tolston, Nathan J. McNeese, Gregory J. Funke
2025 J jnl
CoRR
Xiaoyun Yin, Elmira Zahmat Doost, Shiwen Zhou, Garima Arya Yadav, Jamie C. Gorman
2024 J jnl
Hum. Factors
Jamie C. Gorman, Travis J. Wiltshire
2024 J jnl
Hum. Factors
Julie L. Harrison, Shiwen Zhou, Matthew J. Scalia, David A. Grimm, Mustafa Demir, Nathan J. McNeese, Nancy J. Cooke, Jamie C. Gorman
2024 J jnl
AI Mag.
Sidney K. D'Mello, Quentin Biddy, Thomas Breideband, Jeffrey Bush, Michael Alan Chang, Arturo Cortez, Jeffrey Flanigan, Peter W. Foltz, Jamie C. Gorman, Leanne M. Hirshfield, Monlin Monica Ko, Nikhil Krishnaswamy, Rachel Lieber, James H. Martin, Martha Palmer, William R. Penuel, Thomas M. Philip, Sadhana Puntambekar, James Pustejovsky, Jason G. Reitman, Tamara Sumner, Michael Tissenbaum, Lyn Walker, Jacob Whitehill
2024 J jnl
Top. Cogn. Sci.
Christopher W. Myers, Nancy J. Cooke, Jamie C. Gorman, Nathan J. McNeese
2024 B conf
RO-MAN
Mason O. Smith, Sunny Amatya, Ashish Amresh, Jamie C. Gorman, Matthew Johnson, Nancy J. Cooke, Wenlong Zhang
2024 J jnl
Proc. ACM Hum. Comput. Interact.
Wen Duan, Shiwen Zhou, Matthew J. Scalia, Xiaoyun Yin, Nan Weng, Ruihao Zhang, Guo Freeman, Nathan J. McNeese, Jamie C. Gorman, Michael T. Tolston
2023 B conf
ICMI
G. S. Rajshekar Reddy, Lucca Eloy, Rachel Dickler, Jason G. Reitman, Samuel L. Pugh, Peter W. Foltz, Jamie C. Gorman, Julie L. Harrison, Leanne M. Hirshfield
2023 J jnl
Hum. Factors
Craig J. Johnson, Mustafa Demir, Nathan J. McNeese, Jamie C. Gorman, Alexandra T. Wolff, Nancy J. Cooke
2023 J jnl
Hum. Factors
Adam F. Werner, Jamie C. Gorman
2022 B conf
CogSci
Julie L. Harrison, Sona Anita Jain, Terri A. Dunbar, Jamie C. Gorman, Sashank Varma
2021 J jnl
IEEE Trans. Hum. Mach. Syst.
Mustafa Demir, Nathan J. McNeese, Jamie C. Gorman, Nancy J. Cooke, Christopher W. Myers, David A. Grimm
2020 J jnl
Hum. Factors
Jamie C. Gorman, David A. Grimm, Ronald H. Stevens, Trysha Galloway, Ann M. Willemsen-Dunlap, Donald J. Halpin
2020 Misc conf
CogSIMA
Craig J. Johnson, Mustafa Demir, Garrett M. Zabala, Hongbei He, David A. Grimm, Cody Radigan, Alexandra T. Wolff, Nancy J. Cooke, Nathan J. McNeese, Jamie C. Gorman
2019 Misc conf
CogSIMA
Mustafa Demir, Nathan J. McNeese, Craig J. Johnson, Jamie C. Gorman, David A. Grimm, Nancy J. Cooke
2019 B conf
CogSci
Wayne D. Gray, Ray S. Perez, Jerad Moxley, David Mendonça, Jamie C. Gorman
2018 Misc conf
CogSIMA
David A. Grimm, Mustafa Demir, Jamie C. Gorman, Nancy J. Cooke
2016 J jnl
Hum. Factors
Jamie C. Gorman, Melanie J. Martin, Terri A. Dunbar, Ronald H. Stevens, Trysha L. Galloway, Polemnia G. Amazeen, Aaron D. Likens
2013 conf
HCI (24)
Jamie C. Gorman, Melanie J. Martin, Terri A. Dunbar, Ronald H. Stevens, Trysha Galloway
2013 J jnl
Hum. Factors
Jamie C. Gorman, Michael J. Crites
2013 J jnl
Cogn. Sci.
Nancy J. Cooke, Jamie C. Gorman, Christopher W. Myers, Jasmine L. Duran
2012 J jnl
Hum. Factors
Jamie C. Gorman, Nancy J. Cooke, Polemnia G. Amazeen, Shannon Fouse
2012 J jnl
Hum. Factors
Nancy J. Cooke, Andrew Duchon, Jamie C. Gorman, Joann Keyton, Anne Miller
2011 conf
HCI (20)
Ronald H. Stevens, Jamie C. Gorman
2011 conf
HCI (20)
Jamie C. Gorman
2010 J jnl
Hum. Factors
Jamie C. Gorman, Nancy J. Cooke
2010 J jnl
Hum. Factors
Eduardo Salas, Jamie C. Gorman
2010 J jnl
Hum. Factors
Jamie C. Gorman, Nancy J. Cooke, Polemnia G. Amazeen
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"