yahooIM协议头分析

来源:互联网 发布:js根据标签name 编辑:程序博客网 时间:2024/05/01 17:26
    (一)、长度
        20个字节
   
    (二)、各字段长度及其含义
        1、固定头“YMSG”:4个字节;
        2、版本号:2个字节,本版本填充0x000c;
        3、固定填充0x0000,2个字节;
        4Yahoo包发送内容的长度:2个字节,不包括头文件的20个字节;
        5SERVICE类型: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
};
        6STATUS 类型: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
};
        7SESSION ID:4个字节,一般给服务器发送时,填充全0。服务器返回的包会自己填充服务器的SESSION。
        8、分隔符:0xc080,在yahoo的包中用到的固定分隔符,用在关键字key和value之间以及其他任何需要分隔的地方,包括包头与后面内容的分隔。
 
原创粉丝点击