⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packet.c

📁 打魔兽战网的都知道他是什么
💻 C
📖 第 1 页 / 共 3 页
字号:
	    case CLIENT_STATSUPDATE:		return "CLIENT_STATSUPDATE";	    case CLIENT_REALMJOINREQ_109:		return "CLIENT_REALMJOINREQ_109";	    case CLIENT_CHANGECLIENT:		return "CLIENT_CHANGECLIENT";	    case CLIENT_SETEMAILREPLY:		return "CLIENT_SETEMAILREPLY";	    case CLIENT_GETPASSWORDREQ:		return "CLIENT_GETPASSWORDREQ";	    case CLIENT_CHANGEEMAILREQ:		return "CLIENT_CHANGEEMAILREQ";	    case CLIENT_CRASHDUMP:		return "CLIENT_CRASHDUMP";	    case CLIENT_FINDANONGAME:		return "CLIENT_FINDANONGAME";	    case CLIENT_ARRANGEDTEAM_FRIENDSCREEN:		return "CLIENT_ARRANGEDTEAM_FRIENDSCREEN";	    case CLIENT_ARRANGEDTEAM_INVITE_FRIEND:		return "CLIENT_ARRANGEDTEAM_INVITE_FRIEND";			    case CLIENT_ARRANGEDTEAM_ACCEPT_DECLINE_INVITE:		return "CLIENT_ARRANGEDTEAM_ACCEPT_DECLINE_INVITE";			    case CLIENT_FRIENDSLISTREQ:		return "CLIENT_FRIENDSLISTREQ";	    case CLIENT_FRIENDINFOREQ:		return "CLIENT_FRIENDINFOREQ";	    case CLIENT_CLANINFOREQ:	    	return "CLIENT_CLANINFOREQ";	    }	    return "unknown";	    	case packet_class_file:	    if (packet_get_size(packet)<sizeof(t_file_header))	    {		eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));		return "unknown";	    }	    switch (bn_short_get(packet->u.file.h.type))	    {	    case CLIENT_FILE_REQ:		return "CLIENT_FILE_REQ";	    }	    return "unknown";	    	case packet_class_udp:	    if (packet_get_size(packet)<sizeof(t_udp_header))	    {		eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));		return "unknown";	    }	    switch (bn_int_get(packet->u.udp.h.type))	    {	    case SERVER_UDPTEST: /* we get these if we send stuff to ourself */		return "SERVER_UDPTEST";	    case CLIENT_UDPPING:		return "CLIENT_UDPPING";	    case CLIENT_SESSIONADDR1:		return "CLIENT_SESSIONADDR1";	    case CLIENT_SESSIONADDR2:		return "CLIENT_SESSIONADDR2";	    }	    return "unknown";		case packet_class_raw:	    return "CLIENT_RAW";	       case packet_class_d2game:	    if (packet_get_size(packet)<sizeof(t_d2game_header))	    {               eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));               return "unknown";	    }	    switch (bn_byte_get(packet->u.d2game.h.type))	    {	    default:		return "CLIENT_D2GAME";	    }	    return "unknown";	            case packet_class_d2cs:                return "D2CS";        case packet_class_d2gs:                return "D2GS";        case packet_class_d2cs_bnetd:                return "D2CS_BNETD";	    	case packet_class_w3route:	    if (packet_get_size(packet)<sizeof(t_w3route_header))	    {		eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));		return "unknown";	    }	    switch (bn_short_get(packet->u.bnet.h.type))	    {	    case CLIENT_W3ROUTE_REQ:	        return "CLIENT_W3ROUTE_REQ";	    case CLIENT_W3ROUTE_LOADINGDONE:	        return "CLIENT_W3ROUTE_LOADINGDONE";	        	    case CLIENT_W3ROUTE_ABORT:	        return "CLIENT_W3ROUTE_ABORT";	    case CLIENT_W3ROUTE_CONNECTED:	        return "CLIENT_W3ROUTE_CONNECTED";	    case CLIENT_W3ROUTE_ECHOREPLY:	        return "CLIENT_W3ROUTE_ECHOREPLY";	    case CLIENT_W3ROUTE_GAMERESULT:	        return "CLIENT_W3ROUTE_GAMERESULT";	        	    case CLIENT_W3ROUTE_GAMERESULT_W3XP:	        return "CLIENT_W3ROUTE_GAMERESULT_W3XP";	    }	    return "unknown";		case packet_class_none:	    return "unknown";	}		eventlog(eventlog_level_error,__FUNCTION__,"packet has invalid class %d",(int)packet->class);	return "unknown";	    case packet_dir_from_server:	switch (packet->class)	{	case packet_class_init:	    return "unknown";	case packet_class_bnet:	    if (packet_get_size(packet)<sizeof(t_bnet_header))	    {		eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));		return "unknown";	    }	    switch (bn_short_get(packet->u.bnet.h.type))	    {	    case SERVER_COMPREPLY:		return "SERVER_COMPREPLY";	    case SERVER_SESSIONKEY1:		return "SERVER_SESSIONKEY1";	    case SERVER_SESSIONKEY2:		return "SERVER_SESSIONKEY2";	    case SERVER_CREATEACCTREPLY1:		return "SERVER_CREATEACCTREPLY1";	    case SERVER_AUTHREQ1:		return "SERVER_AUTHREQ1";	    case SERVER_AUTHREQ_109:		return "SERVER_AUTHREQ_109";	    case SERVER_AUTHREPLY1:		return "SERVER_AUTHREPLY1";	    case SERVER_AUTHREPLY_109:		return "SERVER_AUTHREPLY_109";	    case SERVER_REGSNOOPREQ:		return "SERVER_REGSNOOPREQ";	    case SERVER_ICONREPLY:		return "SERVER_ICONREPLY";	    case SERVER_LADDERSEARCHREPLY:		return "SERVER_LADDERSEARCHREPLY";	    case SERVER_CDKEYREPLY:		return "SERVER_CDKEYREPLY";	    case SERVER_CDKEYREPLY2:		return "SERVER_CDKEYREPLY2";	    case SERVER_CDKEYREPLY3:		return "SERVER_CDKEYREPLY3";	    case SERVER_REALMLISTREPLY:		return "SERVER_REALMLISTREPLY";	    case SERVER_REALMLISTREPLY_110:		return "SERVER_REALMLISTREPLY_110";			    case SERVER_PROFILEREPLY:		return "SERVER_PROFILEREPLY";	    case SERVER_UNKNOWN_37:		return "SERVER_UNKNOWN_37";	    case SERVER_MOTD_W3:		return "SERVER_MOTD_W3";	    case SERVER_LOGINREPLY_W3:		return "SERVER_LOGINREPLY_W3";	    case SERVER_LOGONPROOFREPLY:		return "SERVER_LOGONPROOFREPLY";					    case SERVER_CREATEACCOUNT_W3:		return "SERVER_CREATEACCTREPLY2";	    case SERVER_LOGINREPLY2:		return "SERVER_LOGINREPLY2";	    case SERVER_CREATEACCTREPLY2:		return "SERVER_CREATEACCOUNT_W3";			    case SERVER_FILEINFOREPLY:		return "SERVER_FILEINFOREPLY";	    case SERVER_STATSREPLY:		return "SERVER_STATSREPLY";	    case SERVER_LOGINREPLY1:		return "SERVER_LOGINREPLY1";	    case SERVER_CHANGEPASSACK:		return "SERVER_CHANGEPASSACK";	    case SERVER_PLAYERINFOREPLY:		return "SERVER_PLAYERINFOREPLY";	    case SERVER_CHANNELLIST:		return "SERVER_CHANNELLIST";	    case SERVER_SERVERLIST:		return "SERVER_SERVERLIST";	    case SERVER_MESSAGE:		return "SERVER_MESSAGE";	    case SERVER_GAMELISTREPLY:		return "SERVER_GAMELISTREPLY";	    case SERVER_STARTGAME1_ACK:		return "SERVER_STARTGAME1_ACK";	    case SERVER_STARTGAME3_ACK:		return "SERVER_STARTGAME3_ACK";	    case SERVER_STARTGAME4_ACK:		return "SERVER_STARTGAME4_ACK";	    case SERVER_MAPAUTHREPLY1:		return "SERVER_MAPAUTHREPLY1";	    case SERVER_MAPAUTHREPLY2:		return "SERVER_MAPAUTHREPLY2";	    case SERVER_ADREPLY:		return "SERVER_ADREPLY";	    case SERVER_ADCLICKREPLY2:		return "SERVER_ADCLICKREPLY2";	    case SERVER_LADDERREPLY:		return "SERVER_LADDERREPLY";	    case SERVER_ECHOREQ:		return "SERVER_ECHOREQ";	    case SERVER_PINGREPLY:		return "SERVER_PINGREPLY";	    case SERVER_REALMJOINREPLY_109:		return "SERVER_REALMJOINREPLY_109";	    case SERVER_SETEMAILREQ:		return "SERVER_SETEMAILREQ";	    case SERVER_FINDANONGAME:		return "SERVER_FINDANONGAME";	    case SERVER_ARRANGEDTEAM_FRIENDSCREEN:		return "SERVER_ARRANGEDTEAM_FRIENDSCREEN";	    case SERVER_ARRANGEDTEAM_INVITE_FRIEND_ACK:		return "SERVER_ARRANGEDTEAM_INVITE_FRIEND_ACK";	    case SERVER_ARRANGEDTEAM_SEND_INVITE:		return "SERVER_ARRANGEDTEAM_SEND_INVITE";	    case SERVER_ARRANGEDTEAM_MEMBER_DECLINE:		return "SERVER_ARRANGEDTEAM_MEMBER_DECLINE";			    case SERVER_FRIENDSLISTREPLY:		return "SERVER_FRIENDSLISTREPLY";			    case SERVER_FRIENDINFOREPLY:		return "SERVER_FRIENDINFOREPLY";			    case SERVER_FRIENDADD_ACK:		return "SERVER_FRIENDADD_ACK";	    case SERVER_FRIENDDEL_ACK:		return "SERVER_FRIENDDEL_ACK";			    case SERVER_FRIENDMOVE_ACK:		return "SERVER_FRIENDMOVE_ACK";			    case SERVER_CLANINFOREPLY:	    	return "SERVER_CLANINFO_REPLY";	    }	    return "unknown";	    	case packet_class_file:	    if (packet_get_size(packet)<sizeof(t_file_header))	    {		eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));		return "unknown";	    }	    switch (bn_short_get(packet->u.file.h.type))	    {	    case SERVER_FILE_REPLY:		return "SERVER_FILE_REPLY";	    }	    return "unknown";	    	case packet_class_udp:	    if (packet_get_size(packet)<sizeof(t_udp_header))	    {		eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));		return "unknown";	    }	    switch (bn_int_get(packet->u.udp.h.type))	    {	    case SERVER_UDPTEST:		return "SERVER_UDPTEST";	    }	    return "unknown";		case packet_class_raw:	    return "SERVER_RAW";	    	case packet_class_d2game:	    if (packet_get_size(packet)<sizeof(t_d2game_header))	    {		eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));		return "unknown";	    }	    switch (bn_byte_get(packet->u.d2game.h.type))	    {	    default:		return "SERVER_D2GAME";	    }	    return "unknown";	            case packet_class_d2cs:                return "D2CS";        case packet_class_d2gs:                return "D2GS";        case packet_class_d2cs_bnetd:                return "D2CS_BNETD";	case packet_class_w3route:	    if (packet_get_size(packet)<sizeof(t_w3route_header))	    {		eventlog(eventlog_level_error,__FUNCTION__,"packet is shorter than header (len=%u)",packet_get_size(packet));		return "unknown";	    }	    switch (bn_short_get(packet->u.bnet.h.type))	    {	    case SERVER_W3ROUTE_READY:	        return "SERVER_W3ROUTE_READY";	    case SERVER_W3ROUTE_LOADINGACK:	        return "SERVER_W3ROUTE_LOADINGACK";	        	    case SERVER_W3ROUTE_ECHOREQ:	        return "SERVER_W3ROUTE_ECHOREQ";	        	    case SERVER_W3ROUTE_ACK:	        return "SERVER_W3ROUTE_ACK";	        	    case SERVER_W3ROUTE_PLAYERINFO:	        return "SERVER_W3ROUTE_PLAYERINFO";	        	    case SERVER_W3ROUTE_LEVELINFO:	        return "SERVER_W3ROUTE_LEVELINFO";	    case SERVER_W3ROUTE_STARTGAME1:	        return "SERVER_W3ROUTE_STARTGAME1";	        	    case SERVER_W3ROUTE_STARTGAME2:	        return "SERVER_W3ROUTE_STARTGAME2";	        	    }		    return "unknown";	case packet_class_none:	    return "unknown";	}		eventlog(eventlog_level_error,__FUNCTION__,"packet has invalid class %d",(int)packet->class);	return "unknown";    }        eventlog(eventlog_level_error,__FUNCTION__,"got unknown direction %d",(int)dir);    return "unknown";}extern int packet_set_type(t_packet * packet, unsigned int type){    if (!packet)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL packet");	return -1;    }        switch (packet->class)    {    case packet_class_init:	if (type!=CLIENT_INITCONN)	{	    eventlog(eventlog_level_error,__FUNCTION__,"init packet type 0x%08x is not valid",type);	    return -1;	}	return 0;	    case packet_class_bnet:	if (packet_get_size(packet)<sizeof(t_bnet_header))	{	    eventlog(eventlog_level_error,__FUNCTION__,"bnet packet is shorter than header (len=%u)",packet_get_size(packet));	    return -1;	}	if (type>MAX_NORMAL_TYPE)	{	    eventlog(eventlog_level_error,__FUNCTION__,"bnet packet type 0x%08x is too large",type);	    return -1;	}	bn_short_set(&packet->u.bnet.h.type,(unsigned short)type);	return 0;	    case packet_class_file:	if (packet_get_size(packet)<sizeof(t_file_header))	{	    eventlog(eventlog_level_error,__FUNCTION__,"file packet is shorter than header (len=%u)",packet_get_size(packet));	    return -1;	}	if (type>MAX_FILE_TYPE)	{	    eventlog(eventlog_level_error,__FUNCTION__,"file packet type 0x%08x is too large",type);	    return -1;	}	bn_short_set(&packet->u.file.h.type,(unsigned short)type);	return 0;	    case packet_class_udp:	if (packet_get_size(packet)<sizeof(t_udp_header))	{	    eventlog(eventlog_level_error,__FUNCTION__,"udp packet is shorter than header (len=%u)",packet_get_size(packet));	    return -1;	}	bn_int_set(&packet->u.udp.h.type,type);	return 0;	    case packet_class_d2game:	if (packet_get_size(packet)<sizeof(t_d2game_header))	{	    eventlog(eventlog_level_error,__FUNCTION__,"d2game packet is shorter than header (len=%u)",packet_get_size(packet));	    return -1;	}	bn_byte_set(&packet->u.d2game.h.type,type);	return 0;	    case packet_class_d2gs:        if (packet_get_size(packet)<sizeof(t_d2cs_d2gs_header))        {            eventlog(eventlog_level_error,__FUNCTION__,"d2gs packet is shorter than header (len=%u)",packet_get_size(packet));            return -1;        }        bn_short_set(&packet->u.d2cs_d2gs.h.type,type);        return 0;    case packet_class_d2cs_bnetd:        if (packet_get_size(packet)<sizeof(t_d2cs_bnetd_header))        {            eventlog(eventlog_level_error,__FUNCTION__,"d2cs_bnetd packet is shorter than header (len=%u)",packet_get_size(packet));            return -1;        }        bn_short_set(&packet->u.d2cs_bnetd.h.type,type);        return 0;    case packet_class_d2cs:        if (packet_get_size(packet)<sizeof(t_d2cs_client_header))        {            eventlog(eventlog_level_error,__FUNCTION__,"d2cs packet is shorter than header (len=%u)",packet_get_size(packet));            return -1;        }        bn_byte_set(&packet->u.d2cs_client.h.type,type);        return 0;    case packet_class_w3route:	if (packet_get_size(packet)<sizeof(t_w3route_header))	{	    eventlog(eventlog_level_error,__FUNCTION__,"w3route packet is shorter than header (len=%u)",packet_get_size(packet));	    return -1;	}	bn_short_set(&packet->u.w3route.h.type,(unsigned short)type);	return 0;	    case packet_class_raw:	eventlog(eventlog_level_error,__FUNCTION__,"can not set packet type for raw packet");	return 0;	    default:	eventlog(eventlog_level_error,__FUNCTION__,"packet has invalid class %d",(int)packet->class);	return -1;    }}/* size of the _complete_ packet, not the amount currently received or sent */extern unsigned int packet_get_size(t_packet const * packet){    unsigned int size;        if (!packet)    {        eventlog(eventlog_level_error,__FUNCTION__,"got NULL packet");	return 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -