Carl D. Laird

32 papers C 2Misc 1Journal 28Unranked 1
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Laurens R. Lueg, Victor Alves, Daniel Schicksnus, John R. Kitchin, Carl D. Laird, Lorenz T. Biegler
2025 J jnl
CoRR
Daniel Ovalle, Lorenz T. Biegler, Ignacio E. Grossmann, Carl D. Laird, Mateo Dulce Rubio
2025 J jnl
CoRR
Daniel Ovalle, Stefan Mazzadi, Carl D. Laird, Ignacio E. Grossmann, Joshua L. Pulsipher
2025 J jnl
Comput. Chem. Eng.
Daniel Ovalle, Stefan Mazzadi, Carl D. Laird, Ignacio E. Grossmann, Joshua L. Pulsipher
2025 J jnl
Comput. Chem. Eng.
Ethan M. Sunshine, Carolina Colombo Tedesco, Sneha A. Akhade, Matthew J. McNenly, John R. Kitchin, Carl D. Laird
2025 J jnl
Comput. Chem. Eng.
Ethan M. Sunshine, Giovanna Bucci, Tanusree Chatterjee, Shyam Deo, Victoria M. Ehlinger, Wenqin Li, Thomas Moore, Corey Myers, Wenyu Sun, Bo-Xun Wang, Mengyao Yuan, John R. Kitchin, Carl D. Laird, Matthew J. McNenly, Sneha A. Akhade
2024 J jnl
Comput. Chem. Eng.
Georgia Stinchfield, Joshua C. Morgan, Sakshi Naik, Lorenz T. Biegler, John C. Eslick, Clas Jacobson, David C. Miller, John D. Siirola, Miguel A. Zamarripa, Chen Zhang, Qi Zhang, Carl D. Laird
2024 J jnl
Comput. Chem. Eng.
David E. Bernal Neira, Carl D. Laird, Laurens Lueg, Stuart M. Harwood, Dimitar Trenev, Davide Venturelli
2023 J jnl
CoRR
Sergio I. Bugosen, Carl D. Laird, Robert B. Parker
2023 J jnl
Comput. Chem. Eng.
Bashar L. Ammari, Emma S. Johnson, Georgia Stinchfield, Taehun Kim, Michael Bynum, William E. Hart, Joshua Pulsipher, Carl D. Laird
2023 J jnl
INFORMS J. Comput.
Jose S. Rodriguez, Robert B. Parker, Carl D. Laird, Bethany Nicholson, John D. Siirola, Michael Bynum
2022 J jnl
Comput. Chem. Eng.
Robert B. Parker, Bethany Nicholson, John D. Siirola, Carl D. Laird, Lorenz T. Biegler
2022 J jnl
CoRR
Francesco Ceccon, Jordan Jalving, Joshua Haddad, Alexander Thebelt, Calvin Tsay, Carl D. Laird, Ruth Misener
2022 J jnl
J. Mach. Learn. Res.
Francesco Ceccon, Jordan Jalving, Joshua Haddad, Alexander Thebelt, Calvin Tsay, Carl D. Laird, Ruth Misener
2022 J jnl
Comput. Chem. Eng.
William Bradley, Jinhyeun Kim, Zachary A. Kilwein, Logan Blakely, Michael Eydenberg, Jordan Jalvin, Carl D. Laird, Fani Boukouvala
2021 J jnl
Comput. Chem. Eng.
Daniel Casas-Orozco, Daniel J. Laky, Vivian Wang, Mesfin Abdi, Xin Feng, Erin Wood, Carl D. Laird, Gintaras V. Reklaitis, Zoltán K. Nagy
2020 J jnl
Comput. Chem. Eng.
Jose S. Rodriguez, Carl D. Laird, Victor M. Zavala
2018 J jnl
Comput. Chem. Eng.
Jianfeng Liu, Michael Bynum, Anya Castillo, Jean-Paul Watson, Carl D. Laird
2018 J jnl
Comput. Chem. Eng.
Jose S. Rodriguez, Bethany Nicholson, Carl D. Laird, Victor M. Zavala
2016 J jnl
Comput. Chem. Eng.
Yankai Cao, Arpan Seth, Carl D. Laird
2016 J jnl
Comput. Optim. Appl.
Yankai Cao, Carl D. Laird, Victor M. Zavala
2015 conf
CDC
Jia Kang, Naiyuan Chiang, Carl D. Laird, Victor M. Zavala
2014 J jnl
Comput. Chem. Eng.
Jia Kang, Yankai Cao, Daniel P. Word, Carl D. Laird
2014 J jnl
Comput. Optim. Appl.
Daniel P. Word, Jia Kang, Johan Åkesson, Carl D. Laird
2013 J jnl
Comput. Chem. Eng.
Mitch Serpas, Gabriel Hackebeil, Carl D. Laird, Juergen Hahn
2012 J jnl
Comput. Chem. Eng.
Sean Legg, A. J. Benavides-Serrano, John D. Siirola, Jean-Paul Watson, S. G. Davis, Are Bratteteig, Carl D. Laird
2012 C conf
ACC
Loveleena Bansal, Yunfei Chu, Carl D. Laird, Juergen Hahn
2012 J jnl
Comput. Chem. Eng.
Angelica V. Mann, Sean A. McKenna, William E. Hart, Carl D. Laird
2010 C conf
ACC
Daniel P. Word, George Abbott, Derek Cummings, Carl D. Laird
2010 J jnl
Comput. Chem. Eng.
Yu Zhu, Sean Legg, Carl D. Laird
2008 J jnl
Discret. Optim.
Pierre Bonami, Lorenz T. Biegler, Andrew R. Conn, Gérard Cornuéjols, Ignacio E. Grossmann, Carl D. Laird, Jon Lee, Andrea Lodi, François Margot, Nicolas W. Sawaya, Andreas Wächter
2006 Misc conf
HPSC
Carl D. Laird, Lorenz T. Biegler
redb/extractors/pe_extractors/pe_overlay.py
← Index redb/extractors/pe_extractors/pe_overlay.py python
from hashlib import md5, sha1, sha256
import inspect
from datetime import datetime, timezone
from typing import Any

import magic
from magika import Magika

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEOverlay


class PEOverlayExtractor(PEExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            pe,
        )
        self.elastic_index = self.index_prefix + "-pe_overlay"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_pe_overlay(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        overlay = self.pe.get_overlay()
        if overlay:
            return PEOverlay(
                _id=sha256(overlay).hexdigest(),
                overlay_size=len(overlay),
                overlay_entropy=self.calculate_entropy(overlay),
                overlay_offset=self.pe.get_overlay_data_start_offset(),
                overlay_mimetype=magic.from_buffer(overlay, mime=True),
                overlay_type=magic.from_buffer(overlay),
                overlay_magika=Magika().identify_bytes(overlay).output.ct_label,
                overlay_sha256=sha256(overlay).hexdigest(),
                overlay_sha1=sha1(overlay).hexdigest(),
                overlay_md5=md5(overlay).hexdigest(),
            )
        return None

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            overlay = self._extract_pe_overlay()
            # self.export_to_elastic([overlay])  # Let the exporters handle this
            return overlay
        except Exception as e:
            self.log.error(f"Error extracting PE overlay: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            overlay = self.extract()
            if overlay is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            data.append([
                self.sha256,              # sha256
                self.md5,                 # md5
                self.sha1,                # sha1
                overlay.overlay_size,     # overlay_size
                overlay.overlay_entropy,  # overlay_entropy
                overlay.overlay_offset,   # overlay_offset
                overlay.overlay_mimetype, # overlay_mimetype
                overlay.overlay_type,     # overlay_type
                overlay.overlay_magika,   # overlay_magika
                overlay.overlay_sha256,   # overlay_sha256
                overlay.overlay_sha1,     # overlay_sha1
                overlay.overlay_md5,      # overlay_md5
                current_time             # analysis_date
            ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'overlay_size', 'overlay_entropy',
                'overlay_offset', 'overlay_mimetype', 'overlay_type', 'overlay_magika',
                'overlay_sha256', 'overlay_sha1', 'overlay_md5',
                'analysis_date'
            ]
            
            if not data:
                return None

            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'UInt64', 'Float64', 'UInt64',
                'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(String)',
                'FixedString(64)', 'FixedString(40)', 'FixedString(32)',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

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