Intrascan
Mobile app security scanner that runs Nuclei templates via Frida network injection.
Intrascan enables security scanning of iOS/Android applications by injecting HTTP requests directly from within the app's context, bypassing SSL pinning and VPN tunnels.
🌟 Key Features
- 🔒 Bypass SSL Pinning - Requests originate from within the app's network stack
- 🌐 VPN Passthrough - Access internal networks the app is connected to
- 📋 Nuclei Compatible - Uses standard Nuclei YAML templates
📦 Installation
# Prerequisites: Frida server running on target device
# Activate your frida environment
source /path/to/frida-env/bin/activate
# Install in development mode
pip install -e .
Requirements
- Python 3.10+
- Frida and frida-tools
- iOS/Android device with frida-server running
- USB connection to device
🚀 Quick Start
# Basic scan with single template
intrascan -t template.yaml -u https://target.com -a com.app.bundle
# Scan with Nuclei templates directory
intrascan -t ~/nuclei-templates/http/technologies/ \
-u https://target.com -a com.app.bundle \
-s info -s low --limit 50
# Full scan with output
intrascan -t ~/nuclei-templates/http/ \
-u https://internal-api.company.com -a com.company.app \
-o results.json --store-responses ./findings/ -v
📖 Documentation
- How It Works - Architecture and flow
- Writing Templates - Template format guide
- Configuration - CLI options reference
🎯 Use Cases
- Internal API Testing - Test APIs only accessible via mobile app VPN
- SSL Pinned Apps - Scan apps with certificate pinning
⚙️ CLI Options
| Option | Description |
|---|---|
-t, --template |
Template file or directory (required) |
-u, --url |
Target base URL (required) |
-a, --app |
iOS/Android app bundle ID (required) |
-H, --header |
Custom header (header:value format, can use multiple times) |
-s, --severity |
Filter by severity (comma-separated: critical,high,medium,low,info) |
--tags |
Include templates with these tags (comma-separated) |
--exclude-tags |
Exclude templates with these tags (comma-separated) |
--limit |
Maximum templates to process |
-o, --output |
Save results to JSON file |
--store-responses |
Directory to save request/response pairs for findings |
--rate-limit |
Requests per second (default: 10) |
--timeout |
Request timeout in seconds (default: 30) |
--log-file |
Save detailed log to file |
--script |
Custom Frida network script path |
--skip-preflight |
Skip connectivity preflight check |
-v, --verbose |
Verbose console output |
--no-color |
Disable colored output |
--silent |
Suppress banner and progress |
🧪 Running Tests
# Run all tests
pytest tests/ -v
# With coverage report
pytest tests/ --cov=nuclei_frida --cov-report=html
🙏 Credits & Acknowledgments
Intrascan is built on the shoulders of giants:
ProjectDiscovery
- Nuclei - The powerful vulnerability scanner that inspired this tool's template format
- nuclei-templates - Community-powered vulnerability templates
Frida
- Dynamic instrumentation toolkit that makes this tool possible
Template Format
Intrascan uses the same YAML template format as Nuclei. You can use templates from the nuclei-templates repository directly.
📄 License
MIT License - See LICENSE for details.
Disclaimer: This tool is intended for authorized security testing only. Always obtain proper authorization before scanning any systems.
Metadata
Release files for intrascan 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| intrascan-0.1.1.tar.gz | 44.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| intrascan-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 73.4 kB
Release files / intrascan-0.1.1.tar.gz
| Download URL | intrascan-0.1.1.tar.gz |
|---|---|
| Size | 44.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3e1185ef38af6e1cefe6b52569989238d244ed8997f83df374964e9c96053783
|
|
BLAKE2b-256 checksum How to use checksums |
60185de9a6c860ddc4fff2b878f9e08264fa907cb6759993e8ddd3d31ea7d500
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / intrascan-0.1.1-py3-none-any.whl
| Download URL | intrascan-0.1.1-py3-none-any.whl |
|---|---|
| Size | 29.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79cd0f85bce714a8b2ebb97b4a6aa2f63731133706947cd605dce51e695177e7
|
|
BLAKE2b-256 checksum How to use checksums |
320cd15073175be1f07fe0350a1e1431c46952cdcb67af814d66f229621c4699
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Security for intrascan 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.