Skip to main content

A Python CLI to quickly check your Wi-Fi network password.

Project description


security: bandit Code style: black

A Python CLI to quickly check your Wi-Fi network password.



Usage: vvifi [OPTIONS]

  A Python CLI to quickly check your Wi-Fi network password. By default, the
  network you are connected to is considered.

  --networks          Show the names (SSIDs) of saved Wi-Fi networks and exit.
  -n, --network NAME  The name (SSID) of a Wi-Fi network you have previously
                      connected to.

  --version           Show the version and exit.
  --help              Show this message and exit.


  • poetry install
  • poetry shell

Tech Stack

Packaging and Development

This CLI was created with Cookiecutter and the joaopalmeiro/cookiecutter-templates/python-cli project template.


  • python.pythonPath (settings.json file) is deprecated. More info here, here, and here. Alternative (source): "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python".
  • subprocess module (Python 3.6).
  • sys.platform values.
  • security find-generic-password -h.
  • /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -h (more info here).
  • Regular expression used by textwrap.dedent().
  • Classifiers:
    • "Operating System :: MacOS" + "Operating System :: MacOS :: MacOS X" (macOS).
    • Mac OS 9 was succeeded by Mac OS X.
    • In the future, replace with "Operating System :: OS Independent".
  • Click:
  • PyInquirer and inquirer packages.
  • Find the interface for the Wi-Fi network (source): networksetup -listallhardwareports.
  • List preferred Wi-Fi networks (source): networksetup -listpreferredwirelessnetworks en0 (or networksetup -listpreferredwirelessnetworks en1). The wireless networks the computer has connected to are listed here.
  • click-help-colors package.
  • Datadog's mkdocs-click extension.

python-string-utils implementation to remove indentation from multiline strings

import re
from typing import Pattern

# The second `^` is to match a character not present in the list.
MARGIN_RE: Pattern[str] = re.compile(r"^[^\S\r\n]+")

def strip_margin(input_string: str) -> str:
    # ...
    line_separator = "\n"
    lines = [MARGIN_RE.sub("", line) for line in input_string.split(line_separator)]
    out = line_separator.join(lines)

    return out

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vvifi-0.1.0.tar.gz (6.4 kB view hashes)

Uploaded source

Built Distribution

vvifi-0.1.0-py3-none-any.whl (7.0 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page