From d99c9dadbc4ece99329be4978e8011119d2329b8 Mon Sep 17 00:00:00 2001 From: Jeff Quast Date: Sat, 21 Mar 2026 09:13:39 -0400 Subject: [PATCH 1/2] add IPADDRESS to NEW_ENVIRON in fingerprinting server --- telnetlib3/fingerprinting.py | 5 +++-- telnetlib3/fingerprinting_display.py | 2 +- telnetlib3/tests/test_fingerprinting.py | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/telnetlib3/fingerprinting.py b/telnetlib3/fingerprinting.py index 32aa910..b8e833d 100644 --- a/telnetlib3/fingerprinting.py +++ b/telnetlib3/fingerprinting.py @@ -162,6 +162,7 @@ class ProbeResult(TypedDict, total=False): ENVIRON_EXTENDED: list[str] = [ "HOME", "SHELL", + "IPADDRESS", "SSH_CLIENT", "SSH_TTY", "HOSTNAME", @@ -625,7 +626,7 @@ def _create_protocol_fingerprint( protocol = _get_protocol(writer) extra_dict = getattr(protocol, "_extra", {}) if protocol else {} - for key in ("HOME", "USER", "SHELL"): + for key in ("HOME", "USER", "SHELL", "IPADDRESS"): if key in extra_dict: fingerprint[key] = "True" if extra_dict[key] else "None" @@ -796,7 +797,7 @@ def _create_session_fingerprint(writer: Union[TelnetWriter, TelnetWriterUnicode] if term := (writer.get_extra_info("TERM") or writer.get_extra_info("term")): identity["TERM"] = term - for key in ("USER", "HOME", "SHELL", "LANG", "charset"): + for key in ("USER", "HOME", "SHELL", "LANG", "IPADDRESS", "charset"): if (value := writer.get_extra_info(key)) is not None and value: identity[key] = value diff --git a/telnetlib3/fingerprinting_display.py b/telnetlib3/fingerprinting_display.py index fb608e3..981916d 100644 --- a/telnetlib3/fingerprinting_display.py +++ b/telnetlib3/fingerprinting_display.py @@ -402,7 +402,7 @@ def _build_telnet_rows(term: "blessed.Terminal", data: Dict[str, Any]) -> List[T pairs.append(("SLC", ", ".join(parts))) env_vars = [] - for key in ("USER", "HOME", "SHELL"): + for key in ("USER", "HOME", "SHELL", "IPADDRESS"): if proto_data.get(key) == "True": env_vars.append(key) if env_vars: diff --git a/telnetlib3/tests/test_fingerprinting.py b/telnetlib3/tests/test_fingerprinting.py index 16a5344..0cf570f 100644 --- a/telnetlib3/tests/test_fingerprinting.py +++ b/telnetlib3/tests/test_fingerprinting.py @@ -1031,6 +1031,7 @@ def test_fingerprinting_server_on_request_environ(): assert "HOME" in env assert "SHELL" in env assert "USER" in env + assert "IPADDRESS" in env def test_fingerprint_server_shell_has_no_protocol_factory(): From fc3791a41ee210b9be87df898a67b06802c0ee07 Mon Sep 17 00:00:00 2001 From: Jeff Quast Date: Sat, 21 Mar 2026 09:28:16 -0400 Subject: [PATCH 2/2] request here, also --- telnetlib3/server.py | 1 + 1 file changed, 1 insertion(+) diff --git a/telnetlib3/server.py b/telnetlib3/server.py index 0c50e40..c214d0c 100755 --- a/telnetlib3/server.py +++ b/telnetlib3/server.py @@ -504,6 +504,7 @@ def on_request_environ(self) -> List[Union[str, bytes]]: "LINES", "COLORTERM", "EDITOR", + "IPADDRESS", # Request any other VAR/USERVAR the client wants to send VAR, USERVAR,