Skip to main content

VPN & Tunnel Detection CLI Tool

PyPI version Python version License: MIT Downloads

This project is a Python-based command-line tool that helps you detect whether an IP address is likely coming from a VPN, proxy, or abusive source. It uses a combination of IP metadata, ASN heuristics, and optional third-party API lookups for deeper inspection.


Features

  • Uses ASN and organization name heuristics to flag suspicious infrastructure
  • Geolocation and org data powered by IPInfo
  • Optional integration with AbuseIPDB and IPQualityScore
  • Checks against auto-updated threat feeds (Tor exit nodes, botnets, DDoS infra, etc.)
  • Confidence scoring (Low, Moderate, High)
  • Easy to use with vpnscan --ip <IP> command

Installation

  1. Clone the repository:
git clone https://github.com/your-username/vpn-tunnel-detector.git
cd vpn-tunnel-detector
  1. (Optional) Set up a virtual environment:
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install the tool locally in editable mode:
pip install --editable .

This gives you access to the global command vpnscan.


API Keys (Optional but Recommended)

To get deeper reputation data, you can plug in:

  • AbuseIPDB API Key
  • IPQualityScore API Key

Set them securely using a .env file.

Example Setup:

  1. Create the file:
cp .env.example .env
  1. Edit the file:
ABUSEIPDB_API_KEY=your_abuseipdb_key
IPQUALITYSCORE_API_KEY=your_ipqs_key

The app will auto-load them without hardcoding into the source.


Usage

Run the scan like this:

vpnscan --ip 104.28.228.78

You’ll get an output like:

------------------------ Welcome to the VPN & Threat Detection CLI Tool ------------------------

This tool checks if an IP address is associated with VPNs, proxies, abuse sources, or threat feeds (e.g. Tor, Botnets).
It uses heuristics, APIs, and auto-updated IP threat feeds for comprehensive detection.

You can cancel the operation at any time by pressing Ctrl+C.

Starting the detection process...

Detection Result
------------------
IP                : 104.28.228.78
ORG               : Cloudflare, Inc.
ASN               : AS13335
Location          : Washington, US
Is Suspicious     : Yes
Detection Reason  : ASN AS13335 is frequently used by VPN or hosting providers. Org name includes 'cloud', commonly seen in VPN or hosting services.
Abuse Score       : 100
IPQS Fraud Score  : 100
Confidence Level  : High
Disclaimer        : This result indicates whether the IP shows characteristics of VPN/proxy, abuse, or known threat activity. It does not imply malicious intent. Many users use VPNs for privacy or remote work.

Threat Feed Matches
--------------------
No matches found in known threat feeds.

Project Structure

pymod_detection_engine/
├── detection_engine/
│   ├── __init__.py
│   ├── run_engine.py
│   ├── config/
│   │   ├── __init__.py
│   │   └── suspicious_asns.json
│   ├── engine/
│   │   ├── __init__.py
│   │   ├── detection_engine.py
│   │   ├── heuristics.py
│   │   ├── ipinfo_wrapper.py
│   │   ├── threat_feeds.py
│   │   ├── abuseipdb_checker.py
│   │   └── ipqualityscore_checker.py
│   └── feeds/
│       ├── __init__.py
│       ├── fetch_feeds.py
│       └── known_bad_ips.json
├── .env.example
├── requirements.txt
├── setup.py
├── MANIFEST.in
├── README.md

License

MIT License — use, fork, improve, or share with attribution.


🙋‍♂️ About

This is a hobby project built for learning, awareness, and experimentation.
It’s not a replacement for professional threat intelligence platforms — but it’s a great start.
Feedback, ideas, or issues? Feel free to open one on GitHub.

Metadata

Release files for detection-engine 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for detection-engine 0.1.8
File Size Uploaded
detection_engine-0.1.8.tar.gz 18.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for detection-engine 0.1.8
File Interpreter ABI Platform
detection_engine-0.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 38.3 kB

Release files / detection_engine-0.1.8.tar.gz

Download URL detection_engine-0.1.8.tar.gz
Size 18.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4f12cac19ead5b21f5f2120951b5797d529871827471b86f2ae791325ffd2fd3
BLAKE2b-256 checksum
How to use checksums
3ba14377a4b890c759a1c9dceefb9a381e106be8a90a8faa8579089e771aa32f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.9

Release files / detection_engine-0.1.8-py3-none-any.whl

Download URL detection_engine-0.1.8-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d11e845fd3777913839f66a94a7950185049e729038e16fa85c04cd070b5767b
BLAKE2b-256 checksum
How to use checksums
ce58db72b2f934141d71853279a71c6c05e856a27a30379404a2af7fe26f6137
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page