Metadata-Version: 2.4
Name: mazip
Version: 0.1.4
Summary: Interactive local network information and verified SSH connections
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: paramiko<6,>=4
Requires-Dist: psutil<8,>=5.9
Provides-Extra: test
Requires-Dist: pytest<10,>=8; extra == "test"

# mazip 0.1.4

Interactive local network information and verified SSH connections. Requires Python 3.10 or newer. Not published to PyPI.

## Install on Kali / Ubuntu

Open a terminal in the extracted MeziLink directory:

```bash
sudo apt install pipx
bash install.sh
```

Open a NEW terminal and run `mazip` from any directory. No environment activation is required. pipx manages dependencies in its own isolated environment; it does not install into the system Python. You may move or remove the extracted project after installation.

The installer uses the bundled wheel, exposes the command with pipx, and runs `pipx ensurepath`. It removes only the old `alias mazip=".../.venv/bin/mazip"` format from .zshrc/.bashrc, saving a backup first. Other custom aliases are left unchanged.

To install manually:

```bash
pipx install --force ./dist/mazip-0.1.4-py3-none-any.whl
pipx ensurepath
```

Remove any old mazip alias before using the pipx command. Uninstall with `pipx uninstall mazip`.

## Install on Windows

```powershell
py -m venv .venv
.venv\Scripts\python.exe -m pip install .
.venv\Scripts\mazip.exe
```

## Use

- Option 1 displays local IPv4/IPv6 addresses, local username, SSH client availability, identifiable SSH server bind addresses/ports, and visible TCP listeners/UDP bindings. SSH listeners are identified by process name, not by an assumed port. Limited permissions are reported; firewall reachability and SSH account access are not verified.
- Option 2 asks for destination OS, IP, port, then TCP-only testing or SSH authentication.
- After SSH authentication, c opens a persistent interactive terminal; x runs a single noninteractive command. Ctrl+] closes the interactive shell channel and returns to the menu. Ctrl+C is forwarded to interrupt the remote command. Typing exit also returns to the menu. cd and shell variables persist within that shell, but not after closing and reopening it.
- Option 0 exits or disconnects.

```bash
mazip --local
mazip -S -vv
mazip -S -vv -f example.json
python -m mezilink
```

`-S` opens the destination menu. `-v` shows connection stages; `-vv` adds cipher and server metadata. `-f` loads JSON settings without passwords or commands.

## Connection security

The destination must already run an SSH service and accept your credentials. No installation, firewall changes or remote scanning are performed.

Existing known_hosts entries are checked. For an unknown server, independently compare the displayed SHA256 fingerprint with the destination console or administrator, then enter the full fingerprint. Merely copying the displayed value does not establish identity. This verification applies to the current connection only.

A verified `fingerprint` in the JSON settings becomes the independent trust pin and replaces known_hosts verification. Changed or mismatched identities are rejected. Passwords and private-key passphrases use hidden input and are not saved. Automatic SSH-agent and key discovery are disabled. Python does not guarantee secure erasure of secrets from memory.

## Platform and execution limits

Windows profiles require OpenSSH Server. Linux requires an SSH service. Android requires an existing SSH environment such as Termux. Selecting a profile does not detect or install a remote OS.

Preset commands and option x use separate noninteractive sessions, with 1 MiB output and 30-second waiting limits. Option c requests a remote PTY and preserves shell state, allows interactive input, and has no command duration/output cap. Linux terminal mode supports Ctrl+C, terminal resizing and raw keyboard input. The Windows client keyboard path is implemented but not tested; full-screen rendering depends on the local terminal and remote SSH server. The remote server must permit PTY and shell requests. A real local terminal is required for c. Closing a channel or timing out does not guarantee that the remote process stops. Single-command output has terminal control characters removed; interactive shell output retains terminal sequences for terminal behavior; its language depends on the destination.

Local addresses do not reveal a public NAT IP. Port listings may be incomplete due to OS permissions. A UDP binding does not prove remote reachability. When interface enumeration is unavailable, an explicit warning accompanies limited hostname-resolved addresses; interface status is unknown.

## Tests

```bash
python -m pip install '.[test]'
python -m pytest -q
```

See TEST_REPORT.md for the original functional validation and limitations. Version 0.1.2 removes the iOS profile. All application text is English; Python source contains no comments or docstrings. The internal Python module remains `mezilink`; the distribution and executable are `mazip`.

Reference: https://docs.paramiko.org/en/stable/api/client.html
