A lightweight CLI tool to audit Unity projects for risky code and binaries.
Reason this release was yanked:
Yanked for compliance reasons: the README in this release did not include the complete disclaimer regarding warranties, liability, and scope of analysis. Use a newer version to ensure correct legal terms.
Project description
Uniscan
Uniscan is a lightweight, read-only command-line interface (CLI) tool designed to audit Unity projects for potentially hazardous code and native binaries. It's a quick and simple way to get a security overview of your project without needing a complex setup. The tool scans C# scripts for risky patterns and provides a clear, color-coded summary directly in your terminal.
Key Features
- Static Code Analysis: Scans C# scripts for common security vulnerabilities and anti-patterns.
- Binary Detection: Identifies native binary files (e.g.,
.dll,.so,.dylib) which can sometimes pose a risk. - Clear, Color-Coded Output: Provides an easy-to-read summary of findings, highlighting issues with different colors.
- Minimalist Design: It's read-only, has minimal dependencies, and won't modify your project.
Installation & Usage
You can use Uniscan directly from its source code. No complex installation is required.
1. Clone the repository
First, clone the project from GitHub:
git clone https://github.com/TLI-1994/Uniscan.git
2. Navigate to the directory
Change your current directory to the cloned repository:
cd Uniscan
3. Run the scanner
Run the CLI against your Unity project. From the repository root you can execute the module directly:
PYTHONPATH=src python -m uniscan.main /path/to/unity/project
If you install the package into a virtual environment, the console script becomes available:
pip install .
uniscan /path/to/unity/project
The installation pulls in all required dependencies (including Semgrep and PyYAML).
Common flags:
--format {text|json}– choose human-readable or machine-readable output (textis default)--no-colors– disable ANSI colours in text mode--ruleset path/to/extra_rules.yaml– load additional Semgrep-style YAML rules (may be passed multiple times)--skip-binaries/--include-binaries– control native binary detection--verbosity {quiet|normal|debug}– adjust the amount of detail printed (aliases--quietand--debug)--engine {auto|semgrep|heuristic}– force Semgrep, always use the lightweight heuristic scanner, or let Uniscan decide automatically--progress/--no-progress– toggle the live progress indicator (enabled by default)--pretty/--no-pretty– group findings by file and rule for easier human review (default off)
Each run reports which analysis engine was used (semgrep when available, otherwise a heuristic fallback) so you can confirm full rule coverage.
Example:
uniscan ~/Projects/MyUnityGame --format json --skip-binaries
4. Run the test suite (optional)
Install the testing extra and execute pytest:
pip install .[test]
python -m pytest
License
MIT License — see LICENSE for details.
Developer Notes
Semgrep rules live under rules/core/semgrep, one YAML file per rule. Generated rules (such as unity.autorun.editor-hooks) are driven by the data in tools/semgrep/data and a companion script under tools/semgrep. Re-run the generator after editing the spec:
. venv/bin/activate
python tools/semgrep/generate_autorun_editor_hooks.py
Commit both the script changes and the regenerated YAML to keep the rule definitions reproducible.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uniscan-0.1.0.tar.gz.
File metadata
- Download URL: uniscan-0.1.0.tar.gz
- Upload date:
- Size: 25.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc8b89198c7457adf1cbf294b3022bddb4a35f816cbcf3f75dcc3fb21d1aa0ed
|
|
| MD5 |
aa3164a369935f639202f067d3b3d001
|
|
| BLAKE2b-256 |
345346e68a80ef22ea23a71cfa148817d078144d6de2310f2472a115bbe106c3
|
File details
Details for the file uniscan-0.1.0-py3-none-any.whl.
File metadata
- Download URL: uniscan-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bc53b9cd7c5b3284512198f4febbd29afa3a0efc7f5efabcfaed1033195670b
|
|
| MD5 |
3b0c6f729e5a4b5525bc58a438e2675e
|
|
| BLAKE2b-256 |
699cf5ac5ac296c8af653eeb69e8b4992ecdc7b73c7db9635a1199327d1debd1
|