(一)、长度
20个字节
(二)、各字段长度及其含义
1、固定头“YMSG”:4个字节;
2、版本号:2个字节,本版本填充0x000c;
3、固定填充0x0000,2个字节;
4、Yahoo包发送内容的长度:2个字节,不包括头文件的20个字节;
5、SERVICE类型:2个字节,以下是yahoo协议中定义的服务类型以及对应的数值;
enum yahoo_service { /* these are easier to see in hex */
YAHOO_SERVICE_LOGON = 1,
YAHOO_SERVICE_LOGOFF,
YAHOO_SERVICE_ISAWAY,
YAHOO_SERVICE_ISBACK,
YAHOO_SERVICE_IDLE, /* 5 (placemarker) */
YAHOO_SERVICE_MESSAGE,
YAHOO_SERVICE_IDACT,
YAHOO_SERVICE_IDDEACT,
YAHOO_SERVICE_MAILSTAT,
YAHOO_SERVICE_USERSTAT, /* 0xa */
YAHOO_SERVICE_NEWMAIL,
YAHOO_SERVICE_CHATINVITE,
YAHOO_SERVICE_CALENDAR,
YAHOO_SERVICE_NEWPERSONALMAIL,
YAHOO_SERVICE_NEWCONTACT,
YAHOO_SERVICE_ADDIDENT, /* 0x10 */
YAHOO_SERVICE_ADDIGNORE,
YAHOO_SERVICE_PING,
YAHOO_SERVICE_GOTGROUPRENAME,
YAHOO_SERVICE_SYSMESSAGE = 0x14,
YAHOO_SERVICE_SKINNAME = 0x15,
YAHOO_SERVICE_PASSTHROUGH2 = 0x16,
YAHOO_SERVICE_CONFINVITE = 0x18,
YAHOO_SERVICE_CONFLOGON,
YAHOO_SERVICE_CONFDECLINE,
YAHOO_SERVICE_CONFLOGOFF,
YAHOO_SERVICE_CONFADDINVITE,
YAHOO_SERVICE_CONFMSG,
YAHOO_SERVICE_CHATLOGON,
YAHOO_SERVICE_CHATLOGOFF,
YAHOO_SERVICE_CHATMSG = 0x20,
YAHOO_SERVICE_GAMELOGON = 0x28,
YAHOO_SERVICE_GAMELOGOFF,
YAHOO_SERVICE_GAMEMSG = 0x2a,
YAHOO_SERVICE_FILETRANSFER = 0x46,
YAHOO_SERVICE_VOICECHAT = 0x4A,
YAHOO_SERVICE_NOTIFY = 0x4B,
YAHOO_SERVICE_VERIFY,
YAHOO_SERVICE_P2PFILEXFER,
YAHOO_SERVICE_PEERTOPEER = 0x4F,
YAHOO_SERVICE_WEBCAM,
YAHOO_SERVICE_AUTHRESP = 0x54,
YAHOO_SERVICE_LIST = 0x55,
YAHOO_SERVICE_AUTH = 0x57,
YAHOO_SERVICE_AUTHBUDDY = 0x6d,
YAHOO_SERVICE_ADDBUDDY = 0x83,
YAHOO_SERVICE_REMBUDDY = 0x84,
YAHOO_SERVICE_IGNORECONTACT, /* > 1, 7, 13 < 1, 66, 13, 0*/
YAHOO_SERVICE_REJECTCONTACT,
YAHOO_SERVICE_GROUPRENAME = 0x89, /* > 1, 65(new), 66(0), 67(old) */
YAHOO_SERVICE_CHATONLINE = 0x96, /* > 109(id), 1, 6(abcde) < 0,1*/
YAHOO_SERVICE_CHATGOTO,
YAHOO_SERVICE_CHATJOIN, /* > 1 104-room 129-1600326591 62-2 */
YAHOO_SERVICE_CHATLEAVE,
YAHOO_SERVICE_CHATEXIT = 0x9b,
YAHOO_SERVICE_CHATADDINVITE = 0x9d,
YAHOO_SERVICE_CHATLOGOUT = 0xa0,
YAHOO_SERVICE_CHATPING,
YAHOO_SERVICE_COMMENT = 0xa8,
YAHOO_SERVICE_PRESENCE_PERM = 0xb9,
YAHOO_SERVICE_PRESENCE_SESSION = 0xba,
YAHOO_SERVICE_AVATAR = 0xbc,
YAHOO_SERVICE_PICTURE_CHECKSUM = 0xbd,
YAHOO_SERVICE_PICTURE = 0xbe,
YAHOO_SERVICE_PICTURE_UPDATE = 0xc1,
YAHOO_SERVICE_PICTURE_UPLOAD = 0xc2,
YAHOO_SERVICE_Y6_VISIBLE_TOGGLE = 0xc5,
YAHOO_SERVICE_Y6_STATUS_UPDATE = 0xc6,
YAHOO_SERVICE_AVATAR_UPDATE = 0xc7,
YAHOO_SERVICE_VERIFY_ID_EXISTS = 0xc8,
YAHOO_SERVICE_AUDIBLE = 0xd0,
YAHOO_SERVICE_STATUS_15 = 0xf0,
YAHOO_SERVICE_LIST_15 = 0Xf1,
YAHOO_SERVICE_WEBLOGIN = 0x0226,
YAHOO_SERVICE_SMS_MSG = 0x02ea
};
6、STATUS 类型:4个字节,以下是yahoo协议中定义的用户状态
enum yahoo_status {
YAHOO_STATUS_AVAILABLE = 0,
YAHOO_STATUS_BRB,
YAHOO_STATUS_BUSY,
YAHOO_STATUS_NOTATHOME,
YAHOO_STATUS_NOTATDESK,
YAHOO_STATUS_NOTINOFFICE,
YAHOO_STATUS_ONPHONE,
YAHOO_STATUS_ONVACATION,
YAHOO_STATUS_OUTTOLUNCH,
YAHOO_STATUS_STEPPEDOUT,
YAHOO_STATUS_INVISIBLE = 12,
YAHOO_STATUS_CUSTOM = 99,
YAHOO_STATUS_IDLE = 999,
YAHOO_STATUS_WEBLOGIN = 0x5a55aa55,
YAHOO_STATUS_OFFLINE = 0x5a55aa56, /* don't ask */
YAHOO_STATUS_TYPING = 0x16
};
7、SESSION ID:4个字节,一般给服务器发送时,填充全0。服务器返回的包会自己填充服务器的SESSION。
8、分隔符:0xc080,在yahoo的包中用到的固定分隔符,用在关键字key和value之间以及其他任何需要分隔的地方,包括包头与后面内容的分隔。