perry-spies
perry-spies is a powerful, lightweight Python package that provides comprehensive local static application security testing (SAST) and live web fuzzing features:
- Local Repository Scanning: Multi-language AST-based parsing, hardcoded secret discovery, and dependency advisory checking.
- Live Web Fuzzing: On-demand custom HTTP request validation, fuzzing suite attacks (SQLi, XSS, Path Traversal, Cmd Injection), and reporting.
You can run perry-spies inside your terminal for quick local audits, integrate it as a CI/CD gate in GitHub Actions/GitLab, or use its underlying services directly in your Python applications.
More About perry-spies
At a granular level, perry-spies consists of the following key CLI subcommands and internal services:
| Component | Description |
|---|---|
perry scan |
Scans a local repository or directory for secrets, code quality issues, and dependency vulnerabilities. |
perry custom-test |
Sends on-demand attack vectors (shorthand or JSON schema) to a live URL and returns detailed findings. |
perry.services.sast_engine |
AST-based static analysis engine natively parsing Python and JS/TS patterns. |
perry.services.risk_engine |
Deterministic 5-factor risk scoring engine that bands repository threats from minimal to critical. |
Usually, perry-spies is used either as:
- A fast, local pre-commit hook or security gate in CI/CD pipelines.
- A lightweight fuzzer to quickly test specific live web endpoints for common injection vulnerabilities.
Key Features
AST-Based SAST
Rather than searching for naive regex patterns, perry-spies uses abstract syntax tree (AST) parsers (leveraging tree-sitter for polyglot support) to understand actual code structure. This flags genuine issues like unsafe SQL string concatenations and dangerous evaluations while keeping false positives low.
Intelligent Secret Hygiene
The secret scanner matches credentials against high-entropy patterns. It automatically cross-references discovered secrets with your repository's .gitignore. Files that are ignored are flagged as low-severity hygiene logs, while unignored secrets generate active security alerts.
Fully Local Dependency Advisory
It extracts dependencies from manifests (like package.json, requirements.txt, etc.) and performs reachability analysis. It queries OSV.dev advisories to check if vulnerable libraries are imported and actually used in execution paths.
Live Fuzzing Preset Attacks
Using the custom-test subcommand, you can run pre-packaged test suites mimicking common attacks:
- Reflected XSS: Identifies if unescaped markers reflect into the DOM.
- SQL Injection: Probes inputs with database error-triggering and boolean payloads.
- Path Traversal: Tests local file inclusion against system structures like
/etc/passwd. - Command Injection: Traces system command outcomes using canary echo execution.
Installation
Install the package directly from PyPI:
pip install perry-spies
Local Development Installation
For developers wishing to extend or test perry-spies locally:
git clone https://github.com/aayushhh-operator/perry.git
cd perry/backend
pip install -e .
Getting Started
Scan the current directory
perry scan
Scan a specific folder and fail if high/critical issues are found
perry scan /path/to/project --fail-on high
Run the default fuzzing suite against a live site (with authorization)
perry custom-test --url https://perryspies.vercel.app/ --authorized
Export definitive logs to a JSON file
perry scan --json report.json
License
perry-spies is distributed under the MIT license.
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 perry_spies-1.0.2.tar.gz.
File metadata
- Download URL: perry_spies-1.0.2.tar.gz
- Upload date:
- Size: 141.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5418620f4f09e5aecff4fd0b1dcec1d374aa7a83024cf5d916230f2c487a019c
|
|
| MD5 |
bd8f8e813ef1a37867482da775f43caa
|
|
| BLAKE2b-256 |
4a118ad40f6994650ba0d4ace79f82243b9cdf40b3b5a1a478f084f67204a88b
|
File details
Details for the file perry_spies-1.0.2-py3-none-any.whl.
File metadata
- Download URL: perry_spies-1.0.2-py3-none-any.whl
- Upload date:
- Size: 151.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eba5d7032e6fe206908968eae6fdacc0e3f27c158efec197d3b9d5e62ab2ca1b
|
|
| MD5 |
5ec2a8734530f30e9b2dc8372cf54d4f
|
|
| BLAKE2b-256 |
91de308ec6bdbc39916cc7e31a401df705efb5c6470d64bfd9dad4fc4e721a53
|