Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ActiveVPN logo

πŸ›‘οΈ ActiveVPN

The Ultimate Network Privacy & VPN Detection Tool

Python 3.8+ CI status PyPI version MIT license Docs Made by rkriad585

ActiveVPN inspects your system's network interfaces, analyzes running processes, checks your external IP against known hosting providers, and performs DNS leak tests β€” all in one hacker-style terminal UI. It tells you whether your VPN is actually working.

Screenshot

home screen

More screenshots: View all screenshots

Table of Contents

Key Features

  • Deep scan β€” detects VPNs via interface names, process names, and IP reputation in one pass.
  • Tor detection β€” specifically checks for active Tor services.
  • External IP analysis β€” queries public IP APIs and flags datacenter/hosting/proxy IPs.
  • DNS leak detection β€” compares your traffic IP with your DNS resolver IP.
  • IPv6 leak check β€” reports your external IPv6 address and warns when IPv6 may leak around a tunnel.
  • Overall verdict β€” combines every signal into a confidence score and a CLEAN / SUSPICIOUS / LIKELY VPN-PROXY / VPN DETECTED label.
  • Kill switch β€” terminates active VPN processes, with a --kill-force fallback.
  • History & export β€” automatically logs scans to your platform's data directory, viewable with --history and exportable as JSON, CSV, or TXT.
  • Library API β€” importable as a Python package (activevpn.scan(), NetworkDetector, typed ScanResult), with silent mode and watch callbacks for developers.
  • Watch mode β€” continuously re-scans at a configurable interval.
  • Configurable β€” patterns, colors, and API endpoints can be overridden with a JSON config file.

Installation

Requires Python 3.8 or newer and pip.

pip install activevpn

Or install from source:

git clone https://github.com/rkriad585/ActiveVPN.git
cd ActiveVPN
pip install -r requirements.txt

See docs/installation.md for platform-specific notes (Linux, macOS, Windows, Termux).

Quick Start

# Run a full scan
activevpn

You should see a system check, an external IP analysis, a DNS consistency check, and an overall verdict.

Usage Examples

# Standard network scan (interfaces, processes, IP, DNS)
activevpn

# Kill active VPN processes (requires admin/root)
sudo activevpn --kill

# Force-kill stubborn VPN processes
sudo activevpn --kill-force

# Show past scan results
activevpn --history

# Export scan history as CSV
activevpn --export csv

# Clear all saved history
activevpn --clear-history

# Continuously rescan every 30 seconds
activevpn --watch 30

# Verbose debug logging
activevpn --debug

# Show help
activevpn --help

Exit codes: 0 = no VPN detected, 1 = VPN/Tor/Proxy detected, 2 = offline or error. Full reference in docs/cli.md.

Documentation

Doc Description
docs/getting-started.md First steps with ActiveVPN
docs/installation.md Install instructions for every platform
docs/usage.md Daily usage and examples
docs/cli.md Full command-line reference
docs/configuration.md Config file and environment variables
docs/architecture.md How the code is organized
docs/development.md Building, testing, and packaging
docs/deployment.md Running on servers and in containers
docs/faq.md Frequently asked questions
docs/troubleshooting.md Common issues and fixes
docs/screenshots.md All screenshots
GitHub Pages Online documentation site

Interface

ActiveVPN is a command-line tool. It is distributed as the activevpn console script (see [project.scripts] in pyproject.toml) and can also be launched with python main.py.

When run without flags it performs a full scan and prints four sections:

  1. System Internal Check β€” detected VPN/Tor interfaces and processes.
  2. External IP Analysis β€” public IP, country, ISP/org, IPv4/IPv6, and a verdict.
  3. DNS Consistency Check β€” traffic IP vs. DNS resolver IP.
  4. Overall Verdict β€” confidence score (0–100) and label.

The tool returns meaningful exit codes (0/1/2) so it can be used in scripts and CI.

Architecture

ActiveVPN/
β”œβ”€β”€ main.py               # Entry point + CLI (argparse) + rich TUI rendering
β”œβ”€β”€ config.py             # Legacy shim β†’ re-exports activevpn.config
β”œβ”€β”€ pyproject.toml        # Packaging, metadata, console script
β”œβ”€β”€ requirements.txt      # Runtime dependencies
β”œβ”€β”€ activevpn/            # The library (importable as a package)
β”‚   β”œβ”€β”€ __init__.py       # Public API: scan(), NetworkDetector, ScanResult, ...
β”‚   β”œβ”€β”€ config.py         # Config dataclass, platformdirs paths, load_config()
β”‚   β”œβ”€β”€ detector.py       # NetworkDetector + typed data model (ScanResult, Verdict, IPInfo, ...)
β”‚   β”œβ”€β”€ logger.py         # History persistence, load/clear, and export helpers
β”‚   β”œβ”€β”€ logo.py           # ASCII banner generation (pyfiglet + rich)
β”‚   └── help.py           # Help menu rendering
β”œβ”€β”€ core/                 # Backward-compatible shim (deprecated, use activevpn)
β”œβ”€β”€ tests/                # pytest suite (mocked psutil/requests)
β”œβ”€β”€ logo/                 # Brand logo
└── docs/                 # Documentation

The flow: main.run() parses arguments β†’ NetworkDetector.scan_network() collects system + online signals β†’ _compute_verdict() scores them β†’ save_log() persists the result β†’ tables/panels are rendered with rich.

Using as a Library

import activevpn

# One-shot scan (silent β€” no TUI)
result = activevpn.scan(console=None)
print(result.verdict.label, result.verdict.score)   # CLEAN 0
print(result.to_json())                             # serializable output

# Programmatic configuration (stored under ~/.config/neostore/ActiveVPN/config.toml)
cfg = activevpn.load_config()
cfg.vpn_process_names.append("my-vpn-daemon")

# Continuous watch with callbacks
detector = activevpn.NetworkDetector(console=None, config=cfg)
for r in detector.watch(interval=60, on_change=lambda r: print("Verdict changed!", r.verdict.label)):
    pass

See docs/architecture.md for details.

Requirements

Requirement Minimum
OS Linux, macOS, Windows, or Android (Termux)
Runtime Python 3.8+
Network Internet access for the public IP and DNS checks

No special hardware is required. --kill and --kill-force need administrator/root privileges.

Prerequisites

  • Python 3.8+ β€” download from python.org or your package manager.
  • pip β€” bundled with Python on modern installers.

On Linux:

sudo apt update && sudo apt install -y python3 python3-pip

On macOS (Homebrew):

brew install python

Development

# Clone and install dependencies
git clone https://github.com/rkriad585/ActiveVPN.git
cd ActiveVPN
python -m venv .venv
. .venv/bin/activate        # Windows: .venv\Scripts\Activate.ps1
pip install -r requirements.txt pytest build twine

# Run the test suite
pytest -q

# Build the distributable packages
python -m build

# Verify the built artifacts
python -m twine check dist/*

The CI workflow (.github/workflows/ci.yml) runs pytest on Ubuntu, Windows, and macOS with Python 3.8 and 3.12. See docs/development.md.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for setup, branch rules, commit style, and the pull request workflow. All participants must follow the CODE_OF_CONDUCT.md.

Security

If you find a security issue, please read SECURITY.md before reporting it. Do not open a public issue for vulnerabilities.

License

Distributed under the MIT License. See LICENSE for the full text.

Acknowledgments

  • Built with rich for the terminal UI and pyfiglet for the ASCII banner.
  • Public IP and DNS data provided by the ip-api.com, ipinfo.io, ipapi.co, and ipify.org APIs.
  • Made with ❀️ by rkriad585.

Releases

Packages

Contributors

Languages