ximalaya
驱动牛犊
驱动牛犊
  • 注册日期2002-12-15
  • 最后登录2003-08-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1573回复:6

请教怎样才能把封包过滤?

楼主#
更多 发布于:2003-05-09 15:54
用DriverStudio编写中间层包过滤驱动程序。
现在在OnSend中能看到,包的信息如ip类型等。但是不知怎样才能把
不要的包过滤。简单一点如所有的包都被过滤。
请指教。
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-09 16:18
用DriverStudio编写中间层包过滤驱动程序。
现在在OnSend中能看到,包的信息如ip类型等。但是不知怎样才能把
不要的包过滤。简单一点如所有的包都被过滤。
请指教。

不要的包将它丢掉吧!
在让函数返回
 return NDIS_STATUS_NOT_ACCEPTED
就可以了
(我没用过DriverStudio,在passthru的MPSendOnePacket()里可以这么做)
不要拒绝我... 哈!哈! 给分!
ximalaya
驱动牛犊
驱动牛犊
  • 注册日期2002-12-15
  • 最后登录2003-08-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-09 16:52
这样试了, 最后返回 NDIS_STATUS_NOT_ACCEPTED。用ping进行测试还是能ping通其他机器。
king229
驱动中牛
驱动中牛
  • 注册日期2003-04-29
  • 最后登录2012-04-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-09 17:31
ping 发送 ICMP包 你看看有没拦截
鬼啊~~~~~~~~
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-09 17:33
这样试了, 最后返回 NDIS_STATUS_NOT_ACCEPTED。用ping进行测试还是能ping通其他机器。

要拦载ICMP的。
应该行的,在我的程序里就可以,你试着把所有的包都丢,看看还行不行。
不要拒绝我... 哈!哈! 给分!
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-09 17:40
ping 发送 ICMP包 你看看有没拦截

你可以在程序里这么判断是否不ICMP包
if(p_ip->H_frame_type == 8 && p_ip->L_frame_type == 0 && p_ip->proto == 1)
满足这一条件为ICMP包.

其中p_ip为P_IP_PACKET

typedef struct _IP_PACKET
{
// Ethernet
unsigned char  targ_hw_addr[6]; // 目的地址,6字节。
unsigned char  src_hw_addr[6]; // 源地址,6字节。
unsigned char  H_frame_type;
unsigned char  L_frame_type;
// IP
unsigned char h_verlen;           //4位首部长度,4位IP版本号
unsigned char tos;                //8位服务类型TOS
unsigned short total_len;         //16位总长度(字节)
unsigned short ident;             //16位标识
unsigned short frag_and_flags;    //3位标志位和13位偏移
unsigned char  ttl;               //8位生存时间 TTL
unsigned char proto;              //8位协议 (1->ICMP, 2->IGMP, 6->TCP, 17->UDP)
unsigned short checksum;          //16位IP首部校验和
unsigned int sourceIP;            //32位源IP地址
unsigned int destIP;              //32位目的IP地址
}IP_PACKET, *P_IP_PACKET;

这是我程序里定义的ip包头结构, 我也是参考别人的代码,给你作为参考吧!

不要拒绝我... 哈!哈! 给分!
baoyibao99
禁止发言
禁止发言
  • 注册日期2003-05-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分894分
  • 威望8415点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-09 20:02
用户被禁言,该主题自动屏蔽!
游客

返回顶部