Oscar Barambones

57 papers B 2C 8Journal 34Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
Eur. J. Control
Mohammed Yousri Silaa, Aissa Bencherif, Oscar Barambones
2025 J jnl
Comput. Electr. Eng.
Jokin Uralde, Oscar Barambones, Jesus Sanchez, Isidro Calvo, Asier del Rio
2024 J jnl
Comput.
Maissa Farhat, Oscar Barambones
2024 J jnl
Sensors
Eneko Villar, Imanol Martín Toral, Isidro Calvo, Oscar Barambones, Pablo Fernández-Bustamante
2024 J jnl
Symmetry
Ilyas Rougab, Oscar Barambones, Mohammed Yousri Silaa, Ali Cheknane
2024 J jnl
Axioms
Ali Karami-Mollaee, Oscar Barambones
2024 J jnl
Comput.
Ali Karami-Mollaee, Oscar Barambones
2023 conf
ISIE
Fahimeh Shiravani, Jose Antonio Cortajarena, Patxi Alkorta, Mikel Gonzalez Perez, Oscar Barambones
2023 J jnl
Fuzzy Sets Syst.
Cristian Napole, Oscar Barambones, Mohamed Derbeli, Isidro Calvo
2023 J jnl
IEEE Access
Alejandro Rujas, Itsasne Landaburu, Victor M. Lopez-Martin, Oscar Barambones
2023 J jnl
Inf.
Asier del Rio, Oscar Barambones, Jokin Uralde, Eneko Artetxe, Isidro Calvo
2023 J jnl
Axioms
Ali Karami-Mollaee, Oscar Barambones
2023 J jnl
Sensors
Jokin Uralde, Eneko Artetxe, Oscar Barambones, Isidro Calvo, Pablo Fernández-Bustamante, Imanol Martin
2022 J jnl
Trans. Inst. Meas. Control
Ali Karami-Mollaee, Ali Asghar Shojaei, Oscar Barambones, Mohd Fauzi Othman
2022 J jnl
Symmetry
Cristian Napole, Mohamed Derbeli, Oscar Barambones
2022 J jnl
Eur. J. Control
Bo Wang, Mohamed Derbeli, Oscar Barambones, Amin Yousefpour, Hadi Jahanshahi, Stelios D. Bekiros, Ayman A. Aly, Mosleh M. Al-Harthi
2021 J jnl
Trans. Inst. Meas. Control
Lakhdar Bentouati, Ali Cheknane, Boumediène Benyoucef, Oscar Barambones
2021 J jnl
Int. J. Autom. Comput.
Maissa Farhat, Oscar Barambones, Lassaâd Sbita, Aymen Flah
2021 J jnl
J. Frankl. Inst.
Oscar Barambones, Jose Antonio Cortajarena, Isidro Calvo, José Maria González de Durana, Patxi Alkorta, Ali Karami-Mollaee
2021 J jnl
Sensors
Isidro Calvo, Eneko Villar, Cristian Napole, Aitor Fernández, Oscar Barambones, José Miguel Gil-García
2019 J jnl
J. Frankl. Inst.
Ali Karami-Mollaee, Hamed Tirandaz, Oscar Barambones
2019 J jnl
Trans. Inst. Meas. Control
Ali Karami-Mollaee, Hamed Tirandaz, Oscar Barambones
2018 J jnl
IEEE Trans. Educ.
Isidro Calvo, Itziar Cabanes, Jeronimo Quesada, Oscar Barambones
2018 J jnl
Trans. Inst. Meas. Control
Radhia Garraoui, Oscar Barambones, Mouna Ben Hamed, Lassaâd Sbita
2017 J jnl
Int. J. Autom. Comput.
Maissa Farhat, Oscar Barambones, Lassaâd Sbita, Aymen Flah
2016 conf
SOCO-CISIS-ICEUTE
Isidro Calvo, Jeronimo Quesada, Itziar Cabanes, Oscar Barambones
2016 C conf
ETFA
Andres Larrea, Oscar Barambones, Jose A. Ramos-Herran
2016 conf
ICIT
Patxi Alkorta, Oscar Barambones, F. Javier Vicandi, Jose Antonio Cortajarena, Itziar Martija
2015 conf
ICIT
Maissa Farhat, Oscar Barambones, Lassaâd Sbita, José Maria González de Durana
2015 conf
MED
Sergio Torres, Oscar Barambones, José Maria González de Durana, Francisco Marzabal, Enrique Kremers, Johannes Wirges
2015 conf
MED
Maissa Farhat, Oscar Barambones, Lassaâd Sbita
2015 C conf
ETFA
Oscar Barambones, José Maria González de Durana
2014 J jnl
J. Frankl. Inst.
Oscar Barambones, Patxi Alkorta, José Maria González de Durana
2014 J jnl
IEEE Trans. Ind. Electron.
Patxi Alkorta, Oscar Barambones, Jose Antonio Cortajarena, Asier Zubizarreta
2014 J jnl
IEEE Trans. Ind. Electron.
Oscar Barambones, Patxi Alkorta
2013 J jnl
J. Frankl. Inst.
Oscar Barambones
2012 conf
CSDM
Enrique Kremers, José González de Durana, Oscar Barambones, André Lachaud
2011 J jnl
J. Frankl. Inst.
Oscar Barambones, Patxi Alkorta
2011 conf
EUROCON
Oscar Barambones, Patxi Alkorta, Manuel de la Sen
2010 B conf
ICECCS
Enrique Kremers, Pablo Viejo, Oscar Barambones, José González de Durana
2010 B conf
IJCNN
Oscar Barambones
2010 C conf
ICARCV
Aitor J. Garrido Hernandez, Izaskun Garrido Hernandez, M. Goretti Sevillano, Modesto Amundarain, Mikel Alberdi, Oscar Barambones, Manuel de la Sen
2010 conf
ICINCO (3)
José González de Durana, Oscar Barambones, Enrique Kremers, Pablo Viejo
2009 C conf
ETFA
José González de Durana, Oscar Barambones
2009 C conf
ETFA
Oscar Barambones, José González de Durana
2008 conf
ICONIP (1)
José Manuel López-Guede, Manuel Graña, Ekaitz Zulueta, Oscar Barambones
2007 J jnl
Eur. J. Control
Oscar Barambones, Aitor J. Garrido
2007 C conf
ETFA
Oscar Barambones, Patxi Alkorta, Izaskun Garrido Hernandez, Aitor J. Garrido
2006 C conf
ETFA
Oscar Barambones, Aitor J. Garrido, Francisco Javier Maseda, Patxi Alkorta
2006 C conf
ISCAS
Manuel de la Sen, Aitor J. Garrido Hernandez, Juan Carlos Soto, Oscar Barambones, Francisco Javier Maseda, Izaskun Garrido Hernandez
2003 conf
ETFA (1)
Oscar Barambones, Aitor J. Garrido, Francisco Javier Maseda
2003 conf
ETFA (1)
Manuel de la Sen, Aitor J. Garrido, Oscar Barambones, Francisco Javier Maseda
2002 J jnl
Autom.
Oscar Barambones, Victor Etxebarria
2001 J jnl
Int. J. Syst. Sci.
Oscar Barambones, Victor Etxebarria
2000 J jnl
Cybern. Syst.
Oscar Barambones, Victor Etxebarria
2000 J jnl
Cybern. Syst.
Oscar Barambones, Victor Etxebarria
1999 conf
CIRA
Oscar Barambones, Victor Etxebarria
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.")