{"library":"pyelftools","title":"pyelftools","description":"pyelftools is a Python library for parsing and analyzing ELF files and DWARF debugging information. It provides a low-level interface to the structures within these binary formats, making it suitable for security research, reverse engineering, and compiler development. The current stable version is 0.32, with new features and bug fixes released periodically.","language":"python","status":"active","last_verified":"Wed May 20","install":{"commands":["pip install pyelftools"],"cli":null},"imports":["from elftools.elf.elffile import ELFFile","from elftools.dwarf.dwarfinfo import DWARFInfo","from elftools.elf.elffile import ET_CORE"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom elftools.elf.elffile import ELFFile\n\ndef analyze_elf(filepath):\n    if not os.path.exists(filepath):\n        print(f\"Error: File not found at {filepath}\")\n        return\n\n    try:\n        with open(filepath, 'rb') as f:\n            elf_file = ELFFile(f)\n            print(f\"\\nAnalyzing ELF: {filepath}\")\n            print(f\"  Class: {elf_file.elfclass} ({'64-bit' if elf_file.elfclass == 64 else '32-bit'})\")\n            print(f\"  Endianness: {'Little' if elf_file.little_endian else 'Big'}\")\n            print(f\"  Machine Arch: {elf_file.get_machine_arch()}\")\n            print(f\"  Entry Point: 0x{elf_file.header['e_entry']:x}\")\n\n            # Example: Iterate through sections\n            print(\"  Sections:\")\n            for section in elf_file.iter_sections():\n                print(f\"    - {section.name} (type: {section['sh_type']})\")\n\n            if elf_file.has_dwarf_info():\n                print(\"  Contains DWARF info.\")\n\n    except Exception as e:\n        print(f\"Error processing ELF file: {e}\")\n\n# Example usage: Replace with a path to a real ELF binary on your system\n# For demonstration, let's assume '/bin/ls' or a similar common binary exists.\n# On Windows, you might need a WSL path or a Linux VM for native ELF binaries.\n# For a true cross-platform example, you'd need to create a dummy ELF.\n# For this quickstart, assume a /bin/ls exists (common on Linux/macOS).\nif os.path.exists('/bin/ls'):\n    analyze_elf('/bin/ls')\nelif os.name == 'posix':\n    print(\"'/bin/ls' not found. Please provide a path to an ELF binary on your system to run this example.\")\nelse:\n    print(\"This quickstart needs an ELF binary (like '/bin/ls') to run. Not applicable on Windows without WSL.\")","lang":"python","description":"This quickstart demonstrates how to open an ELF file, extract basic header information, and iterate through its sections using `pyelftools`. It also checks for the presence of DWARF debugging information. Remember to replace `'/bin/ls'` with a valid path to an ELF executable on your system.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-20","installed_version":"0.32","pypi_latest":"0.32","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.2,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.14,"mem_mb":5.3,"disk_size":"19.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":5.3,"disk_size":"19.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.1,"mem_mb":5.3,"disk_size":"20M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.11,"mem_mb":5.3,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.24,"mem_mb":5.7,"disk_size":"21.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.28,"mem_mb":5.7,"disk_size":"21.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.2,"mem_mb":5.7,"disk_size":"22M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":5.7,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.24,"mem_mb":6,"disk_size":"13.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.26,"mem_mb":6,"disk_size":"13.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.23,"mem_mb":6,"disk_size":"14M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.24,"mem_mb":6,"disk_size":"14M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.24,"mem_mb":7.4,"disk_size":"12.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.26,"mem_mb":7,"disk_size":"12.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.22,"mem_mb":7.2,"disk_size":"13M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.24,"mem_mb":6.8,"disk_size":"13M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.13,"mem_mb":4.4,"disk_size":"18.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":4.4,"disk_size":"18.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.11,"mem_mb":4.4,"disk_size":"19M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyelftools","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.13,"mem_mb":4.4,"disk_size":"19M"}]}}