First slice of `pm3py rawcli` — the interactive, annotated raw-command tool (separate from pyws and from the future `pm3py client` CLI). - pm3py/cli: a top-level `pm3py` console-script dispatcher (argparse) with a `rawcli` subcommand; prompt_toolkit gated behind a [rawcli] extra - rawcli/session.py: RawSession — device/field/transponder/entry-mode state + the segmented breadcrumb `[raw / hf|lf / $tag / 0x|0b]` - rawcli/trace_view.py: render a reader<->tag exchange as annotated, Proxmark-style trace lines, reusing TraceFormatter + the 14a/15693 decoders - rawcli/app.py: minimal PromptSession loop (connect best-effort, breadcrumb prompt, help/quit, raw-hex -> annotated exchange) Entry-mode toggle, identify/connection, the command catalog, and TLV editing follow in later phases. 9 hardware-free tests (session, trace render, CLI dispatch); device I/O is the user's local hardware test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
60 lines
1.5 KiB
TOML
60 lines
1.5 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=77.0.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "pm3py"
|
|
version = "0.1.0"
|
|
description = "Pure-Python async client for the Proxmark3 NG wire protocol over USB serial."
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
license = "MIT"
|
|
license-files = ["LICENSE"]
|
|
authors = [{ name = "Dangerous Things", email = "ops@dangerousthings.com" }]
|
|
keywords = [
|
|
"proxmark3",
|
|
"rfid",
|
|
"nfc",
|
|
"iso14443",
|
|
"iso15693",
|
|
"mifare",
|
|
"ntag",
|
|
"t55xx",
|
|
"smartcard",
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Topic :: Security",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
]
|
|
dependencies = [
|
|
"pyserial-asyncio>=0.6",
|
|
"bitarray>=2.0",
|
|
"pycryptodome>=3.10",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest"]
|
|
rawcli = ["prompt_toolkit>=3.0"]
|
|
|
|
[project.scripts]
|
|
pm3flash = "pm3py.flash_cli:main"
|
|
pm3py = "pm3py.cli:main"
|
|
|
|
# pyws workspace plugin — discovered by the pyws engine (installed alongside) via this group.
|
|
[project.entry-points."pyws.plugins"]
|
|
pm3py = "pm3py.pyws_plugin:Pm3pyPlugin"
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["pm3py*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|