A lightweight CLI tool to audit Unity projects for risky code and binaries.
Project description
Usentinel
Usentinel is a lightweight command-line interface (CLI) tool designed to audit Unity projects for potentially hazardous code and native binaries. It inspects project files without modifying them, writing reports (HTML or JSON) to the location you choose.
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 Summary Output: Presents findings with severity and file locations so you can investigate quickly.
- Minimal Footprint: Usentinel analyzes projects without changing their contents and has minimal runtime dependencies.
Installation & Usage
Install from PyPI:
pip install usentinel
Then scan your Unity project:
usentinel /path/to/unity/project
Each scan writes a polished HTML report to the current directory (for example usentinel-report-myproject-20240518-172455-a1b2c3d4.html). Open it in your browser, or pass a folder to --output to place reports elsewhere.
Prefer working from source?
git clone https://github.com/TLI-1994/Usentinel.git
cd Usentinel
PYTHONPATH=src python -m usentinel.main /path/to/unity/project
Common flags:
--format {html|raw}(default:html) – open-friendly HTML or raw JSON for automation (jsonis accepted as an alias forraw).--output PATH– when using HTML, write to a specific file or directory (defaults tousentinel-report-<project>-YYYYMMDD-HHMMSS-<hash>.html).--ruleset path/to/extra_rules.yaml– load additional Semgrep-style YAML rules (repeatable).--include-binaries/--skip-binaries(default: include) – control native binary detection.--engine {auto|heuristic|semgrep}(default:auto) – auto-select, force the heuristic engine, or use Semgrep.--version– print the installed Usentinel version and exit.
Progress indicators show automatically when Usentinel runs in an interactive terminal and stay quiet when output is redirected, so you can safely pipe results into other tools without extra flags.
Each run reports which analysis engine was used (semgrep when available, otherwise a heuristic fallback) so you can confirm coverage.
Prefer raw JSON? Swap the format flag:
usentinel ~/Projects/MyUnityGame --format raw
The JSON output mirrors the HTML report data so you can integrate it with other tools or pipelines.
Run the test suite (contributors)
If you are contributing to Usentinel, install the project in editable mode with the testing extras and run the suite from the repository root:
pip install -e '.[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:
python -m venv venv
source venv/bin/activate
python tools/semgrep/generate_autorun_editor_hooks.py
Commit the spec, generator, and regenerated YAML together so the rule bundle stays reproducible.
Disclaimer
In addition to the MIT License notice, please keep the following in mind:
- Best-effort analysis: Usentinel performs static, non-destructive analysis. It highlights patterns worth human review but it is not a substitute for a professional security audit, and it cannot detect every risky construct in the Unity ecosystem.
- Your responsibility: You remain solely responsible for validating findings, performing additional due diligence, and complying with all applicable laws and regulations.
- No warranties: The tool is provided “AS IS” without express or implied warranties, including but not limited to implied warranties of merchantability, fitness for a particular purpose, non-infringement, security, or error-free operation.
- No liability: In no event shall the authors or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages arising out of or in connection with the use of Usentinel or reliance on its results. By using Usentinel you acknowledge these limitations and agree to hold the authors and contributors harmless.
Feedback and contributions are welcome. If you spot gaps in rule coverage or encounter issues, please open an issue or pull request on GitHub so we can improve together.
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 usentinel-0.3.0.tar.gz.
File metadata
- Download URL: usentinel-0.3.0.tar.gz
- Upload date:
- Size: 32.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cbefd96ee2dbe58d36bbb620cf8e86c9df46135a51202848adaa054af229985
|
|
| MD5 |
72cfdb223b93973099d70b89c2ab47f4
|
|
| BLAKE2b-256 |
1dfd088e84ea27c5f940952090fc6a314d5e8a2ad7c4c0f02d52cedc8e0956af
|
File details
Details for the file usentinel-0.3.0-py3-none-any.whl.
File metadata
- Download URL: usentinel-0.3.0-py3-none-any.whl
- Upload date:
- Size: 29.1 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 |
26be109965f977b21180022ec079e95f72deef2f036eb4c8a634c0e516da513c
|
|
| MD5 |
c3b88d39e15b077101ee6fe717710941
|
|
| BLAKE2b-256 |
3967ec6d0c8b129ede5c044050009d9ad1ba930557b54a9e2011885df18b1e71
|