Skip to main content

perry-spies

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:

  1. A fast, local pre-commit hook or security gate in CI/CD pipelines.
  2. 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

perry_spies-1.0.4.tar.gz (141.8 kB view details)

Uploaded Source

Built Distribution

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

perry_spies-1.0.4-py3-none-any.whl (151.5 kB view details)

Uploaded Python 3

File details

Details for the file perry_spies-1.0.4.tar.gz.

File metadata

  • Download URL: perry_spies-1.0.4.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

Hashes for perry_spies-1.0.4.tar.gz
Algorithm Hash digest
SHA256 8d7a284fe3140b793b001ed1a4d8e3a0e0c98bf736565f8604a527828a8911ee
MD5 b527402ea2bb909813bb37dd421d5340
BLAKE2b-256 efc2591ae50b249078426a3561e2c2cb0db8ac8cb803e30ba216f5c16813568a

See more details on using hashes here.

File details

Details for the file perry_spies-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: perry_spies-1.0.4-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

Hashes for perry_spies-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 32a61a281003237a0d28cf4c70b163f1bf0dda92bfc8352fd189ef9f047eb4a9
MD5 df6e1aba50c673078e6ad9a5a53b9ee4
BLAKE2b-256 f527fd96a88cb1e7b4adc1e948e980fd457e42cc7c5785a36c9338260725703f

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 Sentry Error logging StatusPage Status page