{"id":30067783,"url":"https://github.com/definetlynotai/pyctools","last_synced_at":"2026-05-20T14:06:01.700Z","repository":{"id":308734670,"uuid":"1033884389","full_name":"DefinetlyNotAI/PyCTools","owner":"DefinetlyNotAI","description":"This project provides a cross-language toolkit for Windows process inspection and hardware random number generation, with both Python and C components.","archived":false,"fork":false,"pushed_at":"2025-08-07T14:21:15.000Z","size":21,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-07T16:22:51.969Z","etag":null,"topics":["c","dll","hrng","proccess-dump","process-info","process-snapshot","python","python-dll","python-lib","rng","tools"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DefinetlyNotAI.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":"2025-08-07T13:50:42.000Z","updated_at":"2025-08-07T14:21:19.000Z","dependencies_parsed_at":"2025-08-07T16:24:25.006Z","dependency_job_id":null,"html_url":"https://github.com/DefinetlyNotAI/PyCTools","commit_stats":null,"previous_names":["definetlynotai/pyctools"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/DefinetlyNotAI/PyCTools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FPyCTools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FPyCTools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FPyCTools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FPyCTools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefinetlyNotAI","download_url":"https://codeload.github.com/DefinetlyNotAI/PyCTools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FPyCTools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269394669,"owners_count":24409799,"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","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["c","dll","hrng","proccess-dump","process-info","process-snapshot","python","python-dll","python-lib","rng","tools"],"created_at":"2025-08-08T09:10:07.884Z","updated_at":"2026-05-20T14:06:01.694Z","avatar_url":"https://github.com/DefinetlyNotAI.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n  \u003ch1\u003ePyCTools\u003c/h1\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"License\" /\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/platform-Windows-lightgray\" alt=\"Platform\" /\u003e\r\n  \u003cimg src=\"https://img.shields.io/github/languages/top/DefinetlyNotAI/PyCTools\" alt=\"Languages\" /\u003e\r\n  \u003cimg src=\"https://img.shields.io/github/v/tag/DefinetlyNotAI/PyCTools\" alt=\"Version\" /\u003e\r\n\u003c/div\u003e\r\n\r\n\u003e [!NOTE]\r\n\u003e There are multiple ways to install the pyCTools library!\r\n\u003e\r\n\u003e * **Manual installation:**\r\n\u003e\r\n\u003e   1. Clone the repository and build the DLLs yourself.\r\n\u003e   2. Update the `VERSION` variable in `pyCTools/__init__.py` to match your desired version for the build.\r\n\u003e   3. Run the following to create the wheel file:\r\n\u003e      ```bash\r\n\u003e      pip install build\r\n\u003e      cd tool\r\n\u003e      python setupHelper.py  # Do not run `setup.py` directly, use this script instead as it handles many important things\r\n\u003e      ```\r\n\u003e   4. The setup script will show you how to install the package locally with pip and how to create a virtual environment for testing.\r\n\u003e * **Automatic installation:**\r\n\u003e   Go to the [releases page](https://github.com/DefinetlyNotAI/PyCTools/releases) and select the version you wish to install, and click on it, then copy the top `pip` command that will allow you to install it\r\n\u003e   [Auto installation support from v0.2.0-beta and above]\r\n\r\n\r\nThis project provides a cross-language toolkit for Windows process inspection and hardware random number generation, with both Python and C components. It includes:\r\n\r\n- **Python library (`pyCTools`)**: Easy-to-use wrappers for native DLLs to access process metrics and hardware RNG.\r\n- **C source files**: Implement the DLLs for process inspection and hardware RNG.\r\n- **Example Python scripts**: Demonstrate usage of the library.\r\n- **PowerShell build helper**: Automates DLL compilation for x86/x64.\r\n\r\n\u003e [!IMPORTANT]\r\n\u003e To get the `dist` binary folder, choose **one** of the following options:\r\n\u003e\r\n\u003e | Method                   | Description                                                                                                  | Requirements                                        |\r\n\u003e |--------------------------|--------------------------------------------------------------------------------------------------------------|-----------------------------------------------------|\r\n\u003e | Manual Build             | Compile the binaries yourself using `cl.exe` or similar toolchains                                           | Microsoft Visual Studio with MSVC installed         |\r\n\u003e | Auto Build Script        | Run the [`tool/compilerHelper.ps1`](tool/compilerHelper.ps1) PowerShell script                               | Visual Studio Build Tools + PowerShell              |\r\n\u003e | Prebuilt Release Archive | Download precompiled binaries from the [releases page](https://github.com/DefinetlyNotAI/PyCTools/releases/) | None, make sure to use the latest available version |\r\n\u003e\r\n\u003e No matter what you decide, do still read the important notice about the `dist` from the [release](https://github.com/DefinetlyNotAI/PyCTools/releases/) OR check the [Wiki](https://github.com/DefinetlyNotAI/PyCTools/wiki#dll-discovery-and-bin-directory) page about the DLL discovery explanation.\r\n\r\n## Directory Structure\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e📁 Project Structure (click to expand)\u003c/summary\u003e\r\n\r\n    root/\r\n    ├── dist/                              # Release artifacts for distribution\r\n    │   ├── rawBinaryZipped/               # Prebuilt binaries files (generated by `distributionHelper.ps1`)\r\n    │   │   ├── bin.zip                    # Zipped prebuilt binaries\r\n    │   │   └── bin.zip.sha256             # SHA256 checksum for `bin.zip`\r\n    │   └── libraryWheel/                  # Library wheel files (generated by `setup.py`)\r\n    │       └── *.whl                      # Python wheel files for library distribution via pip\r\n    │\r\n    ├── pyCTools/                          # Python package (library code)\r\n    │   ├── bin/                           # Auto-generated folder containing compiled DLL binaries\r\n    │   │   ├── x86/                       # 32-bit DLL builds\r\n    │   │   └── x64/                       # 64-bit DLL builds\r\n    │   ├── __init__.py                    # Package initializer\r\n    │   ├── hwrng.py                       # Hardware RNG DLL wrapper\r\n    │   ├── processInspect.py              # Process inspection DLL wrapper\r\n    │   ├── _loadDLL.py                    # DLL loading logic used by wrappers\r\n    │   └── setup.py                       # Setup script for building and installing the package\r\n    │\r\n    ├── tool/                              # Build and distribution tools\r\n    │   ├── compilerHelper.ps1             # Compiles C code into DLLs\r\n    │   └── distributionHelper.ps1         # Creates `bin.zip` and SHA256 checksum\r\n    │\r\n    ├── src/                               # C source code for DLLs\r\n    │   ├── hRng.c                         # Hardware RNG implementation\r\n    │   └── processInspect.c               # Process inspection implementation\r\n    │\r\n    └── CMakeLists.txt                     # CMake build configuration (currently unused)\r\n\r\n\u003c/details\u003e\r\n\r\n## Using the Python Library\r\n\r\n- Place the `dist/` folder inside the `pyCTools` package directory.\r\n- Import and use `hwrng` or `processInspect` from `pyCTools`.\r\n- The library will automatically load the correct DLL based on your Python interpreter architecture (x86 or x64).\r\n\r\n### Module examples and documentation\r\n\r\nExample usages and documentation for both modules in detail can be found in the Wiki:\r\n\r\n#### Script usage examples\r\n\r\n- [Hardware RNG Example Script](example/hwrng.py)\r\n- [Process Inspection Example Script](example/processInspect.py)\r\n\r\n#### Module usage documentation\r\n- [Hardware RNG Documentation Wiki page](https://github.com/DefinetlyNotAI/PyCTools/wiki/Py-Documentation-‐-hwrng#methods)\r\n- [Process Inspection Documentation Wiki page](https://github.com/DefinetlyNotAI/PyCTools/wiki/Py-Documentation-‐-processInspect#methods)\r\n\r\n### DLL Info\r\n\r\nYou can find all information in the [Wiki](https://github.com/DefinetlyNotAI/PyCTools/wiki#dll-discovery-and-bin-directory).\r\n\r\nDetails about building the DLLs can be found in more detail [here](https://github.com/DefinetlyNotAI/PyCTools/wiki#building-the-dlls)\r\n\r\n\r\n## Extra resources\r\n\r\n\u003e [!TIP]\r\n\u003e Want to dive deeper into how everything works? Head over to the [PyCTools Wiki](https://github.com/DefinetlyNotAI/PyCTools/wiki) for detailed breakdowns of the key parts:\r\n\u003e\r\n\u003e • **DLL explanations**: learn how the DLLs are structured, discovered, and loaded \r\n\u003e \r\n\u003e • **Python examples, wrappers, and usage**: practical code snippets and usage patterns in Python\r\n\u003e \r\n\u003e • **C code explanation**: understand the underlying native implementation\r\n\u003e \r\n\u003e • **Build and distribution**: how to compile, package, and distribute the libraries\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefinetlynotai%2Fpyctools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdefinetlynotai%2Fpyctools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefinetlynotai%2Fpyctools/lists"}