Rajiv Sabherwal

102 papers C 6Journal 83Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
Inf. Manag.
Rajiv Sabherwal, Mary Melinda Dunaway
2026 J jnl
J. Strateg. Inf. Syst.
Benoit Aubert, Rajiv Sabherwal
2025 conf
AMCIS
Wenwen Ding, Rajiv Sabherwal
2025 J jnl
Inf. Syst. Frontiers
Hamid Reza Nikkhah, Frederic Schlackl, Rajiv Sabherwal
2025 conf
AMCIS
Wenwen Ding, Rajiv Sabherwal
2024 J jnl
J. Manag. Inf. Syst.
Moksh Matta, Jinglu Jiang, Surinder S. Kahai, Rajiv Sabherwal
2024 J jnl
J. Inf. Technol.
Oliver Krancher, Rajiv Sabherwal, Ilan Oshri, Julia Kotlarsky
2024 J jnl
Comput. Hum. Behav.
Parvin Hashemi, Iris Reychav, Ankur Arora, Nour Sawaed, Rajiv Sabherwal, Joseph Azuri
2024 J jnl
Inf. Comput. Secur.
Hamid Reza Nikkhah, Varun Grover, Rajiv Sabherwal
2024 J jnl
J. Assoc. Inf. Syst.
Rajiv Sabherwal, Varun Grover
2024 J jnl
Comput. Hum. Behav.
Mary Macharia, Christina Serrano, Rajiv Sabherwal
2023 J jnl
Int. J. Inf. Manag.
Rajiv Sabherwal, Zach Steelman, Irma Becerra-Fernandez
2023 J jnl
Int. J. Heal. Inf. Syst. Informatics
Richard Kumi, Iris Reychav, Joseph Azuri, Rajiv Sabherwal
2023 J jnl
J. Syst. Inf. Technol.
Ali Balapour, Rajiv Sabherwal, Varun Grover
2022 J jnl
MIS Q.
Taha Havakhor, Sanjiv Sabherwal, Rajiv Sabherwal, Zachary R. Steelman
2022 J jnl
Inf. Technol. People
Hamid Reza Nikkhah, Rajiv Sabherwal
2022 J jnl
Behav. Inf. Technol.
Hamid Reza Nikkhah, Rajiv Sabherwal, Jalal Sarabadani
2021 J jnl
Int. J. Medical Informatics
Iris Reychav, Ankur Arora, Rajiv Sabherwal, Karina Polyak, Jun Sun, Joseph Azuri
2021 J jnl
J. Comput. Inf. Syst.
Hamid Reza Nikkhah, Franck Loic Soh Noume, Beverly A. Hodges-McDaniel, Rajiv Sabherwal
2021 J jnl
J. Comput. Inf. Syst.
Jong-Hyun Kim, Rajiv Sabherwal, Gee-Woo Bock, Han-Min Kim
2020 J jnl
Int. J. Inf. Manag.
Varun Grover, Rajiv Sabherwal
2020 J jnl
Int. J. Inf. Manag.
Ali Balapour, Hamid Reza Nikkhah, Rajiv Sabherwal
2019 J jnl
MIS Q.
Rajiv Sabherwal, Sanjiv Sabherwal, Taha Havakhor, Zachary R. Steelman
2019 J jnl
Comput. Hum. Behav.
Iris Reychav, Roni Beeri, Ali Balapour, Daphne Ruth Raban, Rajiv Sabherwal, Joseph Azuri
2019 J jnl
Int. J. Inf. Manag.
Ali Balapour, Iris Reychav, Rajiv Sabherwal, Joseph Azuri
2019 J jnl
MIS Q.
Tracy A. Jenkin, Yolande E. Chan, Rajiv Sabherwal
2019 J jnl
Inf. Syst. Res.
Zachary R. Steelman, Taha Havakhor, Rajiv Sabherwal, Sanjiv Sabherwal
2019 J jnl
Inf. Syst. Res.
Taha Havakhor, Rajiv Sabherwal, Zachary R. Steelman, Sanjiv Sabherwal
2019 J jnl
MIS Q. Executive
Mary C. Lacity, Rajiv Sabherwal, Carsten Sørensen
2018 conf
HICSS
Jeffrey K. Mullins, Rajiv Sabherwal
2018 J jnl
Inf. Syst. J.
Taha Havakhor, Amr A. Soror, Rajiv Sabherwal
2018 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2018 conf
AMCIS
Hamid Reza Nikkhah, Franck Loic Soh Noume, Beverly A. Hodges-McDaniel, Rajiv Sabherwal
2018 J jnl
Eur. J. Inf. Syst.
Nicole Forsgren, Rajiv Sabherwal, Alexandra Durcikova
2018 conf
AMCIS
Hamid Reza Nikkhah, Ali Balapour, Rajiv Sabherwal
2018 J jnl
Comput. Hum. Behav.
Richard Kumi, Rajiv Sabherwal
2018 J jnl
CoRR
Peng Huang, Atreyi Kankanhalli, Harris Kyriakou, Rajiv Sabherwal
2018 J jnl
J. Manag. Inf. Syst.
Taha Havakhor, Rajiv Sabherwal
2017 C conf
ICIS
Hamid Reza Nikkhah, Rajiv Sabherwal
2017 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2017 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2017 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2017 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2017 conf
AMCIS
Hamid Reza Nikkhah, Rajiv Sabherwal
2017 conf
AMCIS
Ali Balapour, Rajiv Sabherwal
2016 J jnl
MIS Q. Executive
Zachary R. Steelman, Mary C. Lacity, Rajiv Sabherwal
2016 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2016 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2016 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2016 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2016 conf
PACIS
Aihua Yan, Mary C. Lacity, Rajiv Sabherwal
2016 J jnl
Comput. Hum. Behav.
Iris Reychav, Richard Kumi, Rajiv Sabherwal, Joseph Azuri
2015 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2015 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2015 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2015 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2015 J jnl
MIS Q.
Rajiv Sabherwal, Anand Jeyaraj
2014 conf
AMCIS
Taha Havakhor, Amr A. Soror, Rajiv Sabherwal
2014 C conf
ICIS
Jeff Mullins, Rajiv Sabherwal
2013 conf
HICSS
Taha Havakhor, Rajiv Sabherwal
2012 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal
2012 J jnl
Decis. Sci.
I-Chieh Hsu, Rajiv Sabherwal
2012 C conf
ICIS
Mary Melinda Dunaway, Rajiv Sabherwal
2011 conf
HICSS
Nicole F. Velasquez, Rajiv Sabherwal, Alexandra Durcikova
2011 J jnl
IEEE Trans. Engineering Management
I-Chieh Hsu, Rajiv Sabherwal
2011 C conf
ICIS
Rajiv Sabherwal
2011 ch.
Encyclopedia of Knowledge Management
Irma Becerra-Fernandez, Rajiv Sabherwal
2010 J jnl
Inf. Syst. J.
Rajiv Sabherwal, Varun Grover
2010 J jnl
J. Inf. Technol.
Rajiv Sabherwal
2010 J jnl
Inf. Syst. Res.
Walter J. Ferrier, Clyde W. Holsapple, Rajiv Sabherwal
2010 C ed.
ICIS
Rajiv Sabherwal, Mary Sumner
2009 conf
HICSS
Nicole F. Velasquez, Alexandra Durcikova, Rajiv Sabherwal
2009 J jnl
J. Assoc. Inf. Syst.
Chee Wei Phang, Atreyi Kankanhalli, Rajiv Sabherwal
2008 J jnl
Inf. Organ.
Anand Jeyaraj, Rajiv Sabherwal
2008 J jnl
IEEE Trans. Engineering Management
Gee-Woo Bock, Rajiv Sabherwal, Zhijiang Qian
2007 J jnl
IEEE Trans. Engineering Management
Grover S. Kearns, Rajiv Sabherwal
2007 J jnl
Inf. Syst. Res.
Walter J. Ferrier, Clyde W. Holsapple, Rajiv Sabherwal
2007 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal, Sanjiv Sabherwal
2007 J jnl
J. Manag. Inf. Syst.
Grover S. Kearns, Rajiv Sabherwal
2006 J jnl
IEEE Trans. Engineering Management
Yolande E. Chan, Rajiv Sabherwal, Jason Bennett Thatcher
2006 J jnl
Manag. Sci.
Rajiv Sabherwal, Anand Jeyaraj, Charles Chowa
2005 J jnl
IEEE Trans. Engineering Management
Rajiv Sabherwal, Irma Becerra-Fernandez
2005 J jnl
Decis. Sci.
Rajiv Sabherwal, Sanjiv Sabherwal
2005 J jnl
Int. J. Knowl. Learn.
Irma Becerra-Fernandez, Rajiv Sabherwal
2003 J jnl
Decis. Sci.
Rajiv Sabherwal, Irma Becerra-Fernandez
2003 J jnl
Inf. Manag.
Rajiv Sabherwal, Maung K. Sein, George M. Marakas
2003 J jnl
J. Inf. Technol.
Rajiv Sabherwal, Michael Newman
2003 J jnl
Inf. Syst. Res.
Vivek Choudhury, Rajiv Sabherwal
2003 J jnl
Inf. Organ.
Rajiv Sabherwal
2001 J jnl
Inf. Syst. Res.
Rajiv Sabherwal, Yolande E. Chan
2001 J jnl
J. Manag. Inf. Syst.
Irma Becerra-Fernandez, Rajiv Sabherwal
1999 J jnl
Commun. ACM
Rajiv Sabherwal
1996 J jnl
MIS Q.
Michael Newman, Rajiv Sabherwal
1995 J jnl
J. Manag. Inf. Syst.
Rajiv Sabherwal, William R. King
1995 J jnl
Inf. Syst. Res.
Rajiv Sabherwal, Daniel Robey
1994 J jnl
J. Strateg. Inf. Syst.
Dennis Klinger, Joyce J. Elam, Rajiv Sabherwal
1993 J jnl
Inf. Manag.
Myun Joong Cheon, Varun Grover, Rajiv Sabherwal
1992 J jnl
Inf. Manag.
William R. King, Rajiv Sabherwal
1991 J jnl
Inf. Manag.
Rajiv Sabherwal, William R. King
1989 C conf
ICIS
Michael Newman, Rajiv Sabherwal
1989 J jnl
Inf. Manag.
Varun Grover, Rajiv Sabherwal
1988 J jnl
Inf. Manag.
Varun Grover, Albert L. Lederer, Rajiv Sabherwal
redb/extractors/decompiler/_archive/DecompileGhidra-old.py
← Index redb/extractors/decompiler/_archive/DecompileGhidra-old.py python
from hashlib import sha256
import inspect
from pathlib import Path
import subprocess
import json
import subprocess
import json
import os
import tempfile
import uuid
import shutil
import time

from dotenv import load_dotenv

from redb.extractors.enum import Tag
from redb.models.dataclasses import Decompiled
from redb.extractors.extractor import Extractor


class DecompileGhidra(Extractor):
    def __init__(
        self,
        filepath,
        log,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
    ):
        super().__init__(
            filepath, log, index_prefix, elastic_index, known_benign, known_malicious
        )
        self.log.debug(inspect.currentframe().f_code.co_name)
        self.elastic_index = self.index_prefix + "-ghidra"
        self.ghidra_path = "/opt/ghidra"
        self.java_script_path = (
            self.ghidra_path
            + "/Ghidra/Features/Base/ghidra_scripts/GhidraDecompilerScript.java"
        )
        self.decompiled = None
        load_dotenv()
        self.decompiled_folder = os.getenv("DECOMPILED_FOLDER", "/opt/decompiled")
        self.log.debug(f"Decompiled folder: {self.decompiled_folder}")

    def run_command(self, cmd, env=None):
        try:
            self.log.info(f"Starting command: {' '.join(cmd)}")
            start_time = time.time()
            TIMEOUT = 1200  # 20 minutes in seconds
            process = subprocess.Popen(
                cmd, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
            )

            while True:
                output = process.stdout.readline()
                if output:
                    print(output.strip())
                if process.poll() is not None:
                    break
            try:
                stdout, stderr = process.communicate(timeout=TIMEOUT)
            except subprocess.TimeoutExpired:
                process.kill()
                self.log.error(f"Ghidra timed out after {TIMEOUT} seconds")
                # raise subprocess.TimeoutExpired(process.args, TIMEOUT)
                return None
            end_time = time.time()

            self.log.debug(
                f"Command finished. Execution time: {end_time - start_time:.2f} seconds"
            )
            self.log.debug(f"Return code: {process.returncode}")

            if process.returncode != 0:
                self.log.error(f"Error output:\n{stderr}")
                return None
            return stdout
        except Exception as e:
            self.log.error(f"Error running command {' '.join(cmd)}: {e}")
            return None

    def analyze_binary(self):
        self.log.debug(f"Ghidra path: {self.ghidra_path}")
        self.log.debug(f"Binary path: {self.filepath}")
        self.log.debug(f"Java script path: {self.java_script_path}")

        # Check if Java script exists
        if not os.path.exists(self.java_script_path):
            self.log.error(f"Error: Java script not found at {self.java_script_path}")
            return None

        # Set up environment variables
        env = os.environ.copy()
        java_home = "/usr/lib/jvm/java-17-openjdk-amd64"  # Adjust this path if needed
        env["JAVA_HOME"] = java_home
        env["PATH"] = f"{java_home}/bin:{env['PATH']}"
        env["LD_LIBRARY_PATH"] = f"{java_home}/lib:{env.get('LD_LIBRARY_PATH', '')}"
        env["DECOMPILED_FOLDER"] = self.decompiled_folder

        # Print environment variables for debugging
        self.log.debug(f"JAVA_HOME: {env['JAVA_HOME']}")
        self.log.debug(f"PATH: {env['PATH']}")
        self.log.debug(f"LD_LIBRARY_PATH: {env['LD_LIBRARY_PATH']}")

        # Check Ghidra installation
        analyzeHeadless_path = f"{self.ghidra_path}/support/analyzeHeadless"
        self.log.debug(
            f"analyzeHeadless exists: {os.path.exists(analyzeHeadless_path)}"
        )

        # Create a temporary project directory
        project_path = tempfile.gettempdir() + "/ghidra_" + str(uuid.uuid4())
        os.makedirs(project_path, exist_ok=True)
        self.log.debug(f"Created temporary project path: {project_path}")
        output_file = ""

        try:
            # Run Ghidra's headless analyzer
            analyze_cmd = [
                analyzeHeadless_path,
                project_path,
                "TempProject",
                "-import",
                self.filepath,
                "-postScript",
                self.java_script_path,
                self.sha256,
                "-deleteProject",
            ]

            result = self.run_command(analyze_cmd, env=env)
            if result is None:
                return None

            # Read the output JSON file
            output_file = os.path.join(
                self.decompiled_folder, self.sha256 + "-decompiled.json"
            )
            if os.path.exists(output_file):
                with open(output_file, "r") as f:
                    functions = json.load(f)
                return functions
            else:
                self.log.error(
                    f"Output file {output_file} not found. Ghidra analysis may have failed."
                )
                return None
        finally:
            # Clean up
            if os.path.exists(project_path):
                shutil.rmtree(project_path)
                self.log.debug(f"Deleted temporary project path: {project_path}")

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            functions = self.analyze_binary()

            if functions:
                self.log.info(f"Extracted functions from {self.filepath}:")
                for func in functions:
                    id = sha256(func["address"].encode()).hexdigest()
                    self.decompiled = Decompiled(
                        _id=id,
                        decompiled_function_name=func["name"],
                        decompiled_function_address=func["address"],
                        decompiled_function=func["decompiled"],
                    )
                    self.export_to_elastic([self.decompiled])
            else:
                self.log.error("No decompiled functions extracted.")
            return True
        except Exception as e:
            self.log.error(f"Error extracting decompiled information: {e}")
            return None

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