vvifi

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


Keywords
vvifi, cli, wifi, password
License
MIT
Install
pip install vvifi==0.1.0

Documentation

vvifi

security: bandit Code style: black

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

References

Quickstart

Usage: vvifi [OPTIONS]

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

Options:
  --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.

Development

  • poetry install
  • poetry shell

Tech Stack

Packaging and Development

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

Notes

  • 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