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.3.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.3-py3-none-any.whl (151.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: perry_spies-1.0.3.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.3.tar.gz
Algorithm Hash digest
SHA256 1fa185007dc4eed1908b19bd8579aee3c4c68f5530b3c2e4d24f40aa6d03b048
MD5 af33ee5b820d21df38efa156dc7e09e3
BLAKE2b-256 456770109d7308803ac432d925a9f93e35836b4b73d7930529a849aee721a784

See more details on using hashes here.

File details

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

File metadata

  • Download URL: perry_spies-1.0.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e2de72a552aa8cb8572099c122c199d6f90b45204dce468e1d9c9607b6d79fed
MD5 fe1d29a267357f6a1257dfcc149f20e2
BLAKE2b-256 45483fef10a02723ddcccaa1889e60d31c7ff9a8f6af530a6ad1fe0102d979aa

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