Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-ymsg.c
blobb2b5703cb2f4c31a386b0ec28d68e0f896d3c3c7
1 /* packet-ymsg.c
2 * Routines for Yahoo Messenger YMSG protocol packet version 13 dissection
3 * Copyright 2003, Wayne Parrott <wayne_p@pacific.net.au>
4 * Copied from packet-yhoo.c and updated
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * SPDX-License-Identifier: GPL-2.0-or-later
13 #include "config.h"
15 #include <epan/packet.h>
17 #include "packet-tcp.h"
18 #include <epan/prefs.h>
19 #include <wsutil/strtoi.h>
21 void proto_register_ymsg(void);
22 void proto_reg_handoff_ymsg(void);
24 static int proto_ymsg;
25 static int hf_ymsg_version;
26 static int hf_ymsg_vendor;
27 static int hf_ymsg_len;
28 static int hf_ymsg_command;
29 static int hf_ymsg_status;
30 static int hf_ymsg_session_id;
32 static int hf_ymsg_content;
33 static int hf_ymsg_content_line;
34 static int hf_ymsg_content_line_key;
35 static int hf_ymsg_content_line_value;
37 static int ett_ymsg;
38 static int ett_ymsg_content;
39 static int ett_ymsg_content_line;
41 #define TCP_PORT_YMSG 23 /* XXX - this is Telnet! */
42 #define TCP_PORT_YMSG_2 25 /* And this is SMTP! */
43 #define TCP_PORT_YMSG_3 5050 /* This, however, is regular Yahoo Messenger */
45 /* desegmentation of YMSG over TCP */
46 static bool ymsg_desegment = true;
49 * This is based on libyahoo2's yahoolib2.c and enums reversed from Y!M 9.0.0.2162 DLLs
51 * See also
53 * http://libyahoo2.sourceforge.net/ymsg-9.txt
54 * Snapshot: https://web.archive.org/web/20230726025458/http://libyahoo2.sourceforge.net/ymsg-9.txt
56 * and
58 * http://www.venkydude.com/articles/yahoo.htm
59 * Snapshot: https://web.archive.org/web/20100407060623/http://www.venkydude.com/articles/yahoo.htm
61 * and
63 * http://www.cse.iitb.ac.in/~varunk/YahooProtocol.htm
64 * Snapshot: https://web.archive.org/web/20040214071503/http://www.cse.iitb.ac.in/~varunk/YahooProtocol.htm
66 * and
68 * http://www.geocrawler.com/archives/3/4893/2002/1/0/7459037/
69 * Snapshot: N/A
71 * and
73 * http://www.geocities.com/ziggycubbe/ym.html
74 * Snapshot: https://web.archive.org/web/20091026045625/http://www.geocities.com/ziggycubbe/ym.html
76 * and
78 * https://gitlab.com/escargot-chat/server/-/wikis/YMSG-Protocol
79 * Snapshot: https://web.archive.org/web/20220818055244/https://gitlab.com/escargot-chat/server/-/wikis/YMSG-Protocol
82 /* The size of the below struct minus 6 bytes of content */
83 #define YAHOO_HEADER_SIZE 20
85 #if 0
86 struct yahoo_rawpacket
88 char ymsg[4]; /* Packet identification string (YMSG) */
89 unsigned char version[2]; /* 2 bytes, little endian */
90 unsigned char vendor[2]; /* 2 bytes, little endian */
91 unsigned char len[2]; /* length - little endian */
92 unsigned char command[2]; /* command - little endian */
93 unsigned char status[4]; /* Status - ok, notify etc. */
94 unsigned char session_id[4]; /* Session ID */
95 char content[6]; /* 6 is the minimum size of the content */
97 #endif
100 * Commands
102 * Extracted from ymsglite.dll -> YMSGMessage::commandToString(void *outString, uint command)
104 enum yahoo_command {
105 YAHOO_CMD_USER_LOGIN = 1,
106 YAHOO_CMD_USER_LOGOFF = 2,
107 YAHOO_CMD_USER_AWAY = 3,
108 YAHOO_CMD_USER_BACK = 4,
109 YAHOO_CMD_USER_GET_MSGS = 5,
110 YAHOO_CMD_USER_HAS_MSG = 6,
111 YAHOO_CMD_ACTIVATE_ID = 7,
112 YAHOO_CMD_DEACTIVATE_ID = 8,
113 YAHOO_CMD_GET_USER_STATUS = 0xa,
114 YAHOO_CMD_USER_HAS_MAIL = 0xb,
115 YAHOO_CMD_START_CONFERENCE = 0xc,
116 YAHOO_CMD_CALENDAR_ALERT = 0xd,
117 YAHOO_CMD_USER_PERSONAL_MESSAGE = 0xe,
118 YAHOO_CMD_UPDATE_BUDDY_LIST = 0xf,
119 YAHOO_CMD_UPDATE_ID_LIST = 0x10,
120 YAHOO_CMD_UPDATE_IGNORE_LIST = 0x11,
121 YAHOO_CMD_PING = 0x12,
122 YAHOO_CMD_UPDATE_GROUP = 0x13,
123 YAHOO_CMD_SYSTEM_MESSAGE = 0x14,
124 YAHOO_CMD_CLIENT_STATS = 0x15,
125 YAHOO_CMD_CLIENT_ALERT_STATS = 0x16,
126 YAHOO_CMD_GROUP_MESSAGE = 0x17,
127 YAHOO_CMD_HOST_CONFERENCE = 0x18,
128 YAHOO_CMD_JOIN_CONFERENCE = 0x19,
129 YAHOO_CMD_DECLINE_CONFERENCE = 0x1a,
130 YAHOO_CMD_LEAVE_CONFERENCE = 0x1b,
131 YAHOO_CMD_INVITE_CONFERENCE = 0x1c,
132 YAHOO_CMD_SAY_CONFERENCE = 0x1d,
133 YAHOO_CMD_CHAT_LOGIN = 0x1e,
134 YAHOO_CMD_CHAT_LOGOFF = 0x1f,
135 YAHOO_CMD_CHAT_MSG = 0x20,
136 YAHOO_CMD_GAMES_USER_LOGIN = 0x28,
137 YAHOO_CMD_GAMES_USER_LOGOFF = 0x29,
138 YAHOO_CMD_GAMES_USER_HAS_MSG = 0x2a,
139 YAHOO_CMD_NET2PHONE_STATS = 0x2c,
140 YAHOO_CMD_ADDRESS_BOOK_ALERT = 0x33,
141 YAHOO_CMD_AUCTION_ALERT = 0x3c,
142 YAHOO_CMD_USER_FT = 0x46,
143 YAHOO_CMD_USER_FT_REPLY = 0x47,
144 YAHOO_CMD_USER_CONVERSE = 0x48,
145 YAHOO_CMD_USER_WEB_TOUR = 0x49,
146 YAHOO_CMD_IM_ENABLE_VOICE = 0x4a,
147 YAHOO_CMD_USER_SEND_MSG = 0x4b,
148 YAHOO_CMD_SEND_PORT_CHECK = 0x4c,
149 YAHOO_CMD_SEND_DATA_THRU = 0x4d,
150 YAHOO_CMD_P2P_START = 0x4f,
151 YAHOO_CMD_MSGR_WEBCAM_TOKEN = 0x50,
152 YAHOO_CMD_STATS = 0x51,
153 YAHOO_CMD_USER_LOGIN2 = 0x54,
154 YAHOO_CMD_PRE_LOGIN_DATA = 0x55,
155 YAHOO_CMD_GET_COOKIE_DATA = 0x56,
156 YAHOO_CMD_HELO = 0x57,
157 YAHOO_CMD_FEATURE_NOT_SUPPORTED = 0x58,
158 YAHOO_CMD_ADD_BUDDY = 0x83,
159 YAHOO_CMD_REMOVE_BUDDY = 0x84,
160 YAHOO_CMD_MODIFY_IGNORE_LIST = 0x85,
161 YAHOO_CMD_DENY_BUDDY_ADD = 0x86,
162 YAHOO_CMD_RENAME_GROUP = 0x89,
163 YAHOO_CMD_KEEP_ALIVE = 0x8a,
164 YAHOO_CMD_YPC_ADD_FRIEND_APPROVAL = 0x8b,
165 YAHOO_CMD_CHALLENGE = 0x8c,
166 YAHOO_CMD_ADD_BUDDY_INSTANT_APPROVAL = 0x8d,
167 YAHOO_CMD_CHAT_MSGR_USER_LOGIN = 0x96,
168 YAHOO_CMD_CHAT_GOTO_USER = 0x97,
169 YAHOO_CMD_CHAT_ROOM_JOIN = 0x98,
170 YAHOO_CMD_CHAT_ROOM_PART = 0x9b,
171 YAHOO_CMD_CHAT_ROOM_INVITE = 0x9d,
172 YAHOO_CMD_CHAT_MSGR_USER_LOGOFF = 0xa0,
173 YAHOO_CMD_CHAT_PING = 0xa1,
174 YAHOO_CMD_CHAT_WEBCAM_TOKEN = 0xa7,
175 YAHOO_CMD_CHAT_PUBLIC_MSG = 0xa8,
176 YAHOO_CMD_CHAT_ROOM_CREATE = 0xa9,
177 YAHOO_CMD_GAMES_INVITE = 0xb7,
178 YAHOO_CMD_GAMES_SEND_DATA = 0xb8,
179 YAHOO_CMD_EDIT_INVISIBLE_TO_LIST = 0xb9,
180 YAHOO_CMD_EDIT_VISIBLE_TO_LIST = 0xba,
181 YAHOO_CMD_ANTI_BOT = 0xbb,
182 YAHOO_CMD_AVATAR_CHANGED = 0xbc,
183 YAHOO_CMD_FRIEND_ICON = 0xbd,
184 YAHOO_CMD_FRIEND_ICON_DOWNLOAD = 0xbe,
185 YAHOO_CMD_AVATAR_GET_FILE = 0xbf,
186 YAHOO_CMD_AVATAR_GET_HASH = 0xc0,
187 YAHOO_CMD_DISPLAY_TYPE_CHANGED = 0xc1,
188 YAHOO_CMD_FRIEND_ICON_FT = 0xc2,
189 YAHOO_CMD_GET_COOKIE = 0xc3,
190 YAHOO_CMD_ADDRESS_BOOK_CHANGED = 0xc4,
191 YAHOO_CMD_SET_VISIBILITY = 0xc5,
192 YAHOO_CMD_SET_AWAY_STATUS = 0xc6,
193 YAHOO_CMD_DISPLAY_IMAGE_PREFS = 0xc7,
194 YAHOO_CMD_VERIFY_USER = 0xc8,
195 YAHOO_CMD_AUDIBLE = 0xd0,
196 YAHOO_CMD_IM_PANEL_FEATURE = 0xd2,
197 YAHOO_CMD_SHARE_CONTACTS = 0xd3,
198 YAHOO_CMD_IM_SESSION = 0xd4,
199 YAHOO_CMD_SUBSCRIPTION = 0xd5,
200 YAHOO_CMD_BUDDY_AUTHORIZE = 0xd6,
201 YAHOO_CMD_PHOTO_ADD = 0xd7,
202 YAHOO_CMD_PHOTO_SELECT = 0xd8,
203 YAHOO_CMD_PHOTO_DELETE = 0xd9,
204 YAHOO_CMD_PHOTO_FILE_REQUEST = 0xda,
205 YAHOO_CMD_PHOTO_POINTER = 0xdb,
206 YAHOO_CMD_FXFER_INVITE = 0xdc,
207 YAHOO_CMD_FXFER_SEND = 0xdd,
208 YAHOO_CMD_FXFER_RECEIVE = 0xde,
209 YAHOO_CMD_UPDATE_CAPABILITY = 0xdf,
210 YAHOO_CMD_REPORT_SPAM = 0xe0,
211 YAHOO_CMD_MINGLE_DATA = 0xe1,
212 YAHOO_CMD_ALERT = 0xe2,
213 YAHOO_CMD_APP_REGISTRY = 0xe3,
214 YAHOO_CMD_NEW_USER = 0xe4,
215 YAHOO_CMD_ACCEPT_MSGR_INVITE = 0xe5,
216 YAHOO_CMD_MSGR_USAGE = 0xe6,
217 YAHOO_CMD_BUDDY_MOVE = 0xe7,
218 YAHOO_CMD_GET_VOICE_CRUMB = 0xe8,
219 YAHOO_CMD_PLUGIN_SESSION_INITIATION = 0xe9,
220 YAHOO_CMD_APPLICATION_MESSAGE = 0xea,
221 YAHOO_CMD_APPLICATION_PRESENCE = 0xeb,
222 YAHOO_CMD_FXFER_PLUGIN_INVITE = 0xec,
223 YAHOO_CMD_PC2MOBILE_FXFER = 0xed,
224 YAHOO_CMD_PREFERENCE = 0xef,
225 YAHOO_CMD_BUDDY_INFO = 0xf0,
226 YAHOO_CMD_BUDDY_LIST = 0xf1,
227 YAHOO_CMD_CHECK_PREMIUM_SMS_BALANCE = 0xf2,
228 YAHOO_CMD_WIDGET_BUDDY_LIST = 0xfc,
229 YAHOO_CMD_WIDGET_BUDDY_INFO = 0xfd,
230 YAHOO_CMD_WIDGET_ACTION = 0xfe,
231 YAHOO_CMD_NEWS_ALERTS = 0x12c,
232 YAHOO_CMD_CORP_USER_LOGIN = 0x1c2,
233 YAHOO_CMD_MSG_RE_LOGIN = 0x1c3,
234 YAHOO_CMD_CORP_ID_COPR_P2P_INIT = 0x1c4,
235 YAHOO_CMD_CORP_CHAT_MSG = 0x1c5,
236 YAHOO_CMD_CORP_GAMES_USER_HAS_MSG = 0x1c6,
237 YAHOO_CMD_SECURE_USER_LOGIN = 0x1cc,
238 YAHOO_CMD_SECURE_IM_MSG = 0x1cd,
239 YAHOO_CMD_SECURE_CHAT_SAY_MSG = 0x1cf,
240 YAHOO_CMD_SECURE_GAMES_USER_HAS_MSG = 0x1d0,
241 YAHOO_CMD_SYMANTEC_MSGS = 0x1f4,
242 YAHOO_CMD_MOBILE_SEND_SMS_MESSAGE = 0x2ea,
243 YAHOO_CMD_MOBILE_SMS_LOGIN = 0x2ec,
244 YAHOO_CMD_MOBILE_SMS_NUMBER = 0x2ed,
245 YAHOO_CMD_ANON_LOGOFF = 0x322,
246 YAHOO_CMD_ANON_HAS_MSG = 0x326,
247 YAHOO_CMD_CLIENT_NETSTAT = 0x3e8,
248 YAHOO_CMD_P2P_USER = 0x3e9,
249 YAHOO_CMD_P2P_STATE = 0x3ea,
250 YAHOO_CMD_LWM_LOGIN = 0x44c,
251 YAHOO_CMD_LWM_LOGOFF = 0x44d,
252 YAHOO_CMD_OPI_LOGIN = 0x44e,
253 YAHOO_CMD_OPI_LOGOFF = 0x44f,
254 YAHOO_CMD_OPI_IM = 0x450,
255 YAHOO_CMD_USER_HAS_OPI_MESSAGE = 0x451,
256 YAHOO_CMD_LWMOPI_CHECK_LOGIN = 0x452,
257 YAHOO_CMD_LWMOPI_START_OPI = 0x453,
258 YAHOO_CMD_LWMOPI_STOP_OPI = 0x454,
262 * Command Statuses
264 * Extracted from ymsglite.dll -> YMSGMessage::statusToString(void *outString, int status)
266 enum yahoo_status {
267 YAHOO_STATUS_DUPLICATE = -3,
268 YAHOO_STATUS_ERR = -1,
269 YAHOO_STATUS_OK = 0,
270 YAHOO_STATUS_NOTIFY = 1,
271 YAHOO_STATUS_NOT_AVAILABLE = 2,
272 YAHOO_STATUS_NEW_BUDDYOF = 3,
273 YAHOO_STATUS_PARTIAL_LIST = 5,
274 YAHOO_STATUS_SAVED_MSG = 6,
275 YAHOO_STATUS_BUDDYOF_DENIED = 7,
276 YAHOO_STATUS_INVALID_USER = 8,
277 YAHOO_STATUS_CHUNKING = 9,
278 YAHOO_STATUS_INVITED = 0xb,
279 YAHOO_STATUS_DONT_DISTURB = 0xc,
280 YAHOO_STATUS_DISTURB_ME = 0xd,
281 YAHOO_STATUS_NEW_BUDDYOF_AUTH = 0xf,
282 YAHOO_STATUS_WEB_MSG = 0x10,
283 YAHOO_STATUS_ACK = 0x12,
284 YAHOO_STATUS_RE_LOGIN = 0x13,
285 YAHOO_STATUS_SPECIFIC_SNDR = 0x16,
286 YAHOO_STATUS_INCOMP_VERSION = 0x18,
287 YAHOO_STATUS_REQUEST = 0x1a,
288 YAHOO_STATUS_SMS_CARRIER = 0x1d,
289 YAHOO_STATUS_IS_GROUP_IM = 0x21,
290 YAHOO_STATUS_PRE_LOGIN_SUCCEEDED = 0x64,
291 YAHOO_STATUS_SERVER_CONNECTED = 0x65,
292 YAHOO_STATUS_FD_CONNECT_SUCCESS = 0x66,
293 YAHOO_STATUS_CMD_SENT_ACK = 0x3e8,
294 YAHOO_STATUS_UNKNOWN_USER = 0x5a55aa55,
295 YAHOO_STATUS_KNOWN_USER = 0x5a55aa56,
299 * Content Fields
301 * Extracted from ymsglite.dll -> YMSGMessage::fieldToString(void *param_1, int field)
303 enum yahoo_field {
304 YAHOO_FLD_USERNAME = 0,
305 YAHOO_FLD_CURRENT_ID = 1,
306 YAHOO_FLD_ACTIVE_ID = 2,
307 YAHOO_FLD_USER_ID = 3,
308 YAHOO_FLD_SENDER = 4,
309 YAHOO_FLD_TARGET_USER = 5,
310 YAHOO_FLD_PASSWORD = 6,
311 YAHOO_FLD_BUDDY = 7,
312 YAHOO_FLD_NUM_BUDDIES = 8,
313 YAHOO_FLD_NUM_EMAILS = 9,
314 YAHOO_FLD_AWAY_STATUS = 10,
315 YAHOO_FLD_SESSION_ID = 0xb,
316 YAHOO_FLD_IP_ADDRESS = 0xc,
317 YAHOO_FLD_FLAG = 0xd,
318 YAHOO_FLD_MSG = 0xe,
319 YAHOO_FLD_TIME = 0xf,
320 YAHOO_FLD_ERR_MSG = 0x10,
321 YAHOO_FLD_PORT = 0x11,
322 YAHOO_FLD_MAIL_SUBJECT = 0x12,
323 YAHOO_FLD_AWAY_MSG = 0x13,
324 YAHOO_FLD_URL = 0x14,
325 YAHOO_FLD_ALERT_TIME = 0x15,
326 YAHOO_FLD_NEWS = 0x16,
327 YAHOO_FLD_DEV_SPEED = 0x17,
328 YAHOO_FLD_WEB_ID = 0x18,
329 YAHOO_FLD_USER_ALERT_STATS = 0x19,
330 YAHOO_FLD_STATS_DATA = 0x1a,
331 YAHOO_FLD_FILE_NAME = 0x1b,
332 YAHOO_FLD_FILE_SIZE = 0x1c,
333 YAHOO_FLD_FILE_DATA = 0x1d,
334 YAHOO_FLD_SYMANTEC_IPADDR = 0x1e,
335 YAHOO_FLD_COMMAND = 0x1f,
336 YAHOO_FLD_STATUS = 0x20,
337 YAHOO_FLD_NUM_NEWS = 0x21,
338 YAHOO_FLD_NUM_MSGS = 0x22,
339 YAHOO_FLD_ITEM = 0x23,
340 YAHOO_FLD_OLD_GRP_NAME = 0x24,
341 YAHOO_FLD_NEW_GRP_NAME = 0x25,
342 YAHOO_FLD_EXPIRATION_TIME = 0x26,
343 YAHOO_FLD_NUM_PERSONAL_MSGS = 0x27,
344 YAHOO_FLD_SYS_MSG_CODE = 0x28,
345 YAHOO_FLD_MSG_NUM_DUMMY = 0x29,
346 YAHOO_FLD_FROM_EMAIL = 0x2a,
347 YAHOO_FLD_FROM_NAME = 0x2b,
348 YAHOO_FLD_ADD_ID = 0x2c,
349 YAHOO_FLD_DELETE_ID = 0x2d,
350 YAHOO_FLD_DEBUG_INFO = 0x2e,
351 YAHOO_FLD_CUSTOM_DND_STATUS = 0x2f,
352 YAHOO_FLD_CONTAINS_TAGS = 0x30,
353 YAHOO_FLD_APP_NAME = 0x31,
354 YAHOO_FLD_INVITOR_NAME = 0x32,
355 YAHOO_FLD_NET2PHONE_CALL_LEN = 0x32,
356 YAHOO_FLD_INVITEE_NAME = 0x33,
357 YAHOO_FLD_AD_SPACE_ID = 0x33,
358 YAHOO_FLD_INVITED_USER = 0x34,
359 YAHOO_FLD_USES_IMIP_CLIENT = 0x34,
360 YAHOO_FLD_JOINED_USER = 0x35,
361 YAHOO_FLD_SHORTCUT = 0x35,
362 YAHOO_FLD_DECLINED_USER = 0x36,
363 YAHOO_FLD_FEED_VER = 0x36,
364 YAHOO_FLD_UNAVAILABLE_USER = 0x37,
365 YAHOO_FLD_LEFT_USER = 0x38,
366 YAHOO_FLD_ROOM_NAME = 0x39,
367 YAHOO_FLD_CONF_TOPIC = 0x3a,
368 YAHOO_FLD_COOKIE = 0x3b,
369 YAHOO_FLD_DEVICE_TYPE = 0x3c,
370 YAHOO_FLD_USER_TYPE = 0x3c,
371 YAHOO_FLD_WEBCAM_TOKEN = 0x3d,
372 YAHOO_FLD_TIMED_P2P_CONN_FLG = 0x3d,
373 YAHOO_FLD_WEBCAM_STATUS = 0x3e,
374 YAHOO_FLD_IMV_ID = 0x3f,
375 YAHOO_FLD_IMV_FLAG = 0x40,
376 YAHOO_FLD_BUDDY_GRP_NAME = 0x41,
377 YAHOO_FLD_ERROR_CODE = 0x42,
378 YAHOO_FLD_NEW_BUDDY_GRP_NAME = 0x43,
379 YAHOO_FLD_PHONE_CARRIER_CODE = 0x44,
380 YAHOO_FLD_SCREEN_NAME = 0x45,
381 YAHOO_FLD_CONVERSE_COMMAND = 0x46,
382 YAHOO_FLD_SMS_PHONE = 0x46,
383 YAHOO_FLD_CONVERSE_IDENTITY = 0x47,
384 YAHOO_FLD_CONVERSE_OTHER_GUY = 0x48,
385 YAHOO_FLD_CONVERSE_TOPIC = 0x49,
386 YAHOO_FLD_CONVERSE_COMMENT = 0x4a,
387 YAHOO_FLD_CONVERSE_MAX = 0x4b,
388 YAHOO_FLD_CONVERSE_URL = 0x4c,
389 YAHOO_FLD_CONVERSE_YOUR_COMMENT = 0x4d,
390 YAHOO_FLD_STAT_TYPE = 0x4e,
391 YAHOO_FLD_IMIP_SERVICE = 0x4f,
392 YAHOO_FLD_IMIP_LOGIN = 0x50,
393 YAHOO_FLD_ALERT_TYPE_ID = 0x51,
394 YAHOO_FLD_ALERT_SUBTYPE_ID = 0x52,
395 YAHOO_FLD_ALERT_DOC_TITLE = 0x53,
396 YAHOO_FLD_ALERT_PRIO_LEVEL = 0x54,
397 YAHOO_FLD_ALERT_TYPE = 0x55,
398 YAHOO_FLD_ALERT_COUNTRY = 0x56,
399 YAHOO_FLD_BUDDY_LIST = 0x57,
400 YAHOO_FLD_IGNORE_LIST = 0x58,
401 YAHOO_FLD_IDENTITY_LIST = 0x59,
402 YAHOO_FLD_HAS_MAIL = 0x5a,
403 YAHOO_FLD_CONVERSE_CMD_DEC_TEXT = 0x5a,
404 YAHOO_FLD_ANON_NAME = 0x5b,
405 YAHOO_FLD_ANON_ID = 0x5c,
406 YAHOO_FLD_T_COOKIE_EXPIRE = 0x5d,
407 YAHOO_FLD_CHALLENGE = 0x5e,
408 YAHOO_FLD_OLD_PASSWORD = 0x60,
409 YAHOO_FLD_UTF8_FLAG = 0x61,
410 YAHOO_FLD_COUNTRY_CODE = 0x62,
411 YAHOO_FLD_CO_BRAND_CODE = 0x63,
412 YAHOO_FLD_DATE = 0x64,
413 YAHOO_FLD_IMV_DATA = 0x65,
414 YAHOO_FLD_WEBCAM_FARM = 0x66,
415 YAHOO_FLD_CHAT_IGNORE_USER = 0x67,
416 YAHOO_FLD_CHAT_ROOM_NAME = 0x68,
417 YAHOO_FLD_CHAT_ROOM_TOPIC = 0x69,
418 YAHOO_FLD_CHAT_ROOM_URL = 0x6a,
419 YAHOO_FLD_CHAT_ROOM_PARAMETER = 0x6b,
420 YAHOO_FLD_CHAT_NUM_USERS = 0x6c,
421 YAHOO_FLD_CHAT_ROOM_USERNAME = 0x6d,
422 YAHOO_FLD_CHAT_ROOM_USER_AGE = 0x6e,
423 YAHOO_FLD_CHAT_ROOM_USER_GENDER = 0x6f,
424 YAHOO_FLD_CHAT_ROOM_USER_TIMESTAMP = 0x70,
425 YAHOO_FLD_CHAT_ROOM_USER_FLAG = 0x71,
426 YAHOO_FLD_CHAT_ERR_NO = 0x72,
427 YAHOO_FLD_CHAT_SIMILAR_ROOM = 0x73,
428 YAHOO_FLD_CHAT_EMOT_MSG = 0x74,
429 YAHOO_FLD_CHAT_MSG = 0x75,
430 YAHOO_FLD_CHAT_INVITED_USER = 0x76,
431 YAHOO_FLD_CHAT_INVITER = 0x77,
432 YAHOO_FLD_CHAT_EXTENDED_DATA_ID = 0x78,
433 YAHOO_FLD_CHAT_EXTENDED_DATA = 0x79,
434 YAHOO_FLD_CHAT_USER_SETTINGS = 0x7a,
435 YAHOO_FLD_CHAT_LOGOFF_MSG = 0x7b,
436 YAHOO_FLD_CHAT_MSG_TYPE = 0x7c,
437 YAHOO_FLD_CHAT_FRAME_NAME = 0x7d,
438 YAHOO_FLD_CHAT_FLG = 0x7e,
439 YAHOO_FLD_CHAT_ROOM_TYPE = 0x7f,
440 YAHOO_FLD_CHAT_ROOM_CATEGORY = 0x80,
441 YAHOO_FLD_CHAT_ROOM_SPACE_ID = 0x81,
442 YAHOO_FLD_CHAT_VOICE_AUTH = 0x82,
443 YAHOO_FLD_ALERT_BUTTON_LABEL = 0x83,
444 YAHOO_FLD_ALERT_BUTTON_LINK = 0x84,
445 YAHOO_FLD_ALERT_MIN_DIMENSION = 0x85,
446 YAHOO_FLD_BIZ_MAIL_TEXT = 0x86,
447 YAHOO_FLD_VERSION = 0x87,
448 YAHOO_FLD_CO_BRAND_ROOM_INFO = 0x88,
449 YAHOO_FLD_IDLE_TIME = 0x89,
450 YAHOO_FLD_NO_IDLE_TIME = 0x8a,
451 YAHOO_FLD_CHAT_USER_NICKNAME = 0x8d,
452 YAHOO_FLD_CHAT_USER_LOCATION = 0x8e,
453 YAHOO_FLD_PING_INTERVAL = 0x8f,
454 YAHOO_FLD_KEEP_ALIVE_INTERVAL = 0x90,
455 YAHOO_FLD_CPU_TYPE = 0x91,
456 YAHOO_FLD_OS_VERSION = 0x92,
457 YAHOO_FLD_TIME_ZONE = 0x93,
458 YAHOO_FLD_TIME_BIAS = 0x94,
459 YAHOO_FLD_BLINDED_USER_ID = 0x95,
460 YAHOO_FLD_CACHE_CRYPTO_KEY = 0x96,
461 YAHOO_FLD_LOCAL_CRYPTO_KEY = 0x97,
462 YAHOO_FLD_YPC_PREFS = 0x99,
463 YAHOO_FLD_PARENT_ID = 0x9a,
464 YAHOO_FLD_MSG_NUM = 0x9f,
465 YAHOO_FLD_EE_CONFIRM_DELIVERY = 0xa0,
466 YAHOO_FLD_EE_SENDER = 0xa1,
467 YAHOO_FLD_EE_NONCE = 0xa2,
468 YAHOO_FLD_GAME_ID = 0xb4,
469 YAHOO_FLD_GAME_NAME = 0xb5,
470 YAHOO_FLD_GAME_DATA = 0xb6,
471 YAHOO_FLD_GAME_URL = 0xb7,
472 YAHOO_FLD_STATUS_DATA = 0xb8,
473 YAHOO_FLD_INVISIBLE_TO = 0xb9,
474 YAHOO_FLD_VISIBLE_TO = 0xba,
475 YAHOO_FLD_STATUS_LINK_TYPE = 0xbb,
476 YAHOO_FLD_AVATAR_FLAG = 0xbe,
477 YAHOO_FLD_AVATAR_MOOD_ID = 0xbf,
478 YAHOO_FLD_ICON_CHECKSUM = 0xc0,
479 YAHOO_FLD_ICON_DATA = 0xc1,
480 YAHOO_FLD_SEQUENCE_NO = 0xc2,
481 YAHOO_FLD_MAX_SEQUENCE_NO = 0xc3,
482 YAHOO_FLD_ANTI_BOT_TEXT = 0xc4,
483 YAHOO_FLD_AVATAR_HASH = 0xc5,
484 YAHOO_FLD_AVATAR_USER = 0xc6,
485 YAHOO_FLD_WIDTH = 0xc7,
486 YAHOO_FLD_HEIGHT = 0xc8,
487 YAHOO_FLD_ALERT_DATA = 0xcb,
488 YAHOO_FLD_AVATAR_DEF_MOOD = 0xcc,
489 YAHOO_FLD_AVATAR_ZOOM = 0xcd,
490 YAHOO_FLD_DISPLAY_TYPE = 0xce,
491 YAHOO_FLD_BT_USER_ID = 0xcf,
492 YAHOO_FLD_T_COOKIE = 0xd0,
493 YAHOO_FLD_STATS_BUFFER = 0xd3,
494 YAHOO_FLD_APPLY_TO_ALL = 0xd4,
495 YAHOO_FLD_SHOW_MY_AVATAR_IN_FRIEND_TREE = 0xd5,
496 YAHOO_FLD_GAME_PROWLER_PREF = 0xd6,
497 YAHOO_FLD_VAS_USER = 0xd7,
498 YAHOO_FLD_FIRSTNAME = 0xd8,
499 YAHOO_FLD_YPM_KEY = 0xd9,
500 YAHOO_FLD_COOKIE_CUTTER = 0xdb, /* Not defined in ymsglite.dll, but it's always sent right after a YAHOO_FLD_COOKIE */
501 YAHOO_FLD_FEATURE_ID = 0xdd,
502 YAHOO_FLD_ACTION_TYPE = 0xde,
503 YAHOO_FLD_UNAUTH = 0xdf,
504 YAHOO_FLD_GROUP = 0xe0,
505 YAHOO_FLD_ANTI_BOT_URL = 0xe1,
506 YAHOO_FLD_ANTI_BOT_SECRET = 0xe2,
507 YAHOO_FLD_ANTI_BOT_RESPONSE = 0xe3,
508 YAHOO_FLD_AUDIBLE_ID = 0xe6,
509 YAHOO_FLD_AUDIBLE_TEXT = 0xe7,
510 YAHOO_FLD_AUDIBLE_HASH = 0xe8,
511 YAHOO_FLD_IGNORED_USER = 0xec,
512 YAHOO_FLD_PROFILE_ID = 0xed,
513 YAHOO_FLD_INVISIBLE_TO_FRIEND = 0xee,
514 YAHOO_FLD_VISIBLE_TO_FRIEND = 0xef,
515 YAHOO_FLD_CONTACT_INFO = 0xf0,
516 YAHOO_FLD_CLOUD_ID = 0xf1,
517 YAHOO_FLD_BRANDING_ID = 0xf2,
518 YAHOO_FLD_NUM_ATTRIBUTED_BUDDIES = 0xf3,
519 YAHOO_FLD_CAPABILITY_MATRIX = 0xf4,
520 YAHOO_FLD_OBJECT_ID = 0xf5,
521 YAHOO_FLD_OBJECT_NAME = 0xf6,
522 YAHOO_FLD_META_DATA = 0xf7,
523 YAHOO_FLD_OBJECT_SIZE = 0xf8,
524 YAHOO_FLD_TRANSFER_TYPE = 0xf9,
525 YAHOO_FLD_TRANSFER_TAG = 0xfa,
526 YAHOO_FLD_TOKEN = 0xfb,
527 YAHOO_FLD_HASH = 0xfc,
528 YAHOO_FLD_CHECKSUM = 0xfd,
529 YAHOO_FLD_LASTNAME = 0xfe,
530 YAHOO_FLD_DATA = 0x101,
531 YAHOO_FLD_APP_ID = 0x102,
532 YAHOO_FLD_INSTANCE_ID = 0x103,
533 YAHOO_FLD_ALERT_ID = 0x104,
534 YAHOO_FLD_OPI_STATUS = 0x105,
535 YAHOO_FLD_APP_REGISTER = 0x106,
536 YAHOO_FLD_CHECK_LOGIN_STATUS = 0x107,
537 YAHOO_FLD_TARGET_GROUP = 0x108,
538 YAHOO_FLD_FT_SESSION_ID = 0x109,
539 YAHOO_FLD_TOTAL_FILE_COUNT = 0x10a,
540 YAHOO_FLD_THUMBNAIL = 0x10b,
541 YAHOO_FLD_FILE_INFO = 0x10c,
542 YAHOO_FLD_SPAMMER_ID = 0x10d,
543 YAHOO_FLD_INITIATOR = 0x10e,
544 YAHOO_FLD_FT_ONE_FILE_DONE = 0x10f,
545 YAHOO_FLD_X_POS = 0x110,
546 YAHOO_FLD_Y_POS = 0x111,
547 YAHOO_FLD_MSG_RECORD = 0x112,
548 YAHOO_FLD_FLAG_MINGLE_USER = 0x113,
549 YAHOO_FLD_ABUSE_SIGNATURE = 0x114,
550 YAHOO_FLD_LOGIN_Y_COOKIE = 0x115,
551 YAHOO_FLD_LOGIN_T_COOKIE = 0x116,
552 YAHOO_FLD_LOGIN_CRUMB = 0x117,
553 YAHOO_FLD_BUDDY_DETAIL = 0x118,
554 YAHOO_FLD_VALID_CLIENT_COOKIES = 0x119,
555 YAHOO_FLD_NUM_LCS_BUDDIES = 0x11a,
556 YAHOO_FLD_IS_RELOGIN = 0x11b,
557 YAHOO_FLD_START_OF_RECORD = 0x12c,
558 YAHOO_FLD_END_OF_RECORD = 0x12d,
559 YAHOO_FLD_START_OF_LIST = 0x12e,
560 YAHOO_FLD_END_OF_LIST = 0x12f,
561 YAHOO_FLD_COUNTRYCODE = 0x130,
562 YAHOO_FLD_PSTN_DID = 0x131,
563 YAHOO_FLD_PSTN_PREMIUM_FLAG = 0x132,
564 YAHOO_FLD_CRUMB_HASH = 0x133,
565 YAHOO_FLD_LOCALE = 0x136,
566 YAHOO_FLD_PREFERENCES = 0x138,
567 YAHOO_FLD_PREF_CATEGORY = 0x139,
568 YAHOO_FLD_PREF_MASK = 0x13a,
569 YAHOO_FLD_BUDDY_INFO = 0x13b,
570 YAHOO_FLD_PLUGIN_INFO = 0x13c,
571 YAHOO_FLD_VISIBILITY_FLAG = 0x13d,
572 YAHOO_FLD_GROUPS_RECORD_LIST = 0x13e,
573 YAHOO_FLD_BUDDIES_RECORD_LIST = 0x13f,
574 YAHOO_FLD_IGNORED_BUDDIES_RECORD_LIST = 0x140,
575 YAHOO_FLD_PREMIUM_SMS_RATE = 0x141,
576 YAHOO_FLD_PREMIUM_SMS_BALANCE = 0x142,
577 YAHOO_FLD_PREMIUM_SMS_SYMBOL = 0x143,
578 YAHOO_FLD_PREMIUM_SMS_SYMBOL_POS = 0x144,
579 YAHOO_FLD_PREMIUM_SMS_MAX_MSGS = 0x145,
580 YAHOO_FLD_NETSTAT_MSG = 0x3e8,
581 YAHOO_FLD_SERVER_TYPE = 0x3e9,
582 YAHOO_FLD_TRY_P2P = 0x3ea,
583 YAHOO_FLD_P2P_CONN_STATE = 0x3eb,
584 YAHOO_FLD_INTERNET_CONN_TYPE = 0x3ec,
585 YAHOO_FLD_NEED_CMD_RETURN = 0x3ed,
588 static const value_string ymsg_command_vals[] = {
589 {YAHOO_CMD_USER_LOGIN, "User Login"},
590 {YAHOO_CMD_USER_LOGOFF, "User Logoff"},
591 {YAHOO_CMD_USER_AWAY, "User Away"},
592 {YAHOO_CMD_USER_BACK, "User Back"},
593 {YAHOO_CMD_USER_GET_MSGS, "User Get Msgs"},
594 {YAHOO_CMD_USER_HAS_MSG, "User Has Msg"},
595 {YAHOO_CMD_ACTIVATE_ID, "Activate Id"},
596 {YAHOO_CMD_DEACTIVATE_ID, "Deactivate Id"},
597 {YAHOO_CMD_GET_USER_STATUS, "Get User Status"},
598 {YAHOO_CMD_USER_HAS_MAIL, "User Has Mail"},
599 {YAHOO_CMD_START_CONFERENCE, "Start Conference"},
600 {YAHOO_CMD_CALENDAR_ALERT, "Calendar Alert"},
601 {YAHOO_CMD_USER_PERSONAL_MESSAGE, "User Personal Message"},
602 {YAHOO_CMD_UPDATE_BUDDY_LIST, "Update Buddy List"},
603 {YAHOO_CMD_UPDATE_ID_LIST, "Update Id List"},
604 {YAHOO_CMD_UPDATE_IGNORE_LIST, "Update Ignore List"},
605 {YAHOO_CMD_PING, "Ping"},
606 {YAHOO_CMD_UPDATE_GROUP, "Update Group"},
607 {YAHOO_CMD_SYSTEM_MESSAGE, "System Message"},
608 {YAHOO_CMD_CLIENT_STATS, "Client Stats"},
609 {YAHOO_CMD_CLIENT_ALERT_STATS, "Client Alert Stats"},
610 {YAHOO_CMD_GROUP_MESSAGE, "Group Message"},
611 {YAHOO_CMD_HOST_CONFERENCE, "Host Conference"},
612 {YAHOO_CMD_JOIN_CONFERENCE, "Join Conference"},
613 {YAHOO_CMD_DECLINE_CONFERENCE, "Decline Conference"},
614 {YAHOO_CMD_LEAVE_CONFERENCE, "Leave Conference"},
615 {YAHOO_CMD_INVITE_CONFERENCE, "Invite Conference"},
616 {YAHOO_CMD_SAY_CONFERENCE, "Say Conference"},
617 {YAHOO_CMD_CHAT_LOGIN, "Chat Login"},
618 {YAHOO_CMD_CHAT_LOGOFF, "Chat Logoff"},
619 {YAHOO_CMD_CHAT_MSG, "Chat Message"},
620 {YAHOO_CMD_GAMES_USER_LOGIN, "Games User Login"},
621 {YAHOO_CMD_GAMES_USER_LOGOFF, "Games User Logoff"},
622 {YAHOO_CMD_GAMES_USER_HAS_MSG, "Games User Has Msg"},
623 {YAHOO_CMD_NET2PHONE_STATS, "Net2Phone Stats"},
624 {YAHOO_CMD_ADDRESS_BOOK_ALERT, "Address Book Alert"},
625 {YAHOO_CMD_AUCTION_ALERT, "Auction Alert"},
626 {YAHOO_CMD_USER_FT, "User File Transfer"},
627 {YAHOO_CMD_USER_FT_REPLY, "User File Transfer Reply"},
628 {YAHOO_CMD_USER_CONVERSE, "User Converse"},
629 {YAHOO_CMD_USER_WEB_TOUR, "User Web Tour"},
630 {YAHOO_CMD_IM_ENABLE_VOICE, "IM Enable Voice"},
631 {YAHOO_CMD_USER_SEND_MSG, "User Send Msg"},
632 {YAHOO_CMD_SEND_PORT_CHECK, "Send Port Check"},
633 {YAHOO_CMD_SEND_DATA_THRU, "Send Data Thru"},
634 {YAHOO_CMD_P2P_START, "P2P Start"},
635 {YAHOO_CMD_MSGR_WEBCAM_TOKEN, "Msgr Webcam Token"},
636 {YAHOO_CMD_STATS, "Stats"},
637 {YAHOO_CMD_USER_LOGIN2, "User Login2"},
638 {YAHOO_CMD_PRE_LOGIN_DATA, "PreLogin Data"},
639 {YAHOO_CMD_GET_COOKIE_DATA, "Get Cookie Data"},
640 {YAHOO_CMD_HELO, "HELO"},
641 {YAHOO_CMD_FEATURE_NOT_SUPPORTED, "Feature Not Supported"},
642 {YAHOO_CMD_ADD_BUDDY, "Add Buddy"},
643 {YAHOO_CMD_REMOVE_BUDDY, "Remove Buddy"},
644 {YAHOO_CMD_MODIFY_IGNORE_LIST, "Modify Ignore List"},
645 {YAHOO_CMD_DENY_BUDDY_ADD, "Deny Buddy Add"},
646 {YAHOO_CMD_RENAME_GROUP, "Rename Group"},
647 {YAHOO_CMD_KEEP_ALIVE, "Keep Alive"},
648 {YAHOO_CMD_YPC_ADD_FRIEND_APPROVAL, "YPC Add Friend Approval"},
649 {YAHOO_CMD_CHALLENGE, "Challenge"},
650 {YAHOO_CMD_ADD_BUDDY_INSTANT_APPROVAL,"Add Buddy Instant Approval"},
651 {YAHOO_CMD_CHAT_MSGR_USER_LOGIN, "Chat Msgr User Login"},
652 {YAHOO_CMD_CHAT_GOTO_USER, "Chat Goto User"},
653 {YAHOO_CMD_CHAT_ROOM_JOIN, "Chat Room Join"},
654 {YAHOO_CMD_CHAT_ROOM_PART, "Chat Room Part"},
655 {YAHOO_CMD_CHAT_ROOM_INVITE, "Chat Room Invite"},
656 {YAHOO_CMD_CHAT_MSGR_USER_LOGOFF, "Chat Msgr User Logoff"},
657 {YAHOO_CMD_CHAT_PING, "Chat Ping"},
658 {YAHOO_CMD_CHAT_WEBCAM_TOKEN, "Chat Webcam Token"},
659 {YAHOO_CMD_CHAT_PUBLIC_MSG, "Chat Public Msg"},
660 {YAHOO_CMD_CHAT_ROOM_CREATE, "Chat Room Create"},
661 {YAHOO_CMD_GAMES_INVITE, "Games Invite"},
662 {YAHOO_CMD_GAMES_SEND_DATA, "Games Send Data"},
663 {YAHOO_CMD_EDIT_INVISIBLE_TO_LIST, "Edit Invisible To List"},
664 {YAHOO_CMD_EDIT_VISIBLE_TO_LIST, "Edit Visible To List"},
665 {YAHOO_CMD_ANTI_BOT, "Anti Bot"},
666 {YAHOO_CMD_AVATAR_CHANGED, "Avatar Changed"},
667 {YAHOO_CMD_FRIEND_ICON, "Friend Icon"},
668 {YAHOO_CMD_FRIEND_ICON_DOWNLOAD, "Friend Icon Download"},
669 {YAHOO_CMD_AVATAR_GET_FILE, "Avatar Get File"},
670 {YAHOO_CMD_AVATAR_GET_HASH, "Avatar Get Hash"},
671 {YAHOO_CMD_DISPLAY_TYPE_CHANGED, "Display Type Changed"},
672 {YAHOO_CMD_FRIEND_ICON_FT, "Friend Icon File Transfer"},
673 {YAHOO_CMD_GET_COOKIE, "Get Cookie"},
674 {YAHOO_CMD_ADDRESS_BOOK_CHANGED, "Address Book Changed"},
675 {YAHOO_CMD_SET_VISIBILITY, "Set Visibility"},
676 {YAHOO_CMD_SET_AWAY_STATUS, "Set Away Status"},
677 {YAHOO_CMD_DISPLAY_IMAGE_PREFS, "Display Image Prefs"},
678 {YAHOO_CMD_VERIFY_USER, "Verify User"},
679 {YAHOO_CMD_AUDIBLE, "Audible"},
680 {YAHOO_CMD_IM_PANEL_FEATURE, "IM Panel Feature"},
681 {YAHOO_CMD_SHARE_CONTACTS, "Share Contacts"},
682 {YAHOO_CMD_IM_SESSION, "IM Session"},
683 {YAHOO_CMD_SUBSCRIPTION, "Subscription"},
684 {YAHOO_CMD_BUDDY_AUTHORIZE, "Buddy Authorize"},
685 {YAHOO_CMD_PHOTO_ADD, "Photo Add"},
686 {YAHOO_CMD_PHOTO_SELECT, "Photo Select"},
687 {YAHOO_CMD_PHOTO_DELETE, "Photo Delete"},
688 {YAHOO_CMD_PHOTO_FILE_REQUEST, "Photo File Request"},
689 {YAHOO_CMD_PHOTO_POINTER, "Photo Pointer"},
690 {YAHOO_CMD_FXFER_INVITE, "File Transfer Invite"},
691 {YAHOO_CMD_FXFER_SEND, "File Transfer Send"},
692 {YAHOO_CMD_FXFER_RECEIVE, "File Transfer Receive"},
693 {YAHOO_CMD_UPDATE_CAPABILITY, "Update Capability"},
694 {YAHOO_CMD_REPORT_SPAM, "Report Spam"},
695 {YAHOO_CMD_MINGLE_DATA, "Mingle Data"},
696 {YAHOO_CMD_ALERT, "Alert"},
697 {YAHOO_CMD_APP_REGISTRY, "App Registry"},
698 {YAHOO_CMD_NEW_USER, "New User"},
699 {YAHOO_CMD_ACCEPT_MSGR_INVITE, "Accept Msgr Invite"},
700 {YAHOO_CMD_MSGR_USAGE, "Msgr Usage"},
701 {YAHOO_CMD_BUDDY_MOVE, "Buddy Move"},
702 {YAHOO_CMD_GET_VOICE_CRUMB, "Get Voice Crumb"},
703 {YAHOO_CMD_PLUGIN_SESSION_INITIATION, "Plugin Session Initiation"},
704 {YAHOO_CMD_APPLICATION_MESSAGE, "Application Message"},
705 {YAHOO_CMD_APPLICATION_PRESENCE, "Application Presence"},
706 {YAHOO_CMD_FXFER_PLUGIN_INVITE, "File Transfer Plugin Invite"},
707 {YAHOO_CMD_PC2MOBILE_FXFER, "PC2Mobile File Transfer"},
708 {YAHOO_CMD_PREFERENCE, "Preference"},
709 {YAHOO_CMD_BUDDY_INFO, "Buddy Info"},
710 {YAHOO_CMD_BUDDY_LIST, "Buddy List"},
711 {YAHOO_CMD_CHECK_PREMIUM_SMS_BALANCE, "Check Premium SMS Balance"},
712 {YAHOO_CMD_WIDGET_BUDDY_LIST, "Widget Buddy List"},
713 {YAHOO_CMD_WIDGET_BUDDY_INFO, "Widget Buddy Info"},
714 {YAHOO_CMD_WIDGET_ACTION, "Widget Action"},
715 {YAHOO_CMD_NEWS_ALERTS, "News Alerts"},
716 {YAHOO_CMD_CORP_USER_LOGIN, "Corp User Login"},
717 {YAHOO_CMD_MSG_RE_LOGIN, "Msgr ReLogin"},
718 {YAHOO_CMD_CORP_ID_COPR_P2P_INIT, "Corp Id Copr P2P Init"},
719 {YAHOO_CMD_CORP_CHAT_MSG, "Corp Chat Msg"},
720 {YAHOO_CMD_CORP_GAMES_USER_HAS_MSG, "Corp Games User Has Msg"},
721 {YAHOO_CMD_SECURE_USER_LOGIN, "Secure User Login"},
722 {YAHOO_CMD_SECURE_IM_MSG, "Secure IM Msg"},
723 {YAHOO_CMD_SECURE_CHAT_SAY_MSG, "Secure Chat Say Msg"},
724 {YAHOO_CMD_SECURE_GAMES_USER_HAS_MSG, "Secure Games User Has Msg"},
725 {YAHOO_CMD_SYMANTEC_MSGS, "Symantec Msgs"},
726 {YAHOO_CMD_MOBILE_SEND_SMS_MESSAGE, "Mobile Send SMS Message"},
727 {YAHOO_CMD_MOBILE_SMS_LOGIN, "Mobile SMS Login"},
728 {YAHOO_CMD_MOBILE_SMS_NUMBER, "Mobile SMS Number"},
729 {YAHOO_CMD_ANON_LOGOFF, "Anon Logoff"},
730 {YAHOO_CMD_ANON_HAS_MSG, "Anon Has Msg"},
731 {YAHOO_CMD_CLIENT_NETSTAT, "Client Netstat"},
732 {YAHOO_CMD_P2P_USER, "P2P User"},
733 {YAHOO_CMD_P2P_STATE, "P2P State"},
734 {YAHOO_CMD_LWM_LOGIN, "LWM Login"},
735 {YAHOO_CMD_LWM_LOGOFF, "LWM Logoff"},
736 {YAHOO_CMD_OPI_LOGIN, "OPI Login"},
737 {YAHOO_CMD_OPI_LOGOFF, "OPI Logoff"},
738 {YAHOO_CMD_OPI_IM, "OPI IM"},
739 {YAHOO_CMD_USER_HAS_OPI_MESSAGE, "User Has OPI Message"},
740 {YAHOO_CMD_LWMOPI_CHECK_LOGIN, "LWM OPI Check Login"},
741 {YAHOO_CMD_LWMOPI_START_OPI, "LWM OPI Start OPI"},
742 {YAHOO_CMD_LWMOPI_STOP_OPI, "LWM OPI Stop OPI"},
743 {0, NULL},
746 static const value_string ymsg_status_vals[] = {
747 {YAHOO_STATUS_DUPLICATE, "Duplicate"},
748 {YAHOO_STATUS_ERR, "Error"},
749 {YAHOO_STATUS_OK, "Ok"},
750 {YAHOO_STATUS_NOTIFY, "Notify"},
751 {YAHOO_STATUS_NOT_AVAILABLE, "Not Available"},
752 {YAHOO_STATUS_NEW_BUDDYOF, "New BuddyOf"},
753 {YAHOO_STATUS_PARTIAL_LIST, "Partial List"},
754 {YAHOO_STATUS_SAVED_MSG, "Saved Msg"},
755 {YAHOO_STATUS_BUDDYOF_DENIED, "BuddyOf Denied"},
756 {YAHOO_STATUS_INVALID_USER, "Invalid User"},
757 {YAHOO_STATUS_CHUNKING, "Chunking"},
758 {YAHOO_STATUS_INVITED, "Invited"},
759 {YAHOO_STATUS_DONT_DISTURB, "Do Not Disturb"},
760 {YAHOO_STATUS_DISTURB_ME, "Disturb Me"},
761 {YAHOO_STATUS_NEW_BUDDYOF_AUTH, "New BuddyOf Auth"},
762 {YAHOO_STATUS_WEB_MSG, "Web Msg"},
763 {YAHOO_STATUS_ACK, "Ack"},
764 {YAHOO_STATUS_RE_LOGIN, "ReLogin"},
765 {YAHOO_STATUS_SPECIFIC_SNDR, "Specific Sender"},
766 {YAHOO_STATUS_INCOMP_VERSION, "Incompatible Version"},
767 {YAHOO_STATUS_REQUEST, "Request"},
768 {YAHOO_STATUS_SMS_CARRIER, "SMS Carrier"},
769 {YAHOO_STATUS_IS_GROUP_IM, "Is Group IM"},
770 {YAHOO_STATUS_PRE_LOGIN_SUCCEEDED, "PreLogin Succeeded"},
771 {YAHOO_STATUS_SERVER_CONNECTED, "Server Connected"},
772 {YAHOO_STATUS_FD_CONNECT_SUCCESS, "FD Connect Success"},
773 {YAHOO_STATUS_CMD_SENT_ACK, "CMD Sent Ack"},
774 {YAHOO_STATUS_UNKNOWN_USER, "Unknown User"},
775 {YAHOO_STATUS_KNOWN_USER, "Known User"},
776 {0, NULL},
779 static const value_string ymsg_field_vals[] = {
780 {YAHOO_FLD_USERNAME, "Username"},
781 {YAHOO_FLD_CURRENT_ID, "CurrentId"},
782 {YAHOO_FLD_ACTIVE_ID, "ActiveId"},
783 {YAHOO_FLD_USER_ID, "UserId"},
784 {YAHOO_FLD_SENDER, "Sender"},
785 {YAHOO_FLD_TARGET_USER, "TargetUser"},
786 {YAHOO_FLD_PASSWORD, "Password"},
787 {YAHOO_FLD_BUDDY, "Buddy"},
788 {YAHOO_FLD_NUM_BUDDIES, "NumBuddies"},
789 {YAHOO_FLD_NUM_EMAILS, "NumEmails"},
790 {YAHOO_FLD_AWAY_STATUS, "AwayStatus"},
791 {YAHOO_FLD_SESSION_ID, "SessionId"},
792 {YAHOO_FLD_IP_ADDRESS, "IPAddress"},
793 {YAHOO_FLD_FLAG, "Flag"},
794 {YAHOO_FLD_MSG, "Msg"},
795 {YAHOO_FLD_TIME, "Time"},
796 {YAHOO_FLD_ERR_MSG, "ErrMsg"},
797 {YAHOO_FLD_PORT, "Port"},
798 {YAHOO_FLD_MAIL_SUBJECT, "MailSubject"},
799 {YAHOO_FLD_AWAY_MSG, "AwayMsg"},
800 {YAHOO_FLD_URL, "URL"},
801 {YAHOO_FLD_ALERT_TIME, "AlertTime"},
802 {YAHOO_FLD_NEWS, "News"},
803 {YAHOO_FLD_DEV_SPEED, "DevSpeed"},
804 {YAHOO_FLD_WEB_ID, "WebId"},
805 {YAHOO_FLD_USER_ALERT_STATS, "UserAlertStats"},
806 {YAHOO_FLD_STATS_DATA, "StatsData"},
807 {YAHOO_FLD_FILE_NAME, "FileName"},
808 {YAHOO_FLD_FILE_SIZE, "FileSize"},
809 {YAHOO_FLD_FILE_DATA, "FileData"},
810 {YAHOO_FLD_SYMANTEC_IPADDR, "SymantecIPAddr"},
811 {YAHOO_FLD_COMMAND, "Command"},
812 {YAHOO_FLD_STATUS, "Status"},
813 {YAHOO_FLD_NUM_NEWS, "NumNews"},
814 {YAHOO_FLD_NUM_MSGS, "NumMsgs"},
815 {YAHOO_FLD_ITEM, "Item"},
816 {YAHOO_FLD_OLD_GRP_NAME, "OldGrpName"},
817 {YAHOO_FLD_NEW_GRP_NAME, "NewGrpName"},
818 {YAHOO_FLD_EXPIRATION_TIME, "ExpirationTime"},
819 {YAHOO_FLD_NUM_PERSONAL_MSGS, "NumPersonalMsgs"},
820 {YAHOO_FLD_SYS_MSG_CODE, "SysMsgCode"},
821 {YAHOO_FLD_MSG_NUM_DUMMY, "MsgNumDummy"},
822 {YAHOO_FLD_FROM_EMAIL, "FromEmail"},
823 {YAHOO_FLD_FROM_NAME, "FromName"},
824 {YAHOO_FLD_ADD_ID, "AddId"},
825 {YAHOO_FLD_DELETE_ID, "DeleteId"},
826 {YAHOO_FLD_DEBUG_INFO, "DebugInfo"},
827 {YAHOO_FLD_CUSTOM_DND_STATUS, "CustomDndStatus"},
828 {YAHOO_FLD_CONTAINS_TAGS, "ContainsTags"},
829 {YAHOO_FLD_APP_NAME, "AppName"},
830 {YAHOO_FLD_INVITOR_NAME, "InvitorName|Net2PhoneCallLen"},
831 {YAHOO_FLD_INVITEE_NAME, "InviteeName|AdSpaceId"},
832 {YAHOO_FLD_INVITED_USER, "InvitedUser|UsesIMIPClient"},
833 {YAHOO_FLD_JOINED_USER, "JoinedUser|Shortcut"},
834 {YAHOO_FLD_DECLINED_USER, "DeclinedUser|FeedVer"},
835 {YAHOO_FLD_UNAVAILABLE_USER, "UnavailableUser"},
836 {YAHOO_FLD_LEFT_USER, "LeftUser"},
837 {YAHOO_FLD_ROOM_NAME, "RoomName"},
838 {YAHOO_FLD_CONF_TOPIC, "ConfTopic"},
839 {YAHOO_FLD_COOKIE, "Cookie"},
840 {YAHOO_FLD_USER_TYPE, "UserType|DeviceType"},
841 {YAHOO_FLD_WEBCAM_TOKEN, "WebcamToken|TimedP2PConnFlg"},
842 {YAHOO_FLD_WEBCAM_STATUS, "WebcamStatus"},
843 {YAHOO_FLD_IMV_ID, "IMVId"},
844 {YAHOO_FLD_IMV_FLAG, "IMVFlag"},
845 {YAHOO_FLD_BUDDY_GRP_NAME, "BuddyGrpName"},
846 {YAHOO_FLD_ERROR_CODE, "ErrorCode"},
847 {YAHOO_FLD_NEW_BUDDY_GRP_NAME, "NewBuddyGrpName"},
848 {YAHOO_FLD_PHONE_CARRIER_CODE, "PhoneCarrierCode"},
849 {YAHOO_FLD_SCREEN_NAME, "ScreenName"},
850 {YAHOO_FLD_SMS_PHONE, "SmsPhone|ConverseCommand"},
851 {YAHOO_FLD_CONVERSE_IDENTITY, "ConverseIdentity"},
852 {YAHOO_FLD_CONVERSE_OTHER_GUY, "ConverseOtherGuy"},
853 {YAHOO_FLD_CONVERSE_TOPIC, "ConverseTopic"},
854 {YAHOO_FLD_CONVERSE_COMMENT, "ConverseComment"},
855 {YAHOO_FLD_CONVERSE_MAX, "ConverseMax"},
856 {YAHOO_FLD_CONVERSE_URL, "ConverseUrl"},
857 {YAHOO_FLD_CONVERSE_YOUR_COMMENT, "ConverseYourComment"},
858 {YAHOO_FLD_STAT_TYPE, "StatType"},
859 {YAHOO_FLD_IMIP_SERVICE, "IMIPService"},
860 {YAHOO_FLD_IMIP_LOGIN, "IMIPLogin"},
861 {YAHOO_FLD_ALERT_TYPE_ID, "AlertTypeId"},
862 {YAHOO_FLD_ALERT_SUBTYPE_ID, "AlertSubtypeId"},
863 {YAHOO_FLD_ALERT_DOC_TITLE, "AlertDocTitle"},
864 {YAHOO_FLD_ALERT_PRIO_LEVEL, "AlertPrioLevel"},
865 {YAHOO_FLD_ALERT_TYPE, "AlertType"},
866 {YAHOO_FLD_ALERT_COUNTRY, "AlertCountry"},
867 {YAHOO_FLD_BUDDY_LIST, "BuddyList"},
868 {YAHOO_FLD_IGNORE_LIST, "IgnoreList"},
869 {YAHOO_FLD_IDENTITY_LIST, "IdentityList"},
870 {YAHOO_FLD_HAS_MAIL, "HasMail|ConverseCmdDecText"},
871 {YAHOO_FLD_ANON_NAME, "AnonName"},
872 {YAHOO_FLD_ANON_ID, "AnonId"},
873 {YAHOO_FLD_T_COOKIE_EXPIRE, "TCookieExpire"},
874 {YAHOO_FLD_CHALLENGE, "Challenge"},
875 {YAHOO_FLD_OLD_PASSWORD, "OldPassword"},
876 {YAHOO_FLD_UTF8_FLAG, "Utf8Flag"},
877 {YAHOO_FLD_COUNTRY_CODE, "CountryCode"},
878 {YAHOO_FLD_CO_BRAND_CODE, "CoBrandCode"},
879 {YAHOO_FLD_DATE, "Date"},
880 {YAHOO_FLD_IMV_DATA, "ImvData"},
881 {YAHOO_FLD_WEBCAM_FARM, "WebcamFarm"},
882 {YAHOO_FLD_CHAT_IGNORE_USER, "ChatIgnoreUser"},
883 {YAHOO_FLD_CHAT_ROOM_NAME, "ChatRoomName"},
884 {YAHOO_FLD_CHAT_ROOM_TOPIC, "ChatRoomTopic"},
885 {YAHOO_FLD_CHAT_ROOM_URL, "ChatRoomUrl"},
886 {YAHOO_FLD_CHAT_ROOM_PARAMETER, "ChatRoomParameter"},
887 {YAHOO_FLD_CHAT_NUM_USERS, "ChatNumUsers"},
888 {YAHOO_FLD_CHAT_ROOM_USERNAME, "ChatRoomUsername"},
889 {YAHOO_FLD_CHAT_ROOM_USER_AGE, "ChatRoomUserAge"},
890 {YAHOO_FLD_CHAT_ROOM_USER_GENDER, "ChatRoomUserGender"},
891 {YAHOO_FLD_CHAT_ROOM_USER_TIMESTAMP, "ChatRoomUserTimestamp"},
892 {YAHOO_FLD_CHAT_ROOM_USER_FLAG, "ChatRoomUserFlag"},
893 {YAHOO_FLD_CHAT_ERR_NO, "ChatErrNo"},
894 {YAHOO_FLD_CHAT_SIMILAR_ROOM, "ChatSimilarRoom"},
895 {YAHOO_FLD_CHAT_EMOT_MSG, "ChatEmotMsg"},
896 {YAHOO_FLD_CHAT_MSG, "ChatMsg"},
897 {YAHOO_FLD_CHAT_INVITED_USER, "ChatInvitedUser"},
898 {YAHOO_FLD_CHAT_INVITER, "ChatInviter"},
899 {YAHOO_FLD_CHAT_EXTENDED_DATA_ID, "ChatExtendedDataId"},
900 {YAHOO_FLD_CHAT_EXTENDED_DATA, "ChatExtendedData"},
901 {YAHOO_FLD_CHAT_USER_SETTINGS, "ChatUserSettings"},
902 {YAHOO_FLD_CHAT_LOGOFF_MSG, "ChatLogoffMsg"},
903 {YAHOO_FLD_CHAT_MSG_TYPE, "ChatMsgType"},
904 {YAHOO_FLD_CHAT_FRAME_NAME, "ChatFrameName"},
905 {YAHOO_FLD_CHAT_FLG, "ChatFlag"},
906 {YAHOO_FLD_CHAT_ROOM_TYPE, "ChatRoomType"},
907 {YAHOO_FLD_CHAT_ROOM_CATEGORY, "ChatRoomCategory"},
908 {YAHOO_FLD_CHAT_ROOM_SPACE_ID, "ChatRoomSpaceId"},
909 {YAHOO_FLD_CHAT_VOICE_AUTH, "ChatVoiceAuth"},
910 {YAHOO_FLD_ALERT_BUTTON_LABEL, "AlertButtonLabel"},
911 {YAHOO_FLD_ALERT_BUTTON_LINK, "AlertButtonLink"},
912 {YAHOO_FLD_ALERT_MIN_DIMENSION, "AlertMinDimension"},
913 {YAHOO_FLD_BIZ_MAIL_TEXT, "BizMailText"},
914 {YAHOO_FLD_VERSION, "Version"},
915 {YAHOO_FLD_CO_BRAND_ROOM_INFO, "CoBrandRoomInfo"},
916 {YAHOO_FLD_IDLE_TIME, "IdleTime"},
917 {YAHOO_FLD_NO_IDLE_TIME, "NoIdleTime"},
918 {YAHOO_FLD_CHAT_USER_NICKNAME, "ChatUserNickname"},
919 {YAHOO_FLD_CHAT_USER_LOCATION, "ChatUserLocation"},
920 {YAHOO_FLD_PING_INTERVAL, "PingInterval"},
921 {YAHOO_FLD_KEEP_ALIVE_INTERVAL, "KeepAliveInterval"},
922 {YAHOO_FLD_CPU_TYPE, "CPUType"},
923 {YAHOO_FLD_OS_VERSION, "OsVersion"},
924 {YAHOO_FLD_TIME_ZONE, "TimeZone"},
925 {YAHOO_FLD_TIME_BIAS, "TimeBias"},
926 {YAHOO_FLD_BLINDED_USER_ID, "BlindedUserId"},
927 {YAHOO_FLD_CACHE_CRYPTO_KEY, "CacheCryptoKey"},
928 {YAHOO_FLD_LOCAL_CRYPTO_KEY, "LocalCryptoKey"},
929 {YAHOO_FLD_YPC_PREFS, "YPCPrefs"},
930 {YAHOO_FLD_PARENT_ID, "ParentId"},
931 {YAHOO_FLD_MSG_NUM, "MsgNum"},
932 {YAHOO_FLD_EE_CONFIRM_DELIVERY, "EeConfirmDelivery"},
933 {YAHOO_FLD_EE_SENDER, "EeSender"},
934 {YAHOO_FLD_EE_NONCE, "EeNonce"},
935 {YAHOO_FLD_GAME_ID, "GameId"},
936 {YAHOO_FLD_GAME_NAME, "GameName"},
937 {YAHOO_FLD_GAME_DATA, "GameData"},
938 {YAHOO_FLD_GAME_URL, "GameUrl"},
939 {YAHOO_FLD_STATUS_DATA, "StatusData"},
940 {YAHOO_FLD_INVISIBLE_TO, "InvisibleTo"},
941 {YAHOO_FLD_VISIBLE_TO, "VisibleTo"},
942 {YAHOO_FLD_STATUS_LINK_TYPE, "StatusLinkType"},
943 {YAHOO_FLD_AVATAR_FLAG, "AvatarFlag"},
944 {YAHOO_FLD_AVATAR_MOOD_ID, "AvatarMoodId"},
945 {YAHOO_FLD_ICON_CHECKSUM, "IconChecksum"},
946 {YAHOO_FLD_ICON_DATA, "IconData"},
947 {YAHOO_FLD_SEQUENCE_NO, "SequenceNo"},
948 {YAHOO_FLD_MAX_SEQUENCE_NO, "MaxSequenceNo"},
949 {YAHOO_FLD_ANTI_BOT_TEXT, "AntiBotText"},
950 {YAHOO_FLD_AVATAR_HASH, "AvatarHash"},
951 {YAHOO_FLD_AVATAR_USER, "AvatarUser"},
952 {YAHOO_FLD_WIDTH, "Width"},
953 {YAHOO_FLD_HEIGHT, "Height"},
954 {YAHOO_FLD_ALERT_DATA, "AlertData"},
955 {YAHOO_FLD_AVATAR_DEF_MOOD, "AvatarDefMood"},
956 {YAHOO_FLD_AVATAR_ZOOM, "AvatarZoom"},
957 {YAHOO_FLD_DISPLAY_TYPE, "DisplayType"},
958 {YAHOO_FLD_BT_USER_ID, "BTUserId"},
959 {YAHOO_FLD_T_COOKIE, "TCookie"},
960 {YAHOO_FLD_STATS_BUFFER, "StatsBuffer"},
961 {YAHOO_FLD_APPLY_TO_ALL, "ApplyToAll"},
962 {YAHOO_FLD_SHOW_MY_AVATAR_IN_FRIEND_TREE, "ShowMyAvatarInFriendTree"},
963 {YAHOO_FLD_GAME_PROWLER_PREF, "GameProwlerPref"},
964 {YAHOO_FLD_VAS_USER, "VASUser"},
965 {YAHOO_FLD_FIRSTNAME, "Firstname"},
966 {YAHOO_FLD_YPM_KEY, "YPMKey"},
967 {YAHOO_FLD_COOKIE_CUTTER, "CookieCutter"},
968 {YAHOO_FLD_FEATURE_ID, "FeatureId"},
969 {YAHOO_FLD_ACTION_TYPE, "ActionType"},
970 {YAHOO_FLD_UNAUTH, "UnAuth"},
971 {YAHOO_FLD_GROUP, "Group"},
972 {YAHOO_FLD_ANTI_BOT_URL, "AntiBotUrl"},
973 {YAHOO_FLD_ANTI_BOT_SECRET, "AntiBotSecret"},
974 {YAHOO_FLD_ANTI_BOT_RESPONSE, "AntiBotResponse"},
975 {YAHOO_FLD_AUDIBLE_ID, "AudibleId"},
976 {YAHOO_FLD_AUDIBLE_TEXT, "AudibleText"},
977 {YAHOO_FLD_AUDIBLE_HASH, "AudibleHash"},
978 {YAHOO_FLD_IGNORED_USER, "IgnoredUser"},
979 {YAHOO_FLD_PROFILE_ID, "ProfileId"},
980 {YAHOO_FLD_INVISIBLE_TO_FRIEND, "InvisibleToFriend"},
981 {YAHOO_FLD_VISIBLE_TO_FRIEND, "VisibleToFriend"},
982 {YAHOO_FLD_CONTACT_INFO, "ContactInfo"},
983 {YAHOO_FLD_CLOUD_ID, "CloudId"},
984 {YAHOO_FLD_BRANDING_ID, "BrandingId"},
985 {YAHOO_FLD_NUM_ATTRIBUTED_BUDDIES, "NumAttributedBuddies"},
986 {YAHOO_FLD_CAPABILITY_MATRIX, "CapabilityMatrix"},
987 {YAHOO_FLD_OBJECT_ID, "ObjectId"},
988 {YAHOO_FLD_OBJECT_NAME, "ObjectName"},
989 {YAHOO_FLD_META_DATA, "MetaData"},
990 {YAHOO_FLD_OBJECT_SIZE, "ObjectSize"},
991 {YAHOO_FLD_TRANSFER_TYPE, "TransferType"},
992 {YAHOO_FLD_TRANSFER_TAG, "TransferTag"},
993 {YAHOO_FLD_TOKEN, "Token"},
994 {YAHOO_FLD_HASH, "Hash"},
995 {YAHOO_FLD_CHECKSUM, "Checksum"},
996 {YAHOO_FLD_LASTNAME, "Lastname"},
997 {YAHOO_FLD_DATA, "Data"},
998 {YAHOO_FLD_APP_ID, "AppId"},
999 {YAHOO_FLD_INSTANCE_ID, "InstanceId"},
1000 {YAHOO_FLD_ALERT_ID, "AlertId"},
1001 {YAHOO_FLD_OPI_STATUS, "OpiStatus"},
1002 {YAHOO_FLD_APP_REGISTER, "AppRegister"},
1003 {YAHOO_FLD_CHECK_LOGIN_STATUS, "CheckLoginStatus"},
1004 {YAHOO_FLD_TARGET_GROUP, "TargetGroup"},
1005 {YAHOO_FLD_FT_SESSION_ID, "FtSessionId"},
1006 {YAHOO_FLD_TOTAL_FILE_COUNT, "TotalFileCount"},
1007 {YAHOO_FLD_THUMBNAIL, "Thumbnail"},
1008 {YAHOO_FLD_FILE_INFO, "FileInfo"},
1009 {YAHOO_FLD_SPAMMER_ID, "SpammerId"},
1010 {YAHOO_FLD_INITIATOR, "Initiator"},
1011 {YAHOO_FLD_FT_ONE_FILE_DONE, "FtOneFileDone"},
1012 {YAHOO_FLD_X_POS, "XPos"},
1013 {YAHOO_FLD_Y_POS, "YPos"},
1014 {YAHOO_FLD_MSG_RECORD, "MsgRecord"},
1015 {YAHOO_FLD_FLAG_MINGLE_USER, "FlagMingleUser"},
1016 {YAHOO_FLD_ABUSE_SIGNATURE, "AbuseSignature"},
1017 {YAHOO_FLD_LOGIN_Y_COOKIE, "LoginYCookie"},
1018 {YAHOO_FLD_LOGIN_T_COOKIE, "LoginTCookie"},
1019 {YAHOO_FLD_LOGIN_CRUMB, "LoginCrumb"},
1020 {YAHOO_FLD_BUDDY_DETAIL, "BuddyDetail"},
1021 {YAHOO_FLD_VALID_CLIENT_COOKIES, "ValidClientCookies"},
1022 {YAHOO_FLD_NUM_LCS_BUDDIES, "NumLcsBuddies"},
1023 {YAHOO_FLD_IS_RELOGIN, "IsReLogin"},
1024 {YAHOO_FLD_START_OF_RECORD, "StartOfRecord"},
1025 {YAHOO_FLD_END_OF_RECORD, "EndOfRecord"},
1026 {YAHOO_FLD_START_OF_LIST, "StartOfList"},
1027 {YAHOO_FLD_END_OF_LIST, "EndOfList"},
1028 {YAHOO_FLD_COUNTRYCODE, "Countrycode"},
1029 {YAHOO_FLD_PSTN_DID, "PSTNDid"},
1030 {YAHOO_FLD_PSTN_PREMIUM_FLAG, "PSTNPremiumFlag"},
1031 {YAHOO_FLD_CRUMB_HASH, "CrumbHash"},
1032 {YAHOO_FLD_LOCALE, "Locale"},
1033 {YAHOO_FLD_PREFERENCES, "Preferences"},
1034 {YAHOO_FLD_PREF_CATEGORY, "PrefCategory"},
1035 {YAHOO_FLD_PREF_MASK, "PrefMask"},
1036 {YAHOO_FLD_BUDDY_INFO, "BuddyInfo"},
1037 {YAHOO_FLD_PLUGIN_INFO, "PluginInfo"},
1038 {YAHOO_FLD_VISIBILITY_FLAG, "VisibilityFlag"},
1039 {YAHOO_FLD_GROUPS_RECORD_LIST, "GroupsRecordList"},
1040 {YAHOO_FLD_BUDDIES_RECORD_LIST, "BuddiesRecordList"},
1041 {YAHOO_FLD_IGNORED_BUDDIES_RECORD_LIST, "IgnoredBuddiesRecordList"},
1042 {YAHOO_FLD_PREMIUM_SMS_RATE, "PremiumSmsRate"},
1043 {YAHOO_FLD_PREMIUM_SMS_BALANCE, "PremiumSmsBalance"},
1044 {YAHOO_FLD_PREMIUM_SMS_SYMBOL, "PremiumSmsSymbol"},
1045 {YAHOO_FLD_PREMIUM_SMS_SYMBOL_POS, "PremiumSmsSymbolPos"},
1046 {YAHOO_FLD_PREMIUM_SMS_MAX_MSGS, "PremiumSmsMaxMsgs"},
1047 {YAHOO_FLD_NETSTAT_MSG, "NetstatMsg"},
1048 {YAHOO_FLD_SERVER_TYPE, "ServerType"},
1049 {YAHOO_FLD_TRY_P2P, "TryP2P"},
1050 {YAHOO_FLD_P2P_CONN_STATE, "P2PConnState"},
1051 {YAHOO_FLD_INTERNET_CONN_TYPE, "InternetConnType"},
1052 {YAHOO_FLD_NEED_CMD_RETURN, "NeedCmdReturn"},
1053 {0, NULL},
1057 * These fields' values are themselves fields. Possible values are:
1058 * - YAHOO_FLD_GROUPS_RECORD_LIST,
1059 * - YAHOO_FLD_BUDDIES_RECORD_LIST,
1060 * - YAHOO_FLD_IGNORED_BUDDIES_RECORD_LIST,
1061 * - YAHOO_FLD_PREFERENCES,
1063 static const int yahoo_fields_with_field_values[] = {
1064 YAHOO_FLD_START_OF_LIST,
1065 YAHOO_FLD_END_OF_LIST,
1066 YAHOO_FLD_START_OF_RECORD,
1067 YAHOO_FLD_END_OF_RECORD,
1070 /* Find the end of the current content line and return its length */
1071 static int get_content_item_length(tvbuff_t *tvb, int offset)
1073 int origoffset = offset;
1075 /* Keep reading until the magic delimiter (or end of tvb) is found */
1076 while (tvb_captured_length_remaining(tvb, offset) >= 2) {
1077 if (tvb_get_ntohs(tvb, offset) == 0xc080) {
1078 break;
1080 offset += 1;
1082 return offset - origoffset;
1085 static unsigned
1086 get_ymsg_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
1088 unsigned plen;
1091 * Get the length of the YMSG packet.
1093 plen = tvb_get_ntohs(tvb, offset + 8);
1096 * That length doesn't include the length of the header itself; add that in.
1098 return plen + YAHOO_HEADER_SIZE;
1101 static bool is_field_with_field_value(int key)
1103 for (unsigned i = 0; i < G_N_ELEMENTS(yahoo_fields_with_field_values); i++) {
1104 if (key == yahoo_fields_with_field_values[i]) {
1105 return true;
1109 return false;
1112 static int
1113 dissect_ymsg_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
1115 proto_tree *ymsg_tree, *ti;
1116 proto_item *content_item;
1117 proto_tree *content_tree;
1118 const char *val_buf;
1119 int val_len;
1120 int val_key;
1121 int key_len;
1122 int key;
1123 bool key_valid;
1124 int content_len;
1125 int offset = 0;
1127 col_set_str(pinfo->cinfo, COL_PROTOCOL, "YMSG");
1129 col_add_fstr(pinfo->cinfo, COL_INFO,
1130 "%s (status=%s) ",
1131 val_to_str(tvb_get_ntohs(tvb, offset + 10),
1132 ymsg_command_vals, "Unknown Command: %u"),
1133 val_to_str(tvb_get_ntohl(tvb, offset + 12),
1134 ymsg_status_vals, "Unknown Status: %u")
1137 if (tree) {
1138 ti = proto_tree_add_item(tree, proto_ymsg, tvb, offset, -1, ENC_NA);
1139 ymsg_tree = proto_item_add_subtree(ti, ett_ymsg);
1141 offset += 4; /* skip the YMSG string */
1143 /* Version */
1144 proto_tree_add_item(ymsg_tree, hf_ymsg_version, tvb, offset, 2, ENC_BIG_ENDIAN);
1145 offset += 2;
1147 /* Vendor ID */
1148 proto_tree_add_item(ymsg_tree, hf_ymsg_vendor, tvb, offset, 2, ENC_BIG_ENDIAN);
1149 offset += 2;
1151 /* Length */
1152 content_len = tvb_get_ntohs(tvb, offset);
1153 proto_tree_add_item(ymsg_tree, hf_ymsg_len, tvb, offset, 2, ENC_BIG_ENDIAN);
1154 offset += 2;
1156 /* Command */
1157 proto_item_append_text(ti, " (%s)",
1158 val_to_str_const(tvb_get_ntohs(tvb, offset),
1159 ymsg_command_vals,
1160 "Unknown"));
1162 proto_tree_add_item(ymsg_tree, hf_ymsg_command, tvb, offset, 2, ENC_BIG_ENDIAN);
1163 offset += 2;
1165 /* Status */
1166 proto_tree_add_item(ymsg_tree, hf_ymsg_status, tvb, offset, 4, ENC_BIG_ENDIAN);
1167 offset += 4;
1169 /* Session id */
1170 proto_tree_add_item(ymsg_tree, hf_ymsg_session_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1171 offset += 4;
1173 /* Contents */
1174 if (content_len) {
1175 /* Create content subtree */
1176 content_item = proto_tree_add_item(ymsg_tree, hf_ymsg_content, tvb,
1177 offset, -1, ENC_NA);
1178 content_tree = proto_item_add_subtree(content_item, ett_ymsg_content);
1180 /* Each entry consists of:
1181 <key int32> <delimiter> <value string> <delimiter>
1184 /* Parse and show each line of the contents */
1185 for (;;)
1187 proto_item *ti_2;
1188 proto_tree *content_line_tree;
1190 /* Don't continue unless there is room for another whole item.
1191 (including 2 2-byte delimiters */
1192 if (offset >= (YAHOO_HEADER_SIZE + content_len - 4))
1194 break;
1197 /* Get the length of the key */
1198 key_len = get_content_item_length(tvb, offset);
1199 /* Extract the key */
1200 key_valid = ws_strtoi32(tvb_format_text(pinfo->pool, tvb, offset, key_len), NULL, &key);
1201 if (!key_valid) {
1202 key = -1;
1205 /* Get the length of the value */
1206 val_len = get_content_item_length(tvb, offset + key_len + 2);
1207 /* Extract the value */
1208 val_buf = tvb_format_text(pinfo->pool, tvb, offset + key_len + 2, val_len);
1210 /* If the key is a field with field values, convert the value to an int and get its field name */
1211 if (is_field_with_field_value(key) && ws_strtoi32(val_buf, NULL, &val_key)) {
1212 val_buf = val_to_str(val_key, ymsg_field_vals, "Unknown(%u)");
1215 /* Add a text item with the key... */
1216 ti_2 = proto_tree_add_string_format(content_tree, hf_ymsg_content_line, tvb,
1217 offset, key_len + 2 + val_len + 2,
1218 "", "%s: %s", val_to_str(key, ymsg_field_vals, "Unknown(%u)"),
1219 val_buf);
1220 content_line_tree = proto_item_add_subtree(ti_2, ett_ymsg_content_line);
1222 /* And add the key and value separately inside */
1223 proto_tree_add_item(content_line_tree, hf_ymsg_content_line_key, tvb,
1224 offset, key_len, ENC_ASCII);
1225 proto_tree_add_item(content_line_tree, hf_ymsg_content_line_value, tvb,
1226 offset + key_len + 2, val_len, ENC_ASCII);
1228 /* Move beyond key and value lines */
1229 offset += key_len + 2 + val_len + 2;
1234 col_set_fence(pinfo->cinfo, COL_INFO);
1236 return tvb_captured_length(tvb);
1240 static bool
1241 dissect_ymsg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
1243 if (tvb_captured_length(tvb) < 4) {
1244 return false;
1246 if (tvb_memeql(tvb, 0, (const uint8_t*)"YMSG", 4) == -1) {
1247 /* Not a Yahoo Messenger packet. */
1248 return false;
1251 tcp_dissect_pdus(tvb, pinfo, tree, ymsg_desegment, 10, get_ymsg_pdu_len,
1252 dissect_ymsg_pdu, data);
1253 return true;
1256 void
1257 proto_register_ymsg(void)
1259 static hf_register_info hf[] = {
1260 { &hf_ymsg_version, {
1261 "Version", "ymsg.version", FT_UINT16, BASE_DEC,
1262 NULL, 0, "Packet version identifier", HFILL }},
1263 { &hf_ymsg_vendor, {
1264 "Vendor ID", "ymsg.vendor", FT_UINT16, BASE_DEC,
1265 NULL, 0, "Vendor identifier", HFILL }},
1266 { &hf_ymsg_len, {
1267 "Packet Length", "ymsg.len", FT_UINT16, BASE_DEC,
1268 NULL, 0, NULL, HFILL }},
1269 { &hf_ymsg_command, {
1270 "Command", "ymsg.command", FT_UINT16, BASE_DEC,
1271 VALS(ymsg_command_vals), 0, "Command Type", HFILL }},
1272 { &hf_ymsg_status, {
1273 "Status", "ymsg.status", FT_UINT32, BASE_DEC,
1274 VALS(ymsg_status_vals), 0, "Message Type Flags", HFILL }},
1275 { &hf_ymsg_session_id, {
1276 "Session ID", "ymsg.session_id", FT_UINT32, BASE_HEX,
1277 NULL, 0, "Connection ID", HFILL }},
1279 { &hf_ymsg_content, {
1280 "Content", "ymsg.content", FT_BYTES, BASE_NONE,
1281 NULL, 0, "Data portion of the packet", HFILL }},
1282 { &hf_ymsg_content_line, {
1283 "Content-line", "ymsg.content-line", FT_STRING, BASE_NONE,
1284 NULL, 0, "Content line", HFILL }},
1285 { &hf_ymsg_content_line_key, {
1286 "Key", "ymsg.content-line.key", FT_STRING, BASE_NONE,
1287 NULL, 0, "Content line key", HFILL }},
1288 { &hf_ymsg_content_line_value, {
1289 "Value", "ymsg.content-line.value", FT_STRING, BASE_NONE,
1290 NULL, 0, "Content line value", HFILL }}
1292 static int *ett[] = {
1293 &ett_ymsg,
1294 &ett_ymsg_content,
1295 &ett_ymsg_content_line
1297 module_t *ymsg_module;
1299 proto_ymsg = proto_register_protocol("Yahoo YMSG Messenger Protocol",
1300 "YMSG", "ymsg");
1302 proto_register_field_array(proto_ymsg, hf, array_length(hf));
1304 proto_register_subtree_array(ett, array_length(ett));
1306 ymsg_module = prefs_register_protocol(proto_ymsg, NULL);
1307 prefs_register_bool_preference(ymsg_module, "desegment",
1308 "Reassemble YMSG messages spanning multiple TCP segments",
1309 "Whether the YMSG dissector should reassemble messages spanning multiple TCP segments. "
1310 "To use this option, you must also enable"
1311 " \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
1312 &ymsg_desegment);
1315 void
1316 proto_reg_handoff_ymsg(void)
1319 * DO NOT register for port 23, as that's Telnet, or for port
1320 * 25, as that's SMTP.
1322 * Also, DO NOT register for port 5050, as that's used by the
1323 * old and new Yahoo messenger protocols.
1325 * Just register as a heuristic TCP dissector, and reject stuff
1326 * that doesn't begin with a YMSG signature.
1328 heur_dissector_add("tcp", dissect_ymsg, "Yahoo YMSG Messenger over TCP", "ymsg_tcp", proto_ymsg, HEURISTIC_ENABLE);
1332 * Editor modelines - https://www.wireshark.org/tools/modelines.html
1334 * Local variables:
1335 * c-basic-offset: 4
1336 * tab-width: 8
1337 * indent-tabs-mode: nil
1338 * End:
1340 * vi: set shiftwidth=4 tabstop=8 expandtab:
1341 * :indentSize=4:tabSize=8:noTabs=true: