Skip to main content

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 (text is 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 --quiet and --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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uniscan-0.1.0.tar.gz (25.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uniscan-0.1.0-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

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

Hashes for uniscan-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bc8b89198c7457adf1cbf294b3022bddb4a35f816cbcf3f75dcc3fb21d1aa0ed
MD5 aa3164a369935f639202f067d3b3d001
BLAKE2b-256 345346e68a80ef22ea23a71cfa148817d078144d6de2310f2472a115bbe106c3

See more details on using hashes here.

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

Hashes for uniscan-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8bc53b9cd7c5b3284512198f4febbd29afa3a0efc7f5efabcfaed1033195670b
MD5 3b0c6f729e5a4b5525bc58a438e2675e
BLAKE2b-256 699cf5ac5ac296c8af653eeb69e8b4992ecdc7b73c7db9635a1199327d1debd1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page