4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / pyproject.toml TOML
[build-system]
requires = ["setuptools>=65.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "terminus"
version = "1.0.0"
description = "CVE-2026-24061 Telnet NEW_ENVIRON Authentication Bypass Scanner & Exploitation Framework"
readme = "README.md"
requires-python = ">=3.10"
license = {text = "Proprietary - Authorized Use Only"}
authors = [
    {name = "Security Research Team"}
]
keywords = [
    "security",
    "telnet",
    "cve-2026-24061",
    "vulnerability-scanner",
    "penetration-testing",
    "red-team"
]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Information Technology",
    "Topic :: Security",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Operating System :: OS Independent",
]

dependencies = [
    "telnetlib3>=2.0.0",
    "rich>=13.0.0",
    "pydantic>=2.0.0",
    "pydantic-settings>=2.0.0",
    "aiofiles>=23.0.0",
    "aiodns>=3.1.0",
    "jinja2>=3.1.0",
    "pyyaml>=6.0.0",
    "packaging>=23.0",
    "python-dateutil>=2.8.0",
    "click>=8.1.0",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.4.0",
    "pytest-asyncio>=0.21.0",
    "pytest-cov>=4.1.0",
    "black>=23.0.0",
    "ruff>=0.1.0",
    "mypy>=1.5.0",
    "bandit>=1.7.5",
    "types-PyYAML",
    "types-python-dateutil",
]

[project.scripts]
terminus = "terminus.cli:main"

[tool.setuptools.packages.find]
where = ["."]
include = ["terminus*"]
exclude = ["tests*", "docs*"]

[tool.black]
line-length = 100
target-version = ["py310", "py311", "py312"]
include = '\.pyi?$'
extend-exclude = '''
/(
  \.eggs
  | \.git
  | \.venv
  | build
  | dist
)/
'''

[tool.ruff]
line-length = 100
target-version = "py310"

[tool.ruff.lint]
select = [
    "E",
    "F",
    "W",
    "I",
    "N",
    "UP",
    "S",
    "B",
    "A",
    "C4",
    "DTZ",
    "T10",
    "EM",
    "ISC",
    "ICN",
    "PIE",
    "PT",
    "RSE",
    "RET",
    "SIM",
    "ARG",
    "PTH",
    "ERA",
    "PL",
]
ignore = [
    "S101",
    "PLR0913",
    "PLR0912",
    "PLR0915",
    "PLR0911",
    "PLR2004",
    "DTZ003",
    "DTZ005",
    "DTZ006",
    "EM101",
    "EM102",
    "W291",
    "W293",
    "PLW2901",
    "PLW0603",
    "SIM108",
    "SIM102",
    "SIM105",
    "E501",
    "E712",
    "RET504",
    "ARG004",
    "S110",
    "B904",
    "PTH123",
    "PLC0415",
    "PLR1714",
    "N806",
]

[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101", "PLR2004", "ARG001", "ARG002", "S108", "S104", "PLC0415", "PTH123", "PT018", "RSE102", "F841", "B007"]
"__init__.py" = ["F401"]
"__main__.py" = ["ARG001"]
"cli.py" = ["PLC0415", "PTH123"]

[tool.mypy]
python_version = "3.10"
warn_return_any = false
warn_unused_configs = true
disallow_untyped_defs = false
disallow_incomplete_defs = false
check_untyped_defs = true
disallow_untyped_decorators = false
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = false
warn_no_return = true
strict_equality = true
strict_concatenate = false

[[tool.mypy.overrides]]
module = "telnetlib3.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "aiodns.*"
ignore_missing_imports = true

[tool.pytest.ini_options]
minversion = "7.0"
asyncio_mode = "auto"
testpaths = ["tests"]
python_files = ["test_*.py", "*_test.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = [
    "--strict-markers",
    "--strict-config",
    "--cov=terminus",
    "--cov-report=term-missing",
    "--cov-report=html",
]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
    "integration: marks tests as integration tests",
    "exploit: marks tests involving exploitation",
]

[tool.coverage.run]
source = ["terminus"]
omit = [
    "*/tests/*",
    "*/__main__.py",
]

[tool.coverage.report]
precision = 2
exclude_lines = [
    "pragma: no cover",
    "def __repr__",
    "raise AssertionError",
    "raise NotImplementedError",
    "if __name__ == .__main__.:",
    "if TYPE_CHECKING:",
    "class .*\\bProtocol\\):",
    "@(abc\\.)?abstractmethod",
]

[tool.bandit]
exclude_dirs = ["tests", "venv", ".venv"]
skips = ["B101", "B601"]