aardmud.org
===========
.. raw:: html
#############################################################################
##[ ]##########################
##[ --- Welcome to Aardwolf MUD --- ]############ /" #########
##[ ]######## _-`"""', #######
##[ Players Currently Online: 220 ]##### _-" ) ######
##[ ]### _-" | ######
################################################### _-" ; #######
######################################### __---___-" | ########
###################################### _" ,, ; `,, ####
#################################### _-" ;'' | ,' ; ####
################################## _" ' `"' ; ####
########################### __---; ,' ######
######################## __"" ___ ,' ########
#################### _-"" -"" _ ,' ##########
################### `-_ _ ; ############
##################### ""----""" ; ; #############
####################### / ; ; ##############
##################### / ; ; ###############
################### / ` ; ################
################# / ; #################
-----------------------------------------------------------------------------
Enter your character name or type 'NEW' to create a new character
-----------------------------------------------------------------------------
What be thy name, adventurer?
Please enter a character name, 'NEW' to create a new player or 'Q' to disconnect.
What be thy name, adventurer?
.. raw:: html
aardmud.org:4000
Protocol Support
----------------
MUD-specific protocols detected via MSSP flags or
Telnet negotiation.
- **MSSP**: :proto-no:`No`
- **GMCP**: :proto-negotiated:`Negotiated`
- **MSDP**: :proto-no:`No`
- **MCCP**: :proto-no:`No`
- **MCCP2**: :proto-no:`No`
- **MXP**: :proto-no:`No`
- **MSP**: :proto-no:`No`
- **MCP**: :proto-no:`No`
- **ZMP**: :proto-no:`No`
Telnet Fingerprint
------------------
:ref:`ab3ab724663115a7... `
*This fingerprint is shared by 6 other servers.*
**Options requested from client**: ``NAWS``, ``TTYPE``
**Data source**: `ab3ab724663115a7/7bb6679f5875a629.json `_
The complete JSON record collected during the scan,
including Telnet negotiation results and any
MSSP metadata.
.. code-block:: json
{
"server-probe": {
"fingerprint": "ab3ab724663115a7",
"fingerprint-data": {
"offered-options": [],
"probed-protocol": "server",
"refused-options": [
"BINARY",
"CHARSET",
"COM_PORT",
"ECHO",
"EOR",
"SGA",
"STATUS"
],
"requested-options": [
"NAWS",
"TTYPE"
],
"scan-type": "quick"
},
"session_data": {
"banner_after_return": "Please enter a character name, 'NEW' to create a new player or 'Q' to disconnect.\n\rWhat be thy name, adventurer? ",
"banner_before_return": "#############################################################################\n\r##[ ]##########################\n\r##[ --- Welcome to Aardwolf MUD --- ]############ /\" #########\n\r##[ ]######## _-`\"\"\"', #######\n\r##[ Players Currently Online: 220 ]##### _-\" ) ######\n\r##[ ]### _-\" | ######\n\r################################################### _-\" ; #######\n\r######################################### __---___-\" | ########\n\r###################################### _\" ,, ; `,, ####\n\r#################################### _-\" ;'' | ,' ; ####\n\r################################## _\" ' `\"' ; ####\n\r########################### __---; ,' ######\n\r######################## __\"\" ___ ,' ########\n\r#################### _-\"\" -\"\" _ ,' ##########\n\r################### `-_ _ ; ############\n\r##################### \"\"----\"\"\" ; ; #############\n\r####################### / ; ; ##############\n\r##################### / ; ; ###############\n\r################### / ` ; ################\n\r################# / ; #################\n\r-----------------------------------------------------------------------------\n\r Enter your character name or type 'NEW' to create a new character\n\r-----------------------------------------------------------------------------\n\rWhat be thy name, adventurer? ",
"encoding": "ascii",
"option_states": {
"server_offered": {
"0x55": false,
"0x56": false,
"0x66": false,
"0xc8": false,
"GMCP": true
},
"server_requested": {
"0x66": false,
"NAWS": true,
"TTYPE": true
}
},
"scan_type": "quick",
"timing": {
"probe": 0.5030090808868408,
"total": 3.1710715293884277
}
}
},
"sessions": [
{
"connected": "2026-02-08T16:55:29.357258+00:00",
"host": "aardmud.org",
"ip": "23.111.142.226",
"port": 4000
}
]
}
Connection Log
--------------
Debug-level log of the Telnet negotiation session,
showing each IAC (Interpret As Command) exchange
between client and server.
.. code-block:: text
DEBUG client.py:770 Fingerprint client: host=aardmud.org port=4000
INFO client_base.py:174 Connected to
DEBUG stream_writer.py:697 recv IAC WILL MCCP2_COMPRESS
DEBUG stream_writer.py:713 WILL MCCP2_COMPRESS unsolicited
DEBUG stream_writer.py:1869 handle_will(MCCP2_COMPRESS)
DEBUG stream_writer.py:3036 remote_option[MCCP2_COMPRESS] = False
DEBUG stream_writer.py:938 send IAC DONT MCCP2_COMPRESS
WARNING stream_writer.py:1974 Unhandled: WILL MCCP2_COMPRESS.
DEBUG stream_writer.py:697 recv IAC WILL MCCP_COMPRESS
DEBUG stream_writer.py:713 WILL MCCP_COMPRESS unsolicited
DEBUG stream_writer.py:1869 handle_will(MCCP_COMPRESS)
DEBUG stream_writer.py:3036 remote_option[MCCP_COMPRESS] = False
DEBUG stream_writer.py:938 send IAC DONT MCCP_COMPRESS
WARNING stream_writer.py:1974 Unhandled: WILL MCCP_COMPRESS.
DEBUG stream_writer.py:697 recv IAC WILL AARDWOLF
DEBUG stream_writer.py:713 WILL AARDWOLF unsolicited
DEBUG stream_writer.py:1869 handle_will(AARDWOLF)
DEBUG stream_writer.py:3036 pending_option[DO + AARDWOLF] = True
DEBUG stream_writer.py:938 send IAC DO AARDWOLF
DEBUG stream_writer.py:3036 remote_option[AARDWOLF] = True
DEBUG stream_writer.py:3036 pending_option[DO + AARDWOLF] = False
DEBUG stream_writer.py:697 recv IAC WILL ATCP
DEBUG stream_writer.py:713 WILL ATCP unsolicited
DEBUG stream_writer.py:1869 handle_will(ATCP)
DEBUG stream_writer.py:3036 pending_option[DO + ATCP] = True
DEBUG stream_writer.py:938 send IAC DO ATCP
DEBUG stream_writer.py:3036 remote_option[ATCP] = True
DEBUG stream_writer.py:3036 pending_option[DO + ATCP] = False
DEBUG stream_writer.py:697 recv IAC WILL GMCP
DEBUG stream_writer.py:713 WILL GMCP unsolicited
DEBUG stream_writer.py:1869 handle_will(GMCP)
DEBUG stream_writer.py:3036 pending_option[DO + GMCP] = True
DEBUG stream_writer.py:938 send IAC DO GMCP
DEBUG stream_writer.py:3036 remote_option[GMCP] = True
DEBUG stream_writer.py:3036 pending_option[DO + GMCP] = False
DEBUG stream_writer.py:697 recv IAC DO AARDWOLF
DEBUG stream_writer.py:1739 handle_do(AARDWOLF)
DEBUG stream_writer.py:3036 pending_option[WILL + AARDWOLF] = True
DEBUG stream_writer.py:938 send IAC WILL AARDWOLF
DEBUG stream_writer.py:3036 local_option[AARDWOLF] = True
DEBUG stream_writer.py:3036 pending_option[WILL + AARDWOLF] = False
DEBUG stream_writer.py:697 recv IAC DO TTYPE
DEBUG stream_writer.py:1739 handle_do(TTYPE)
DEBUG stream_writer.py:3036 pending_option[WILL + TTYPE] = True
DEBUG stream_writer.py:938 send IAC WILL TTYPE
DEBUG stream_writer.py:3036 pending_option[SB + TTYPE] = True
DEBUG stream_writer.py:3036 local_option[TTYPE] = True
DEBUG stream_writer.py:3036 pending_option[WILL + TTYPE] = False
DEBUG stream_writer.py:697 recv IAC DO NAWS
DEBUG stream_writer.py:1739 handle_do(NAWS)
DEBUG stream_writer.py:3036 pending_option[WILL + NAWS] = True
DEBUG stream_writer.py:938 send IAC WILL NAWS
DEBUG stream_writer.py:2306 send IAC SB NAWS (rows=25, cols=80) IAC SE
DEBUG stream_writer.py:3036 local_option[NAWS] = True
DEBUG stream_writer.py:3036 pending_option[WILL + NAWS] = False
DEBUG stream_writer.py:689 begin sub-negotiation SB AARDWOLF
DEBUG stream_writer.py:676 sub-negotiation cmd AARDWOLF SE completion byte
DEBUG stream_writer.py:2031 [SB + AARDWOLF] unsolicited
DEBUG stream_writer.py:1661 AARDWOLF: {'channel': 'status', 'channel_byte': 100, 'data_byte': 1, 'data_bytes': b'\x01'}
DEBUG client_base.py:463 negotiation failed after 4.00s.
DEBUG client_base.py:470 failed-reply: 'SB TTYPE'
DEBUG stream_writer.py:689 begin sub-negotiation SB AARDWOLF
DEBUG stream_writer.py:676 sub-negotiation cmd AARDWOLF SE completion byte
DEBUG stream_writer.py:2031 [SB + AARDWOLF] unsolicited
DEBUG stream_writer.py:1661 AARDWOLF: {'channel': 'status', 'channel_byte': 100, 'data_byte': 1, 'data_bytes': b'\x01'}
DEBUG stream_writer.py:3036 pending_option[DO + BINARY] = True
DEBUG stream_writer.py:938 send IAC DO BINARY
DEBUG stream_writer.py:3036 pending_option[DO + SGA] = True
DEBUG stream_writer.py:938 send IAC DO SGA
DEBUG stream_writer.py:3036 pending_option[DO + ECHO] = True
DEBUG stream_writer.py:938 send IAC DO ECHO
DEBUG stream_writer.py:3036 pending_option[DO + STATUS] = True
DEBUG stream_writer.py:938 send IAC DO STATUS
DEBUG stream_writer.py:3036 pending_option[DO + CHARSET] = True
DEBUG stream_writer.py:938 send IAC DO CHARSET
DEBUG stream_writer.py:3036 pending_option[DO + EOR] = True
DEBUG stream_writer.py:938 send IAC DO EOR
DEBUG stream_writer.py:3036 pending_option[DO + COM_PORT_OPTION] = True
DEBUG stream_writer.py:938 send IAC DO COM_PORT_OPTION
DEBUG stream_writer.py:3036 pending_option[DO + MSDP] = True
DEBUG stream_writer.py:938 send IAC DO MSDP
DEBUG stream_writer.py:3036 pending_option[DO + MSSP] = True
DEBUG stream_writer.py:938 send IAC DO MSSP
DEBUG stream_writer.py:3036 pending_option[DO + MSP] = True
DEBUG stream_writer.py:938 send IAC DO MSP
DEBUG stream_writer.py:3036 pending_option[DO + MXP] = True
DEBUG stream_writer.py:938 send IAC DO MXP
DEBUG stream_writer.py:3036 pending_option[DO + ZMP] = True
DEBUG stream_writer.py:938 send IAC DO ZMP
INFO fingerprinting.py:746 connection for server fingerprint 55b88c39615346b6
ERROR base_events.py:1821 Task exception was never retrieved
future: exception=TypeError('Object of type bytes is not JSON
serializable')>
Traceback (most recent call last):
File "/home/jquast/telnetlib3/telnetlib3/server_fingerprinting.py", line 189, in fingerprinting_client_shell
await _fingerprint_session(
File "/home/jquast/telnetlib3/telnetlib3/server_fingerprinting.py", line 288, in _fingerprint_session
_save_server_fingerprint_data(
File "/home/jquast/telnetlib3/telnetlib3/server_fingerprinting.py", line 532, in _save_server_fingerprint_data
return _save_fingerprint_to_dir(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jquast/telnetlib3/telnetlib3/fingerprinting.py", line 769, in _save_fingerprint_to_dir
_atomic_json_write(filepath, data)
File "/home/jquast/telnetlib3/telnetlib3/fingerprinting.py", line 872, in _atomic_json_write
json.dump(data, f, indent=2, sort_keys=True)
File "/usr/lib/python3.12/json/__init__.py", line 179, in dump
for chunk in iterable:
File "/usr/lib/python3.12/json/encoder.py", line 432, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "/usr/lib/python3.12/json/encoder.py", line 406, in _iterencode_dict
yield from chunks
File "/usr/lib/python3.12/json/encoder.py", line 406, in _iterencode_dict
yield from chunks
File "/usr/lib/python3.12/json/encoder.py", line 406, in _iterencode_dict
yield from chunks
File "/usr/lib/python3.12/json/encoder.py", line 326, in _iterencode_list
yield from chunks
File "/usr/lib/python3.12/json/encoder.py", line 406, in _iterencode_dict
yield from chunks
File "/usr/lib/python3.12/json/encoder.py", line 439, in _iterencode
o = _default(o)
^^^^^^^^^^^
File "/usr/lib/python3.12/json/encoder.py", line 180, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type bytes is not JSON serializable
*Generated by* `telnetlib3-fingerprint `_
.. code-block:: shell
telnetlib3-fingerprint --loglevel=debug aardmud.org 4000