免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2770 | 回复: 10
打印 上一主题 下一主题

求解:ipp2p代码中沸点部分 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-20 09:30 |只看该作者 |倒序浏览
请高手们不吝赐教,代码如下:
#if defined(MODVERSIONS)
#include <linux/modversions.h>
#endif
#include <linux/module.h>
#include <linux/version.h>
#include "ipt_ipp2p.h"
#include <net/tcp.h>
#include <net/udp.h>

#define get_u8(X,O)  (*(__u8 *)(X + O))
#define get_u16(X,O)  (*(__u16 *)(X + O))
#define get_u32(X,O)  (*(__u32 *)(X + O))

................

/* feidian */
        if ( (plen == 4 && get_u32(payload,0) == __constant_htonl(0x291c3201)) || (plen == 61 && get_u32(payload,0) == __constant_htonl(0x291c3201) && get_u32(payload,4) == __constant_htonl(0x39000000))) return (IPP2P_PP * 100 + 7);


以上代码是什么意思?要封掉什么样的数据包?被封掉的数据包原样是怎么样的?
先谢过了?

加:
plen==4是指数据包长?数据包头长?
__constant_htonl(0x291c3201)的结果是“01321C29” ?
get_u32()和get_u16()是什么意思?

[ 本帖最后由 cuplin2002 于 2008-5-21 16:19 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-05-20 10:57 |只看该作者
为什么没人回呢?我发了2边了都没人回。别沉了

论坛徽章:
0
3 [报告]
发表于 2008-05-20 12:16 |只看该作者
我猜测是封 沸点网络电视(Feidian), 至于数据包原样长的如何, 自己装一个用wireshark抓来看看即可, 别人一般没那闲心替你抓包看吧

论坛徽章:
0
4 [报告]
发表于 2008-05-20 12:35 |只看该作者

回复 #1 cuplin2002 的帖子

我自己抓过包看过,但是没看明白;高手应该一看就知道包是什么样子的吧,根本就不用抓包看。我就是不明白语句里面的函数是干嘛用的?处理的结果又是什么样的。

论坛徽章:
39
2017金鸡报晓
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
5 [报告]
发表于 2008-05-20 12:54 |只看该作者
等以后长大了就自然明白.

论坛徽章:
0
6 [报告]
发表于 2008-05-20 13:40 |只看该作者

回复 #5 醉卧水云间 的帖子

plen==4是指数据包长?数据包头长?
__constant_htonl(0x291c3201)的结果是“01321C29” ?
get_u32()和get_u16()是什么意思?

论坛徽章:
0
7 [报告]
发表于 2008-05-21 09:41 |只看该作者

回复 #1 cuplin2002 的帖子

看见的都没人会吗?为什么没人回呢?

论坛徽章:
0
8 [报告]
发表于 2008-05-21 12:37 |只看该作者
你问的问题都是一看完整代码马上就明白的问题, 随便截下来一段,让别人猜着玩啊

#define get_u16(X,O)  (*(__u16 *)(X + O))
#define get_u32(X,O)  (*(__u32 *)(X + O))
/usr/include/linux/byteorder/little_endian.h

#define __constant_htonl(x) ___constant_swab32((x))
跟下去看不就明白了

论坛徽章:
0
9 [报告]
发表于 2008-05-21 16:16 |只看该作者
原帖由 caijimin 于 2008-5-21 12:37 发表
你问的问题都是一看完整代码马上就明白的问题, 随便截下来一段,让别人猜着玩啊

#define get_u16(X,O)  (*(__u16 *)(X + O))
#define get_u32(X,O)  (*(__u32 *)(X + O))
/usr/include/linux/byteorder/ ...


谢谢提醒

论坛徽章:
0
10 [报告]
发表于 2008-05-26 10:13 |只看该作者
咋还没人教我呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP