Raja Parasuraman

56 papers A* 1B 2Journal 43Unranked 5
YearRankTypeTitle / Venue / Authors
2017 J jnl
Hum. Factors
Ewart J. de Visser, Samuel S. Monfort, Kimberly Goodyear, Li Lu, Martin O'Hara, Mary R. Lee, Raja Parasuraman, Frank Krueger
2017 J jnl
Hum. Factors
Ryan McKendrick, Ranjana K. Mehta, Hasan Ayaz, Melissa R. Scheldrup, Raja Parasuraman
2015 J jnl
Hum. Factors
Eric J. Blumberg, Cyrus K. Foroughi, Melissa R. Scheldrup, Matthew S. Peterson, Deborah A. Boehm-Davis, Raja Parasuraman
2014 conf
HCI (16)
Ewart J. de Visser, Marvin S. Cohen, Amos Freedy, Raja Parasuraman
2014 conf
AAAI Spring Symposia
Nisar Razzi Ahmed, Ewart de Visser, Tyler H. Shaw, Raja Parasuraman, Amira Mohammed-Amin, Mark Campbell
2014 J jnl
NeuroImage
Brian A. Coffman, Vincent P. Clark, Raja Parasuraman
2014 J jnl
Hum. Factors
Ranjana K. Mehta, Raja Parasuraman
2014 J jnl
NeuroImage
Ryan McKendrick, Hasan Ayaz, Ryan Olmstead, Raja Parasuraman
2014 J jnl
NeuroImage
Jeremy T. Nelson, R. Andy McKinley, Edward J. Golob, Joel S. Warm, Raja Parasuraman
2014 J jnl
Hum. Factors
Raja Parasuraman, Brian Kidwell, Ryan Olmstead, Ming-Kuan Lin, Ryan Jankord, Pamela M. Greenwood
2014 J jnl
NeuroImage
Maren Strenziok, Raja Parasuraman, Ellen Clarke, Dean S. Cisler, James C. Thompson, Pamela M. Greenwood
2014 J jnl
NeuroImage
Vincent P. Clark, Raja Parasuraman
2014 J jnl
J. Cogn. Neurosci.
Daniel M. Roberts, John R. Fedota, George A. Buzzell, Raja Parasuraman, Craig G. McDonald
2014 J jnl
Hum. Factors
Ryan McKendrick, Tyler H. Shaw, Ewart de Visser, Haneen Saqer, Brian Kidwell, Raja Parasuraman
2014 J jnl
Hum. Factors
Michael B. Dillard, Joel S. Warm, Gregory J. Funke, Matthew E. Funke, Victor S. Finomore, Gerald Matthews, Tyler H. Shaw, Raja Parasuraman
2014 conf
CHI Extended Abstracts
Laya Muralidharan, Ewart de Visser, Raja Parasuraman
2014 J jnl
Hum. Factors
Raja Parasuraman, Richard A. McKinley
2013 J jnl
Pers. Ubiquitous Comput.
Daniel Gartenberg, Ross Thornton, Masood Mortazavi, Dustin Pfannenstiel, Daniel Taylor, Raja Parasuraman
2012 J jnl
NeuroImage
James C. Thompson, Raja Parasuraman
2012 J jnl
NeuroImage
Raja Parasuraman, Yang Jiang
2012 J jnl
NeuroImage
Raja Parasuraman, James C. Christensen, Scott T. Grafton
2011 J jnl
Hum. Factors
Peter A. Hancock, Deborah R. Billings, Kristin E. Schaefer, Jessie Y. C. Chen, Ewart de Visser, Raja Parasuraman
2011 conf
HCI (21)
Christopher A. Miller, Tyler H. Shaw, Joshua D. Hamell, Adam Emfield, David J. Musliner, Ewart de Visser, Raja Parasuraman
2010 J jnl
Hum. Factors
Raja Parasuraman, Dietrich Manzey
2010 J jnl
Hum. Factors
Ericka Rovira, Raja Parasuraman
2009 J jnl
J. Cogn. Neurosci.
Pamela M. Greenwood, Ramya Sundararajan, Ming-Kuan Lin, Reshma Kumar, Karl J. Fryxell, Raja Parasuraman
2009 J jnl
NeuroImage
Shimin Fu, Yuxia Huang, Yuejia Luo, Yan Wang, John R. Fedota, Pamela M. Greenwood, Raja Parasuraman
2008 J jnl
IEEE Trans. Syst. Man Cybern. Part C
Thomas F. Sanquist, Pamela Doctor, Raja Parasuraman
2008 J jnl
Hum. Factors
Raja Parasuraman, Christopher D. Wickens
2008 J jnl
Hum. Factors
Raja Parasuraman, Glenn F. Wilson
2008 J jnl
Hum. Factors
Joel S. Warm, Raja Parasuraman, Gerald Matthews
2008 J jnl
NeuroImage
Shimin Fu, Marla Zinni, Peter Squire, Reshma Kumar, Daniel Caggiano, Raja Parasuraman
2007 J jnl
Hum. Factors
Christopher A. Miller, Raja Parasuraman
2007 J jnl
Hum. Factors
Ericka Rovira, Kathleen McGarry, Raja Parasuraman
2006 ch.
Neuroergonomics
Joel S. Warm, Raja Parasuraman
2006 ch.
Neuroergonomics
Shimin Fu, Raja Parasuraman
2006 ch.
Neuroergonomics
Matthew Rizzo, Raja Parasuraman
2006 A* conf
HRI
Peter Squire, J. Gregory Trafton, Raja Parasuraman
2006 ch.
Neuroergonomics
Raja Parasuraman, Matthew Rizzo
2006 book
Neuroergonomics
Raja Parasuraman, Matthew Rizzo
2005 J jnl
IEEE Trans. Syst. Man Cybern. Part A
Raja Parasuraman, Scott Galster, Peter Squire, Hiroshi Furukawa, Christopher A. Miller
2005 J jnl
Hum. Factors
Ulla Metzger, Raja Parasuraman
2005 J jnl
J. Cogn. Neurosci.
Pamela M. Greenwood, John A. Fossella, Raja Parasuraman
2004 J jnl
Commun. ACM
Raja Parasuraman, Christopher A. Miller
2003 B conf
SMC
Raja Parasuraman, Scott Galster, Christopher A. Miller
2003 J jnl
Hum. Factors
Rebecca A. Grier, Joel S. Warm, William N. Dember, Gerald Matthews, Traci L. Galinsky, James L. Szalma, Raja Parasuraman
2003 B conf
SMC
Christopher A. Miller, Raja Parasuraman
2001 J jnl
Hum. Factors
Ulla Metzger, Raja Parasuraman
2000 J jnl
IEEE Trans. Syst. Man Cybern. Part A
Raja Parasuraman, Thomas B. Sheridan, Christopher D. Wickens
2000 J jnl
Hum. Factors
Raja Parasuraman, Anthony J. Masalonis, Peter A. Hancock
2000 J jnl
Hum. Factors
Thomas B. Sheridan, Raja Parasuraman
1997 J jnl
Int. J. Hum. Comput. Stud.
Indramani L. Singh, Robert Molloy, Raja Parasuraman
1997 J jnl
Hum. Factors
Raja Parasuraman, Victor Riley
1996 J jnl
Hum. Factors
Raja Parasuraman, Mustapha Mouloua, Robert Molloy
1996 J jnl
Hum. Factors
Robert Molloy, Raja Parasuraman
1992 conf
IFIP Congress (2)
S. Parasuraman, Indramani L. Singh, Robert Molloy, Raja Parasuraman
redb/extractors/decompiler/_archive/ghidra-test.py
← Index redb/extractors/decompiler/_archive/ghidra-test.py python
import subprocess
import json
import os
import tempfile
import uuid
import shutil
import sys
import time


def run_command(cmd, env=None):
    try:
        print(f"Starting command: {' '.join(cmd)}")
        start_time = time.time()
        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

        stdout, stderr = process.communicate()
        end_time = time.time()

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

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


def analyze_binary(ghidra_path, binary_path, java_script_path):
    print(f"Ghidra path: {ghidra_path}")
    print(f"Binary path: {binary_path}")
    print(f"Java script path: {java_script_path}")

    # Check if Java script exists
    if not os.path.exists(java_script_path):
        print(f"Error: Java script not found at {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', '')}"

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

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

    print(f"Binary file exists: {os.path.exists(binary_path)}")

    # Check Java
    java_version = run_command(["java", "-version"], env=env)
    print(f"Java version: {java_version}")

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

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

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

        # Read the output JSON file
        output_file = "ghidra_output.json"
        if os.path.exists(output_file):
            with open(output_file, "r") as f:
                functions = json.load(f)
            return functions
        else:
            print(
                f"Output file {output_file} not found. Ghidra analysis may have failed."
            )
            # List files in the current directory
            print("Files in the current directory:")
            print("\n".join(os.listdir(".")))
            return None
    finally:
        # Clean up
        if os.path.exists(output_file):
            os.remove(output_file)
        if os.path.exists(project_path):
            shutil.rmtree(project_path)


# Example usage
if __name__ == "__main__":
    # if len(sys.argv) != 4:
    #     print("Usage: python script.py <ghidra_path> <binary_path> <java_script_path>")
    #     sys.exit(1)

    # ghidra_path = sys.argv[1]
    # binary_path = sys.argv[2]
    # java_script_path = sys.argv[3]

    ghidra_path = "/opt/ghidra"
    binary_path = "/home/p4c0/dev/redb/test_files/hello"
    java_script_path = (
        "/opt/ghidra/Ghidra/Features/Base/ghidra_scripts/GhidraDecompilerScript.java"
    )

    functions = analyze_binary(ghidra_path, binary_path, java_script_path)

    if functions:
        print(f"Extracted functions from {binary_path}:")
        for func in functions:
            print(f"\nFunction: {func['name']}")
            print(f"Address: {func['address']}")
            print(f"Decompiled code:\n{func['decompiled']}")
    else:
        print("Failed to extract functions.")