Navigation

Console
Generate Code: All packets
Packets

Telnet Protocol


NOTICE: Telnet is a legacy protocol that is not used on Battle.net anymore as of 2005. All the below information should be taken with a grain of salt.

Telnet, if seen on Battle.net, has an icon that says Chat on it. Anyone using Telnet on Battle.net will always have the flags of 0x10 (UDP Plug) because they do not use UDP. Telnet is restricted to the following channels: Blizzard Tech Support, Open Tech Support, Public Chat, and The Void. All other channels are off-limits, including Blizzard Chat.

Telnet uses text, not binary. So if you send your regular binary packets, you will be disconnected and probably banned for 5 minutes. Telnet does not join or create games, since it is a text-based client and is for third-party usage only.

In Telnet, user flags are displayed in four (4) numbers (ex. 0010). They are not seen as the full eight (8) numbers (ex. 00000010) nor the normal DWORD (4 binary bytes). Channel flags can not be retrieved nor seen in Telnet, so channel flags are assumed to follow the same format.

Something worth noting, all products in Telnet are seen as their DWORD (and can be read as text, as most bots do already). For example, in Telnet, you may receive a 1001 packet with the product of STAR. You can read this as is, and it would be the same as reading from the binary SID_CHATEVENT, except it is not reversed (RATS). The same goes for every other product. This does not mean that the product field is actually a statstring, because it's not, no statstrings are available when using Telnet.

To use Telnet, you need to send the 0x03 byte instead of the normal 0x01 byte after connecting. After you send this byte, you need to send 0x04 and an end-of-line (such as 0x0D or, 0x0D and 0x0A). This will trigger the login process for your client.

Battle.net sends this to you so your client knows you need to enter a username:
Enter your login name and password.
You should now send your username followed by an end-of-line. After you send your username, you should receive:
Username: Your-name-here
You should now send your password, unmodified from settings and not encrypted, and an end-of-line. Then you should receive:
Password:
There is nothing after the colon sign (:). Depending on the information you gave, you could receive a success or fail.

Connection from [1.2.3.4]
This message represents that you have successfully logged on. The value 1.2.3.4 represents your IP address as seen by the server. This message is followed by 2010, 1007, 1001, and then 1018 (respectfully).

Incorrect username/password.
This message represents that the user you tried does not exist, or the password you tried does not match the one the server has. You should repeat the login process, but skipping the send of 0x04. There are no more messages after this.

1001 USER <username> <flags> [<product>]
This message represents someone in the channel, and is sent after 1007. The username is <username>, their flags are <flags> and their product is <product>. The brackets are static and do not represent that the product parameter is optional.

1002 JOIN <username> <flags> [<product>]
Same for 1001, but this is sent after you have already entered the channel and someone entered it. A message can be displayed for this (ex. <username> has entered the channel).

1003 LEAVE <username> <flags>
This message represents that someone has left the channel. <flags> is no longer supplied, but it used to be. Now the only parameter is <username>.

1004 WHISPER <username> <flags> "<message>"
This message represents that someone has sent you a whisper. The <flags> are the flags of the person who whispered you. The <message> is not escaped by anything so you have to read the message carefully. The quotes have no effect, really.

1005 TALK <username> <flags> "<message>"
This message represents that someone has talked in the channel. See 1004 for information.

1006 BROADCAST "<message>"
This is a broadcast from the server (ex. The server will be shutting down for maintenance).

1007 CHANNEL "<name>"
This message represents that you entered another channel that is called <name>. Channel flags are impossible to retrieve from this.

1009 USER <username> <flags> [<product>]
This message represents that someone's flags or product has changed (ex. Someone went from being a channel operator to a normal user, or vice versa). The parameters are the same for 1001.

1010 WHISPER <username> <flags> "<message>"
This message represents that you have sent a whisper to <username>. The <flags> are the flags of the person you whispered to.

1010 WHISPER your friends <flags> "<message>"
This message is a duplicate of the first 1010, but instead <username> is "your friends." This message represents that you whispered to your friends instead of a single user.

1018 INFO "<message>"
This message represents that the server has sent you information (ex. You are JoeUser, using Chat in the channel Public Chat 1.). Just like 1005, <message> is not escaped.

1019 ERROR "<message>"
This is the same as 1018, but instead represents that the server sent you an error (ex. That user is not logged on.).

1023 EMOTE <username> <flags> "<message>"
This is a duplicate of 1005, but instead is in the form of an emote instead of a message.

2000 NULL
This message represents that you are idle. This is sent every 30 seconds. Each time you send a new message, the 30-second timer is reset back to 30. Telnet connections are never killed for being idle, so this message really has no purpose. This is why some Telnet clients send "random" /users or /time commands, is to keep this message from popping up or as a response to the packet.

2010 NAME <username>
This is your unique name on Battle.net. If you are logged on more than once, this is your name with a number at the end (ex. JoeUser#2) instead of your normal name (ex. JoeUser).

This covers all of the messages that Telnet gives. After you have logged on successfully, anything you send is a message or command followed by an end-of-line. If you do not add an end-of-line to your message, it is appended to your last message. So for example, let's say I entered "123" without an end-of-line then entered "456" with an end-of-line, I would of just sent "123456" to the channel, instead of "456."

Telnet's flags are the same as the regular user flags seen everywhere. The only difference is that Telnet's flags are kept to 4 characters instead of 8 characters or a binary DWORD and the flags are displayed in hexadecimal (ex. 0010 UDP would be 0016 UDP in decimal). Also, flags are prefixed with zero's if they are not equal to 4 digits.

See the related documents for more information about flags and ID's. Telnet uses the same "values" as described in those documents. If you noticed something, SID_CHATEVENT uses the same event ID's as Telnet uses, except for 1013, 0014, and 0015, which are not used in Telnet. Another irony is the packet ID's in Telnet are 4 digits, just like the flags are, so maybe a DWORD in Telnet is actually 4 text-digits.

User Comments


For detailed questions and discussion, visit the Battle.net Research Forum

Sixen
Sep 22, 2010
06:16 AM

Looks like you are missing some. 1016 and 3000 were also Event_Info (duplicates of 1018 or perhaps they were used for something else?).

In addition, 1013, 1014, and 1015 were used. When a channel was full, you would receive 1013. If you could not join a channel from being on the restricted client, you would get 1015, and if you did a /whois of a channel that had 0 users, you would get 1014.

And... Telnet still exists, just to Blizzard employees only according to Ringo.

From my old bot: (they match 0x0F, save for "Event_" instead of "EID_" -- also looks like there is no NULL packet from 0x0F)
Case 1001: Event_SHOWUSER
Case 1002: Event_JOIN
Case 1003: Event_LEAVE
Case 1004: Event_WHISPER
Case 1005: Event_TALK
Case 1006: Event_BROADCAST
Case 1007: Event_CHANNEL
Case 1009: Event_USERFLAGS
Case 1010: Event_WHISPERSENT
Case 1013: Event_CHANNELFULL
Case 1014: Event_CHANNELDOESNOTEXIST
Case 1015: Event_CHANNELRESTRICTED
Case 1016: Event_INFO
Case 1018: Event_INFO
Case 1019: Event_ERROR
Case 1023: Event_EMOTE
Case 2000: Event_NULL
Case 2010: Event_NAME
Case 3000: Event_INFO


EDIT: Also, there were two commands that were CHAT commands only, beep and nobeep.
/beep - enable audible notifications
/nobeep - disable audible notifications

As far as I know, you could /beep and if they had it enabled, it would make their computer beep.

Sixen
Sep 27, 2010
04:22 AM

Telnet still works on the W3DM Server. You have to use the name "Anonymous" with no password since there are no account capabilities. Only the following commands work:
/? -- /help
/whois -- /where /whereis /whois
/friends -- /f
/users
/who
/time
/stats

Jailout2000
Sep 26, 2010
09:58 PM

/time also works.

Remember that you have to be on the demo.war3.battle.net server.

Sixen
Sep 26, 2010
10:51 PM

Whoops, forgot to add that back.

BNLS Server Status
bnls.bnetdocs.org:
bnls.net:
bnls.mattkv.net:
phix.no-ip.org:
pyro.no-ip.biz:
bnls.war-lords.net:
bnls.anubisdev.net:
knight.mattkv.net:

= Online       = Offline

Battle.net Server Status

Battle.net v1

uswest.battle.net:
exodus.battle.net:
useast.battle.net:
asia.battle.net:
europe.battle.net:
ustest.battle.net:
beta.battle.net:
classicbeta.battle.net:
demo.war3.battle.net:

Battle.net v2

us.logon.battle.net:
eu.logon.battle.net:
kr.logon.battle.net:
cn.logon.battle.net:
public-test.logon.battle.net:
us.patch.battle.net:
eu.patch.battle.net:
kr.patch.battle.net:
cn.patch.battle.net:
public-test.patch.battle.net:

emNet

cali.emwar.com:
dallas.emwar.com:
kc.emwar.com:
ny.emwar.com:

PvPGN

server.eurobattle.net:
rubattle.net:
sc.theabyss.ru:
wc3.theabyss.ru:
bnetd.fishbattle.net:

RBNETD

server.bnetdocs.org:

= Online       = Offline



Copyrights

Site scripts and design copyrights reserved to Don Cullen.
Contents copyrighted to Blizzard and their parent corporation, Vivendi.
Main credits for contents goes to Arta. View the rest of credits.
Demented Minds copyrights reserved to Don Cullen 2003-present.
Copyright infringements will be prosecuted to the fullest extent allowable by law.
Please view our legal disclaimer and terms of service.