Transport Layer:Transmission Control Protocol (TCP)
Application Layer:Battle.net v1 TCP Messages (SID)
Message Id:0x46
Message Name:SID_NEWS_INFO
Direction:Server to Client
Used By:Diablo II, Diablo II Lord of Destruction
Warcraft III Reign of Chaos, Warcraft III The Frozen Throne
Message Format:
(does not include protocol header)
 (UINT8) Number of entries
(UINT32) Last logon timestamp
(UINT32) Oldest news timestamp
(UINT32) Newest news timestamp

For each entry:
    (UINT32) Timestamp
    (STRING) News


This packet contains news from Battle.net. Timestamps are in C/Unix format, biased for UTC.

Multiple separate news messages can be received. These should be treated the same as if one message was sent with several news entries.

If the 'Timestamp' field for an entry is zero, then that entry is the message of the day (and not a news entry in the normal respect).

| Edited: RealityRipple



When the official server sends this, it sends each entry in its own message with Number of entries set to 1 and Newest news timestamp set to the timestamp of the single entry that was sent in that message. Oldest news timestamp seems to be the same across all entries, but even when requesting all of the news, an entry with that timestamp is not guaranteed to also be sent.

For the "MotD" entry (timestamp = 0) the Newest news timestamp is neither 0 nor a value matching any of the other news entries that were sent. In my single sample it was newer than the newest actual news, but still a few years old. This MotD seems to be product-specific and can contain special characters. The last line seems to always be your last logon time, for example Last logon: Fri Sep 10 2:18 AM (double spaces between date and time intentional, not sure if it's do to the single-digit hour or some other reason). If no other MotD is set for a product it'll just be this line.

On the official server, news entries are sent newest-to-oldest, and the MotD is sent at the end.