{"id":18113356,"url":"https://github.com/thomasvogl/xwf-api-rs","last_synced_at":"2025-07-09T09:42:25.919Z","repository":{"id":260467128,"uuid":"864460835","full_name":"ThomasVogl/xwf-api-rs","owner":"ThomasVogl","description":"Unofficial Rust Bindings for X-Ways Forensics X-Tension API","archived":false,"fork":false,"pushed_at":"2025-05-25T11:55:47.000Z","size":153,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-05-25T12:35:54.225Z","etag":null,"topics":["ffi-bindings","forensics-tools","rust","rust-lang","x-tension","x-ways"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ThomasVogl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-28T09:26:45.000Z","updated_at":"2025-05-25T11:54:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"c0746c0d-1308-4c9a-b6bd-c49813f21018","html_url":"https://github.com/ThomasVogl/xwf-api-rs","commit_stats":null,"previous_names":["thomasvogl/xwf-api-rs"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ThomasVogl/xwf-api-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasVogl%2Fxwf-api-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasVogl%2Fxwf-api-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasVogl%2Fxwf-api-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasVogl%2Fxwf-api-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ThomasVogl","download_url":"https://codeload.github.com/ThomasVogl/xwf-api-rs/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasVogl%2Fxwf-api-rs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264432539,"owners_count":23607445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ffi-bindings","forensics-tools","rust","rust-lang","x-tension","x-ways"],"created_at":"2024-11-01T02:07:54.657Z","updated_at":"2025-07-09T09:42:25.868Z","avatar_url":"https://github.com/ThomasVogl.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xwf-api-rs\n\nUnofficial Rust Bindings for **X-Ways Forensics** X-Tension API\n\n\n## Description\n\nThis project provides Rust bindings for the X-Ways Forensics X-Tension API, \nallowing developers to create powerful forensic extensions in Rust.\n\nBy leveraging the high performance and safety features of Rust, \nthis binding enables seamless integration with the X-Tension API, \nfacilitating the development of custom forensic tools and automation solutions \nfor digital forensics workflows.\n\n\n## Example Usage\nIn _example_ subdirectory reside some sample projects that \nshall demonstrate basic usage of the xwf-api-rs library \nand can be used as a boilerplate for new projects.\n\nA quick guide how to use this library for developing own X-Tensions can be found [here](docs/quick_start.md).\n\nCurrently following examples are existing:\n- [**xt-helloworld-rs**](examples/xt-helloworld-rs)\n  - shows a minimum working example for a X-Tension\n  - example for getting user inputs and showing progress bar\n  - shows how to define minimum required XWF API Version in cargo.toml\n- [**xt-count-items-rs**](examples/xt-count-items-rs)\n  - shows how to iterate over evidences and items\n  - shows how to get some attributes of an item object\n  - shows how to define minimum required XWF API Version in cargo.toml\n- [**xt-process-data-rs**](examples/xt-process-data-rs)\n  - shows how to use xt_process_item_ex() for calling X-Tensions via _Volume Snapshot Refinement_\n  - shows how to get some data portions of an item\n  - shows how to get case information and computing a unique id for items\n  - shows how to export item data to any location\n- [**xt-item-parser-rs**](examples/xt-process-data-rs)\n  - shows how to iterate over evidences and items\n  - shows how to write some item information to a CSV file\n  \n\n## Current state of development\n**Version 1.0.0 released.**\n\nNot all available functionality of the X-Tension C API has been translated to Rust yet.\n\nHowever, the implemented parts are stable and can already be used for certain production use cases, \nprovided they meet your requirements.\n\nThe architectural concept of the API should be quite stable and settled, \nhaving been tested and used in some real-world scenarios.\n\nFrom now on, any incompatible changes to the existing API \nwill result in a major version increment. \nThe goal is to maintain backward compatibility \nfor all upcoming 1.x.x versions in accordance with [semver.org](https://semver.org/).\n\n\n### Available Features\n- macro expressions for defining and exporting all required DLL-functions for X-Tension, \n  so the needed boilerplate-code for new projects reduced to the absolute bare minimum.\n- compile-time definition of desired XWF API Level (via rust feature)\n  - behaviour *xwf-api-rs* will adapt its functionality according to the specified XWF-API version\n  - automatic runtime checks for XWF version to ensure X-Tension compatibility\n- convenient macro-expressions for XWF log outputs (xwfinfo!(...), xwfwarn!(...), xwfdebug!(...))\n- proper enumeration- and bitflag-types for most of numerical XWF-API values \n- proper error handling\n  - runtime error checks for most XWF-API calls\n  - well-defined error-type XwfError represents all different kinds of API failures\n  - handling of undocumented/newly-introduced enumeration-values from XWF C-API\n- object-oriented interface interacting with \"items\", \"evidences\" and \"volumes\"\n  - getters and setters for most of available item attributes\n  - iterate over parent items\n  - read binary data from items\n  - create new items from data in memory\n  - (de-)serialization capability for most of item-attributes\n  - \"UniqueItemId\"-type for identifying items across different evidences\n- multithreading capability\n- convenience functions for iterating over all evidences and items\n- convenience functions for accessing/querying items within report tables\n\n\n## Project Goals\n- Translating all relevant features of XWF X-Tension API into Rust Language\n- Providing an object-oriented and high-level abstraction layer \n  to the official X-Tension C API\n- Use idiomatic Rust features to facilitate a safe, robust and intuitive way of using the API\n- Simplify project setup for new X-Tensions\n- Identify possible problems and bugs within the XWF API functions\n\n\n## License\nThis project is licensed under the **LGPLv3 (Lesser General Public License)**. \nThis means that while you can freely use and integrate this project with proprietary software, \nany modifications to the binding itself must be released under the same license.\nFor more details, see the LICENSE file.\n\nPlease note that in addition to the LGPLv3 license, the usage of the _X-Ways X-Tension API_ is subject to the licensing terms of _X-Ways_ software. \nEnsure that you comply with the terms and conditions set by _X-Ways Software Technology AG_ for the use of their software and API.\n\n## Disclaimer\nThis project is not developed by or affiliated with _X-Ways Software Technology AG_ in any way.\n\nThis project is provided \"as is,\" without warranty of any kind, express or implied, \nincluding but not limited to the warranties of merchantability, \nfitness for a particular purpose, and noninfringement. \nIn no event shall the author be liable for any claim, damages, or other liability, \nwhether in an action of contract, tort, or otherwise, arising from, out of, \nor in connection with the software or the use or other dealings in the software. \nUsers are solely responsible for any risks or issues that may arise from the use of this binding, \nincluding but not limited to data loss, system failures, \nor incorrect forensic analysis results.\n\n\n\n## Contribution\nContributions are welcome! If you would like to contribute to this project, \nfeel free to open an issue or submit a pull request. \nPlease ensure that your contributions adhere to the LGPLv3 license.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomasvogl%2Fxwf-api-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomasvogl%2Fxwf-api-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomasvogl%2Fxwf-api-rs/lists"}