Iddo Bentov

49 papers A* 6A 1B 3Journal 27Unranked 11
YearRankTypeTitle / Venue / Authors
2024 conf
FC (2)
Deepak Maram, Mahimna Kelkar, Iddo Bentov, Ari Juels
2021 J jnl
IACR Cryptol. ePrint Arch.
Deepak Maram, Iddo Bentov, Mahimna Kelkar, Ari Juels
2021 conf
CSCML
Iddo Bentov, Pavel Hubácek, Tal Moran, Asaf Nadler
2020 A* conf
SP
Philip Daian, Steven Goldfeder, Tyler Kell, Yunqi Li, Xueyuan Zhao, Iddo Bentov, Lorenz Breidenbach, Ari Juels
2019 J jnl
CoRR
Philip Daian, Steven Goldfeder, Tyler Kell, Yunqi Li, Xueyuan Zhao, Iddo Bentov, Lorenz Breidenbach, Ari Juels
2019 B conf
AFT
Fan Zhang, Philip Daian, Iddo Bentov, Ian Miers, Ari Juels
2019 B conf
AFT
Patrick McCorry, Surya Bakshi, Iddo Bentov, Sarah Meiklejohn, Andrew Miller
2019 conf
CRYPTO (3)
Eli Ben-Sasson, Iddo Bentov, Yinon Horesh, Michael Riabzev
2019 conf
Financial Cryptography
Andrew Miller, Iddo Bentov, Surya Bakshi, Ranjit Kumaresan, Patrick McCorry
2019 A* conf
CCS
Iddo Bentov, Yan Ji, Fan Zhang, Lorenz Breidenbach, Philip Daian, Ari Juels
2018 A* conf
ICALP
Eli Ben-Sasson, Iddo Bentov, Yinon Horesh, Michael Riabzev
2018 A conf
ACSAC
Muoi Tran, Loi Luu, Min Suk Kang, Iddo Bentov, Prateek Saxena
2018 J jnl
IACR Cryptol. ePrint Arch.
Fan Zhang, Philip Daian, Iddo Bentov, Ari Juels
2018 J jnl
IACR Cryptol. ePrint Arch.
Patrick McCorry, Surya Bakshi, Iddo Bentov, Andrew Miller, Sarah Meiklejohn
2018 J jnl
IACR Cryptol. ePrint Arch.
Eli Ben-Sasson, Iddo Bentov, Yinon Horesh, Michael Riabzev
2017
Iddo Bentov
2017 conf
EUROCRYPT (3)
Eli Ben-Sasson, Iddo Bentov, Alessandro Chiesa, Ariel Gabizon, Daniel Genkin, Matan Hamilis, Evgenya Pergament, Michael Riabzev, Mark Silberstein, Eran Tromer, Madars Virza
2017 conf
Financial Cryptography Workshops
Iddo Bentov, Alex Mizrahi, Meni Rosenfeld
2017 J jnl
CoRR
Iddo Bentov, Alex Mizrahi, Meni Rosenfeld
2017 J jnl
Electron. Colloquium Comput. Complex.
Eli Ben-Sasson, Iddo Bentov, Yinon Horesh, Michael Riabzev
2017 conf
ASIACRYPT (2)
Iddo Bentov, Ranjit Kumaresan, Andrew Miller
2017 J jnl
CoRR
Iddo Bentov, Ranjit Kumaresan, Andrew Miller
2017 J jnl
IACR Cryptol. ePrint Arch.
Iddo Bentov, Ranjit Kumaresan, Andrew Miller
2017 J jnl
IACR Cryptol. ePrint Arch.
Muoi Tran, Loi Luu, Min Suk Kang, Iddo Bentov, Prateek Saxena
2017 J jnl
CoRR
Andrew Miller, Iddo Bentov, Ranjit Kumaresan, Patrick McCorry
2017 J jnl
IACR Cryptol. ePrint Arch.
Iddo Bentov, Yan Ji, Fan Zhang, Yunqi Li, Xueyuan Zhao, Lorenz Breidenbach, Philip Daian, Ari Juels
2017 J jnl
IACR Cryptol. ePrint Arch.
Iddo Bentov, Pavel Hubácek, Tal Moran, Asaf Nadler
2017 conf
EuroS&P Workshops
Andrew Miller, Iddo Bentov
2016 J jnl
Electron. Colloquium Comput. Complex.
Eli Ben-Sasson, Iddo Bentov, Ariel Gabizon, Michael Riabzev
2016 A* conf
CCS
Ranjit Kumaresan, Iddo Bentov
2016 J jnl
CoRR
Iddo Bentov, Ariel Gabizon, David Zuckerman
2016 J jnl
IACR Cryptol. ePrint Arch.
Eli Ben-Sasson, Iddo Bentov, Alessandro Chiesa, Ariel Gabizon, Daniel Genkin, Matan Hamilis, Evgenya Pergament, Michael Riabzev, Mark Silberstein, Eran Tromer, Madars Virza
2016 conf
Financial Cryptography Workshops
Iddo Bentov, Ariel Gabizon, Alex Mizrahi
2016 J jnl
Electron. Colloquium Comput. Complex.
Eli Ben-Sasson, Iddo Bentov, Ariel Gabizon, Michael Riabzev
2016 conf
Public Key Cryptography (2)
Eli Ben-Sasson, Iddo Bentov, Ivan Damgård, Yuval Ishai, Noga Ron-Zewi
2016 J jnl
IACR Cryptol. ePrint Arch.
Iddo Bentov, Rafael Pass, Elaine Shi
2016 J jnl
IACR Cryptol. ePrint Arch.
Iddo Bentov, Rafael Pass, Elaine Shi
2016 J jnl
CoRR
Andrew Miller, Iddo Bentov
2015 A* conf
CCS
Ranjit Kumaresan, Tal Moran, Iddo Bentov
2015 J jnl
Electron. Colloquium Comput. Complex.
Eli Ben-Sasson, Iddo Bentov, Ivan Bjerre Damgård, Yuval Ishai, Noga Ron-Zewi
2015 J jnl
IACR Cryptol. ePrint Arch.
Eli Ben-Sasson, Iddo Bentov, Ivan Damgård, Yuval Ishai, Noga Ron-Zewi
2014 J jnl
CoRR
Iddo Bentov, Ariel Gabizon, Alex Mizrahi
2014 conf
CRYPTO (2)
Iddo Bentov, Ranjit Kumaresan
2014 J jnl
IACR Cryptol. ePrint Arch.
Iddo Bentov, Ranjit Kumaresan
2014 A* conf
CCS
Ranjit Kumaresan, Iddo Bentov
2014 J jnl
CoRR
Adam Back, Iddo Bentov
2014 J jnl
SIGMETRICS Perform. Evaluation Rev.
Iddo Bentov, Charles Lee, Alex Mizrahi, Meni Rosenfeld
2014 J jnl
IACR Cryptol. ePrint Arch.
Iddo Bentov, Charles Lee, Alex Mizrahi, Meni Rosenfeld
2006 B conf
ALT
Nader H. Bshouty, Iddo Bentov
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.")