RFC 1097

Telnet subliminal-message option

πŸ“… published April 1989, from ietf

RFC 1097 πŸŽ€ TELNET SUBLIMINAL-MESSAGE Option ✨

  • Request for Comments: 1097 🌸
  • Network Working Group, author B. Miller of CMU-NetDev πŸ’…
  • Date: 1 April 1989. Bestie, it's dated April 1st πŸ’€ iykyk
  • Category/status: it says it specifies a standard for the Internet community. No separate category label is given πŸ¦‹
  • Obsoletes / Updates: the header doesn't list any πŸ™ˆ

Status of This Memo ✨

Okay so this RFC specifies a standard for the Internet community. Hosts on the Internet that display subliminal messages within the Telnet protocol are expected to adopt and implement this standard πŸ”₯. Distribution of this memo is unlimited πŸ’œ.

1. Command name and code. πŸ’œ

SUBLIMINAL-MESSAGE        257

2. Command meanings. πŸ”₯

Here's the tea on each command πŸ’…

IAC WILL SUBLIMINAL-MESSAGE

The sender of this command REQUESTS permission to, or confirms that it will, display subliminal messages πŸ¦‹

IAC WONT SUBLIMINAL-MESSAGE

The sender of this command REFUSES to display subliminal messages. Not me… πŸ™…β€β™€οΈ

IAC DO SUBLIMINAL-MESSAGE

The sender of this command REQUESTS that the receiver, or grants the receiver permission to, display subliminal messages 🌈

IAC DONT SUBLIMINAL-MESSAGE

The sender of this command DEMANDS that the receiver not display subliminal messages. Strong energy πŸ‘‘

The subnegotiation (this is where the magic happens 🧚)

IAC SB SUBLIMINAL-MESSAGE <16-bit value> <16-bit value> <string> IAC
      SE

The sender specifies a message to be subliminally displayed by the remote host. If the client has agreed (via the standard WILL WONT DO DONT mechanism) to display subliminal messages, it must accept this subnegotiation and attempt to display the message string on the user's console for the specified duration. It then keeps doing that at fixed intervals until another SUBLIMINAL-MESSAGE subnegotiation shows up πŸ“. The position and rendering of the message are implementation dependent ✨.

The first 16-bit value is the duration of the message in milliseconds, sent MSB first ⏱️. The second 16-bit value is the frequency of displays, meaning the number of seconds between displays, and it's also sent MSB first πŸ”. The final parameter is the message itself πŸ’–.

The syntax looks like this πŸ‘€

                IAC SB SUBLIMINAL-MESSAGE
                    DURATION[1] DURATION[0]
                    FREQUENCY[1] FREQUENCY[0]
                    MESSAGE_STRING
                IAC SE
Okay bestie, super important! As the Telnet protocol requires, any 255 in the subnegotiation must be doubled so it doesn't get mixed up with the IAC character (which has a value of 255) 🚨

3. Default. 🫢

WONT SUBLIMINAL-MESSAGE
DONT SUBLIMINAL-MESSAGE

i.e., subliminal messages will not be displayed. Default vibes: no messages, no drama 🌸

4. Motivation for the option πŸ₯Ί

Honestly, "Message of the day" banners and newsletters just aren't enough to convince stubborn users to upgrade to the latest version of telnet 😭. Some users stick with the same outdated version for years. I ran into this while trying to convince people to use the REMOTE-FLOW-CONTROL Telnet option. These users need to be gently "persuaded" πŸ’…πŸ«Ά.

5. Description and implementation notes. 🧠

The quality of a client implementation depends on how well it can display and erase text strings in a small amount of time ⚑. The current CMU implementation takes terminal line speed, advanced video capabilities, and screen phosphor persistence into account when working out how long to wait before erasing a message πŸ–₯️.

It's allowed for the client to display the message text "in-line," but the best results come from printing it at the top or side of the console screen, where it just catches the corner of the user's visual field πŸ‘€βœ¨.

A version is currently under development at CMU that displays the message using Morse code over the keyboard caps-lock LED. Iconic πŸ”¦πŸ’€.

6. Examples πŸŽ€

In the following examples, all numbers are in decimal notation πŸ”’.

  1. Server suggests and client agrees to use SUBLIMINAL-MESSAGE.
(Server sends) IAC DO SUBLIMINAL-MESSAGE
(Client sends) IAC WILL SUBLIMINAL-MESSAGE
(Server sends) IAC SB SUBLIMINAL-MESSAGE 0 5 0 20 "Use VMS" IAC SE
The server is "suggesting" that the user employ a stable operating system. Not an unreasonable request… πŸ’»πŸ™ˆ

The client should immediately begin displaying the message and should continue to do so at regular intervals πŸ¦‹.

  1. Server preempts previous subliminal message.
(Server sends) IAC SB SUBLIMINAL-MESSAGE 0 5 0 20 "Go home" IAC SE

The client should now stop displaying the previous message and should immediately start showing the new one 🏠.

  1. Server has messed with user enough for one day.
(Server sends) IAC SB SUBLIMINAL-MESSAGE 0 0 0 0 "" IAC SE
The client must cease display of any subliminal messages. Log off, bestie πŸ« πŸ›‘.

7. Acknowledgements. 🀫

We do things just a little sneakier here at CMU. 🌈 Periodt 🌈

πŸ“¦ where this page comes from