### Clone Repository and Setup Development Environment Source: https://github.com/HexRaysSA/ida-domain This snippet outlines the initial steps for setting up the development environment. It involves cloning the IDA Domain repository, navigating into the project directory, and synchronizing development dependencies using 'uv'. It also includes installing pre-commit hooks for code quality. ```shell git clone https://github.com/HexRaysSA/ida-domain.git cd ida-domain uv sync --extra dev uv run pre-commit install ``` -------------------------------- ### Example IDADIR Path (Shell) Source: https://pypi.org/project/ida-domain/ An example of how to set the IDADIR environment variable for a macOS IDA Pro installation. This helps the IDA Domain library locate the necessary IDA Pro files. ```Shell export IDADIR="/Applications/IDA Professional 9.1.app/Contents/MacOS/" ``` -------------------------------- ### Install IDA Domain Library Source: https://github.com/HexRaysSA/ida-domain Installs the IDA Domain library using pip. This is the primary method for getting started with the library. ```Python pip install ``` -------------------------------- ### Run Example Script Source: https://github.com/HexRaysSA/ida-domain This command executes a sample Python script located in the examples directory of the IDA Domain repository. It's a practical way to see the library in action. ```Shell uv run python examples/analyze_database.py ``` -------------------------------- ### Build and Serve Documentation Locally Source: https://github.com/HexRaysSA/ida-domain These commands are used to synchronize documentation assets and serve the documentation locally using MkDocs. Ensure you have the necessary tools installed. ```shell uv sync --extra docs uv run mkdocs serve ``` -------------------------------- ### Install ida-domain using pip Source: https://pypi.org/project/ida-domain/ This snippet shows the command to install the ida-domain package using pip, the Python package installer. It is the standard way to add Python libraries to your project. ```bash pip install ida-domain ``` -------------------------------- ### Install ida-domain using pip Source: https://github.com/HexRaysSA/ida-domain This command installs the ida-domain package from the Python Package Index (PyPI). Ensure you have pip installed and configured correctly. ```Shell pip install ida-domain ``` -------------------------------- ### Install IDA Domain Source: https://github.com/HexRaysSA/ida-domain Installs the IDA Domain Python package using pip. This is the primary method for setting up the library for use. ```shell pip install ida-domain ``` -------------------------------- ### Set up Development Environment with uv Source: https://github.com/HexRaysSA/ida-domain This sequence of shell commands sets up a development environment for the IDA Domain project using uv. It clones the repository, synchronizes dependencies including development tools, and installs pre-commit hooks. ```Shell git clone https://github.com/HexRaysSA/ida-domain.git cd ida-domain uv sync --extra dev uv run pre-commit install ``` -------------------------------- ### Analyze Database Example Source: https://github.com/HexRaysSA/ida-domain This command executes a Python script to analyze a database. It's part of the examples provided within the project to demonstrate usage. ```python uv run python examples/analyze_database.py ``` -------------------------------- ### Run Project Tests with Pytest Source: https://github.com/HexRaysSA/ida-domain This snippet details how to run the project's test suite. It requires setting the 'IDADIR' environment variable to point to the IDA installation directory. The tests are executed using pytest, managed through the 'uv' tool. ```shell uv sync --extra dev uv run pytest ``` -------------------------------- ### Run IDA Domain Tests with pytest Source: https://github.com/HexRaysSA/ida-domain This command executes the test suite for the IDA Domain project using pytest. It requires the `IDADIR` environment variable to be set, pointing to the IDA installation directory. ```Shell uv sync --extra dev uv run pytest ``` -------------------------------- ### Set IDADIR Environment Variable Source: https://github.com/HexRaysSA/ida-domain Sets the IDADIR environment variable to point to the IDA Pro installation directory. This is a prerequisite for using the IDA Domain library. ```Shell export IDADIR="[IDA Installation Directory]" ``` ```Shell export IDADIR="/Applications/IDA Professional 9.1.app/Contents/MacOS/" ``` -------------------------------- ### Set IDADIR Environment Variable (Shell) Source: https://pypi.org/project/ida-domain/ This command sets the IDADIR environment variable to the specified IDA Pro installation directory. This is a prerequisite for using the IDA Domain library if the 'idapro' Python package is not already configured. ```Shell export IDADIR="[IDA Installation Directory]" ``` -------------------------------- ### Set IDADIR Environment Variable (Shell) Source: https://github.com/HexRaysSA/ida-domain This snippet shows how to set the IDADIR environment variable in a shell environment. This variable is required to point to your IDA installation directory, which is a prerequisite for using the IDA Domain library. ```Shell export IDADIR="[IDA Installation Directory]" # Example: export IDADIR="/Applications/IDA Professional 9.1.app/Contents/MacOS/" ``` -------------------------------- ### Build Documentation Locally Source: https://github.com/HexRaysSA/ida-domain This command builds the project's documentation. The output will be available in the 'site/' directory. ```shell uv run mkdocs build ``` -------------------------------- ### Build IDA Domain Documentation Locally Source: https://github.com/HexRaysSA/ida-domain These commands are used to build the project's documentation locally using mkdocs. The first command synchronizes documentation-specific dependencies, and the second serves the documentation via a local web server. An alternative command is provided to only build the documentation without serving it. ```Shell uv sync --extra docs uv run mkdocs serve ``` ```Shell uv run mkdocs build ``` -------------------------------- ### Explore IDA Database Properties with Python Source: https://pypi.org/project/ida-domain/ This Python script demonstrates how to use the IDA Domain library to open an IDA database and retrieve its basic properties. It shows how to access the minimum and maximum EA, database metadata, and count the total number of functions within the database. The script requires the path to the binary file as an input argument. ```python #!/usr/bin/env python3 """ Database exploration example for IDA Domain API. This example demonstrates how to open an IDA database and explore its basic properties. """ import argparse from dataclasses import asdict import ida_domain from ida_domain import Database from ida_domain.database import IdaCommandOptions def explore_database(db_path): """Explore basic database information.""" ida_options = IdaCommandOptions(auto_analysis=True, new_database=True) with Database.open(db_path, ida_options) as db: # Get basic information print(f'Address range: {hex(db.minimum_ea)} - {hex(db.maximum_ea)}') # Get metadata print('Database metadata:') metadata_dict = asdict(db.metadata) for key, value in metadata_dict.items(): print(f' {key}: {value}') # Count functions function_count = 0 for _ in db.functions: function_count += 1 print(f'Total functions: {function_count}') def main(): """Main entry point with argument parsing.""" parser = argparse.ArgumentParser(description='Database exploration example') parser.add_argument( '-f', '--input-file', help='Binary input file to be loaded', type=str, required=True ) args = parser.parse_args() explore_database(args.input_file) if __name__ == '__main__': main() ``` -------------------------------- ### Main Entry Point with Argument Parsing Source: https://github.com/HexRaysSA/ida-domain This Python function serves as the main entry point for the script. It utilizes the `argparse` module to handle command-line arguments, specifically expecting an input file path for database exploration. ```Python def main(): """Main entry point with argument parsing.""" parser = argparse.ArgumentParser(description='Database exploration example') parser.add_argument( '-f', '--input-file', help='Binary input file to be loaded', type=str, required=True ) args = parser.parse_args() explore_database(args.input_file) if __name__ == '__main__': main() ``` -------------------------------- ### GitHub Code Search Syntax Source: https://github.com/HexRaysSA/ida-domain/issues Provides tips and syntax for effectively searching code, repositories, users, and issues on GitHub. It links to detailed documentation for advanced search capabilities. ```English Search code, repositories, users, issues, pull requests... Search Clear [Search syntax tips](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax) To see all available qualifiers, see our [documentation](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax). ``` -------------------------------- ### Explore IDA Database with Python Source: https://github.com/HexRaysSA/ida-domain Demonstrates how to use the IDA Domain library in Python to open an IDA database, perform auto-analysis, and retrieve basic information such as address range, metadata, and function count. It requires a binary input file. ```python #!/usr/bin/env python3 """ Database exploration example for IDA Domain API. This example demonstrates how to open an IDA database and explore its basic properties. """ import argparse from dataclasses import asdict import ida_domain from ida_domain import Database from ida_domain.database import IdaCommandOptions def explore_database(db_path): """Explore basic database information.""" ida_options = IdaCommandOptions(auto_analysis=True, new_database=True) with Database.open(db_path, ida_options) as db: # Get basic information print(f'Address range: {hex(db.minimum_ea)} - {hex(db.maximum_ea)}') # Get metadata print('Database metadata:') metadata_dict = asdict(db.metadata) for key, value in metadata_dict.items(): print(f' {key}: {value}') # Count functions function_count = 0 for _ in db.functions: function_count += 1 print(f'Total functions: {function_count}') def main(): """Main entry point with argument parsing.""" parser = argparse.ArgumentParser(description='Database exploration example') parser.add_argument( '-f', '--input-file', help='Binary input file to be loaded', type=str, required=True ) args = parser.parse_args() explore_database(args.input_file) if __name__ == '__main__': main() ``` -------------------------------- ### Explore IDA Database Properties with Python Source: https://github.com/HexRaysSA/ida-domain This Python script demonstrates how to use the IDA Domain API to open an IDA database, explore its basic properties such as address range and metadata, and count the number of functions within the database. It utilizes the `ida_domain` library and requires an input binary file path. ```Python #!/usr/bin/env python3 """ Database exploration example for IDA Domain API. This example demonstrates how to open an IDA database and explore its basic properties. """ import argparse from dataclasses import asdict import ida_domain from ida_domain.database import Database from ida_domain.database import IdaCommandOptions def explore_database(db_path): """Explore basic database information.""" ida_options = IdaCommandOptions(auto_analysis=True, new_database=True) with Database.open(db_path, ida_options) as db: # Get basic information print(f'Address range: {hex(db.minimum_ea)} - {hex(db.maximum_ea)}') # Get metadata print('Database metadata:') metadata_dict = asdict(db.metadata) for key, value in metadata_dict.items(): print(f' {key}: {value}') # Count functions function_count = 0 for _ in db.functions: function_count += 1 print(f'Total functions: {function_count}') def main(): """Main entry point with argument parsing.""" parser = argparse.ArgumentParser(description='Database exploration example') parser.add_argument( '-f', '--input-file', help='Binary input file to be loaded', type=str, required=True ) args = parser.parse_args() explore_database(args.input_file) if __name__ == '__main__': main() ``` -------------------------------- ### Pre-commit Configuration Source: https://github.com/HexRaysSA/ida-domain This snippet shows the configuration for pre-commit hooks, which are used to automate the process of checking code quality and style before commits. It specifies the repositories and versions of the hooks to be used. ```yaml repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: check-json - id: check-toml - id: check-ast - id: check-merge-conflict - id: debug-statements - id: requirements - id: no-commit-to-branch args: ['--branch', 'main'] - repo: https://github.com/psf/black rev: 24.4.2 hooks: - id: black - repo: https://github.com/pycqa/isort rev: 5.13.2 hooks: - id: isort name: isort (python) - repo: https://github.com/pycqa/ruff rev: v0.4.4 hooks: - id: ruff args: [--fix] - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.10.1 hooks: - id: mypy args: [--config-file, mypy.ini] additional_dependencies: - types-requests - types-aiohttp - types-aiofiles - types-PyYAML - types-toml - types-attrs - types-chardet - types-click - types-colorama - types-cryptography - types-dateutil - types-distlib - types-docker - types-fastapi - types-filelock - types-flask - types-idna - types-jinja2 - types-jwt - types-markdown - types-mock - types-networkx - types-oauthlib - types-openssl - types-packaging - types-pillow - types-protobuf - types-psutil - types-pyarrow - types-pydantic - types-pyjwt - types-pyyaml - types-requests - types-redis - types-rich - types-rsa - types-scipy - types-seaborn - types-setuptools - types-six - types-sqlalchemy - types-sympy - types-tabulate - types-termcolor - types-toml - types-tqdm - types-typing-extensions - types-urllib3 - types-uvloop - types-uuid - types-werkzeug - types-wheel - types-xmltodict - types-yaml - types-yamlloader - types-yfinance - types-zstandard - types-zope.interface - types-zope.schema - types-zope.testing - types-zope.viewlet - types-zope.waitress - types-zope.webob - types-zope.webdav - types-zope.webframework - types-zope.webtest - types-zope.webunit - types-zope.webviews - types-zope.widget - types-zope.workflow - types-zope.z3c.form - types-zope.z3c.layout - types-zope.z3c.menu - types-zope.z3c.pagelet - types-zope.z3c.view - types-zope.z3c.widget - types-zope.z3c.widget.interfaces - types-zope.z3c.widget.widget - types-zope.z3c.widget.widget.interfaces - types-zope.z3c.widget.widget.widget - types-zope.z3c.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget - types-zope.z3c.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.widget.interfaces - types-zope.zope.interface - types-zope.schema - types-zope.testing - types-zope.viewlet - types-zope.waitress - types-zope.webob - types-zope.webdav - types-zope.webframework - types-zope.webtest - types-zope.webunit - types-zope.webviews - types-zope.widget - types-zope.workflow - types-zope.z3c.form - types-zope.z3c.layout - types-zope.z3c.menu - types-zope.z3c.pagelet - types-zope.z3c.view - types-zope.z3c.widget - types-zope.z3c.widget.interfaces - types-zope.z3c.widget.widget - types-zope.z3c.widget.widget.interfaces - types-zope.z3c. ``` -------------------------------- ### Verify Package Integrity with SHA256 Source: https://pypi.org/project/ida-domain/ This snippet shows the SHA256 hash for the ida-domain package. Users can use this hash with tools like pip to ensure the downloaded file has not been tampered with. ```text SHA256 `2060d3f4f38f4ad2343fbadc2ec6f80f883f8d9333ab00956de351bda96410eb` ``` -------------------------------- ### Verify Package Integrity with MD5 Source: https://pypi.org/project/ida-domain/ This snippet shows the MD5 hash for the ida-domain package. While MD5 is less secure than SHA256, it can still be used for basic integrity checks. ```text MD5 `1342b7c0a2b3a5b7a2ec00a0cc9131fa` ``` -------------------------------- ### Verify Package Integrity with BLAKE2b-256 Source: https://pypi.org/project/ida-domain/ This snippet shows the BLAKE2b-256 hash for the ida-domain package. BLAKE2b is a modern cryptographic hash function that offers good performance and security. ```text BLAKE2b-256 `c8d2b7ad2519af305b3c7b2e5cadf30bad8197b8f9ec0058c5a7e0252a8d9d3f` ``` -------------------------------- ### Explore IDA Database Properties Source: https://github.com/HexRaysSA/ida-domain Opens an IDA database, performs auto-analysis, and prints its address range and metadata. This function requires the `ida_domain` library and takes the database path as input. ```Python import argparse from dataclasses import asdict import ida_domain from ida_domain import Database from ida_domain.database import IdaCommandOptions def explore_database(db_path): """Explore basic database information.""" ida_options = IdaCommandOptions(auto_analysis=True, new_database=True) with Database.open(db_path, ida_options) as db: # Get basic information print(f'Address range: {hex(db.minimum_ea)} - {hex(db.maximum_ea)}') # Get metadata print('Database metadata:') metadata_dict = asdict(db.metadata) for key, value in metadata_dict.items(): print(f' {key}: {value}') ``` -------------------------------- ### Configure GitHub Copilot API Override Source: https://github.com/HexRaysSA/ida-domain This snippet shows how to configure an override URL for the GitHub Copilot API. This is useful for directing Copilot requests to a specific API endpoint, potentially for testing or custom deployments. ```json {"locale":"en","featureFlags":["alternate_user_config_repo","api_insights_show_missing_data_banner","attestations_filtering","attestations_sorting","client_version_header","codespaces_prebuild_region_target_update","contact_requests_implicit_opt_in","contentful_lp_enterprise","contentful_lp_footnotes","copilot_agent_task_caching","copilot_api_agentic_issue_marshal_yaml","copilot_api_draft_issue_with_mixed_trees","copilot_chat_attach_multiple_images","copilot_chat_file_redirect","copilot_chat_group_notifications","copilot_chat_model_categorization","copilot_chat_no_header","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_vision_in_claude","copilot_chat_vision_skip_thread_create","copilot_custom_copilots_feature_preview","copilot_custom_copilots_images","copilot_disable_generated_commit_description","copilot_duplicate_thread","copilot_features_raycast_logo","copilot_free_to_paid_telem","copilot_ftp_hyperspace_upgrade_prompt","copilot_ftp_settings_upgrade","copilot_ftp_upgrade_to_pro_from_models","copilot_ftp_your_copilot_settings","copilot_global_overlay_v2","copilot_immersive_agent_branch_selection","copilot_immersive_draft_issue_tree","copilot_immersive_structured_model_picker","copilot_no_floating_button","copilot_read_shared_conversation","copilot_spaces_input_menu_select","copilot_spaces_permissions_tab","copilot_spark_allow_empty_commit","copilot_spark_single_user_iteration","copilot_spark_use_billing_headers","copilot_spark_write_iteration_history_to_git","copilot_stable_conversation_view","copilot_task_oriented_assistive_prompts","copilot_workbench_agent_seed_tool","copilot_workbench_cache","copilot_workbench_connection_reload_banner","copilot_workbench_preview_analytics","copilot_workbench_ratelimit_fallback","copilot_workbench_refresh_on_wsod","copilot_workbench_synthetic_generation","custom_copilots_capi_mode","custom_copilots_file_uploads","dashboard_public_preview","direct_to_salesforce","dotcom_chat_client_side_skills","failbot_report_error_react_apps_on_page","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","hpc_improve_dom_insertion_observer","hyperspace_diff_view","insert_before_patch","issue_fields_report_usage","issues_preserve_tokens_in_urls","issues_react_blur_item_picker_on_close","issues_react_bots_timeline_pagination","issues_react_prohibit_title_fallback","issues_react_remove_placeholders","lifecycle_label_name_updates","link_contact_sales_swp_marketo","marketing_pages_search_explore_provider","memex_mwl_filter_field_delimiter","migrate_toasts_to_banners_web_notifications","new_insights_rulesets_filter","new_scroll_into_view","primer_react_segmented_control_tooltip","primer_react_unified_portal_root","record_sso_banner_metrics","remove_child_patch","repos_insights_remove_new_url","role_assignment_list_radio","sample_network_conn_type","scheduled_reminders_updated_limits","site_homepage_contentful","site_msbuild_hide_integrations","site_msbuild_launch","site_msbuild_webgl_hero","spark_commit_on_default_branch","spark_sync_repository_after_iteration","viewscreen_sandbox","webp_support","workbench_default_sonnet4","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} ``` -------------------------------- ### Configure GitHub Copilot API URL Source: https://github.com/HexRaysSA/ida-domain/issues This snippet demonstrates how to configure an override URL for the GitHub Copilot API. This is useful for testing or using custom API endpoints. ```json {"locale":"en","featureFlags":["alternate_user_config_repo","api_insights_show_missing_data_banner","attestations_filtering","attestations_sorting","client_version_header","codespaces_prebuild_region_target_update","contact_requests_implicit_opt_in","contentful_lp_enterprise","contentful_lp_footnotes","copilot_agent_task_caching","copilot_api_agentic_issue_marshal_yaml","copilot_api_draft_issue_with_mixed_trees","copilot_chat_attach_multiple_images","copilot_chat_file_redirect","copilot_chat_group_notifications","copilot_chat_model_categorization","copilot_chat_no_header","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_vision_in_claude","copilot_chat_vision_skip_thread_create","copilot_custom_copilots_feature_preview","copilot_custom_copilots_images","copilot_disable_generated_commit_description","copilot_duplicate_thread","copilot_features_raycast_logo","copilot_free_to_paid_telem","copilot_ftp_hyperspace_upgrade_prompt","copilot_ftp_settings_upgrade","copilot_ftp_upgrade_to_pro_from_models","copilot_ftp_your_copilot_settings","copilot_global_overlay_v2","copilot_immersive_agent_branch_selection","copilot_immersive_draft_issue_tree","copilot_immersive_structured_model_picker","copilot_no_floating_button","copilot_read_shared_conversation","copilot_spaces_input_menu_select","copilot_spaces_permissions_tab","copilot_spark_allow_empty_commit","copilot_spark_single_user_iteration","copilot_spark_use_billing_headers","copilot_spark_write_iteration_history_to_git","copilot_stable_conversation_view","copilot_task_oriented_assistive_prompts","copilot_workbench_agent_seed_tool","copilot_workbench_cache","copilot_workbench_connection_reload_banner","copilot_workbench_preview_analytics","copilot_workbench_ratelimit_fallback","copilot_workbench_refresh_on_wsod","copilot_workbench_synthetic_generation","custom_copilots_capi_mode","custom_copilots_file_uploads","dashboard_public_preview","direct_to_salesforce","dotcom_chat_client_side_skills","failbot_report_error_react_apps_on_page","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","hpc_improve_dom_insertion_observer","hyperspace_diff_view","insert_before_patch","issue_fields_report_usage","issues_preserve_tokens_in_urls","issues_react_blur_item_picker_on_close","issues_react_bots_timeline_pagination","issues_react_prohibit_title_fallback","issues_react_remove_placeholders","lifecycle_label_name_updates","link_contact_sales_swp_marketo","marketing_pages_search_explore_provider","memex_mwl_filter_field_delimiter","migrate_toasts_to_banners_web_notifications","new_insights_rulesets_filter","new_scroll_into_view","primer_react_segmented_control_tooltip","primer_react_unified_portal_root","record_sso_banner_metrics","remove_child_patch","repos_insights_remove_new_url","role_assignment_list_radio","sample_network_conn_type","scheduled_reminders_updated_limits","site_homepage_contentful","site_msbuild_hide_integrations","site_msbuild_launch","site_msbuild_webgl_hero","spark_commit_on_default_branch","spark_sync_repository_after_iteration","viewscreen_sandbox","webp_support","workbench_default_sonnet4","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} ``` -------------------------------- ### CSS for Code Formatting Source: https://github.com/HexRaysSA/ida-domain This CSS snippet defines tab size preferences for preformatted text and code blocks. It ensures consistent indentation across different environments by using a CSS variable. ```css :root { --tab-size-preference: 4; } pre, code { tab-size: var(--tab-size-preference); } ``` -------------------------------- ### Count Functions in Database Source: https://github.com/HexRaysSA/ida-domain This Python code iterates through a database's functions, counts them, and prints the total count. It initializes a counter to zero and increments it for each function found in the database. ```Python # Count functions function_count = 0 for _ in db.functions: function_count += 1 print(f'Total functions: {function_count}') ``` -------------------------------- ### CSS Variable for Tab Size Source: https://github.com/HexRaysSA/ida-domain/issues This CSS snippet defines a custom property `--tab-size-preference` and applies it to `pre` and `code` elements, controlling the tab size for code display. ```css :root { --tab-size-preference: 4; } pre, code { tab-size: var(--tab-size-preference); } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.