huyugui
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1356回复:6

为什么pathru的ip包和iris拦截的ip包不同呀

楼主#
更多 发布于:2003-08-22 17:38
我在pathruj里面把QQ的连接数据包打印出来如下,
ffffffffffff0e04f3925d98045004e07f0080114ed6d223a33d223a3ff08908903a1223a33d223a3ff08908903a1d5e804811223a33d223a3ff08908903a1d5e80481100100000020464a4550464646434341454f4542454e45464341434143414341434143414141002001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
我不明白为什么开台前面会有那么多ff?在那些ff后是ip数据,但是与iris拦截的ip包相比较,就算把它转换为主机顺序,也与iris拦截的不同, 如果我以后要想对IP包进行处理,那怎么才能得到正确的IP数据?
在pathru中MPSendPackets的打印代码如下(代码是一位前辈的,我想应该不会错)
   //---------------------------------------------------------
        int        PacketSize;
    PUCHAR        pPacketContent;
    PUCHAR        pBuf;
    UINT         BufLength;
    MDL    *     pNext;
IN NDIS_PHYSICAL_ADDRESS HighestAcceptableMax;

    UINT         i;
    
    //把数据包内容从Packet拷贝到pPacketContent
DbgPrint(\"ndis51 in SendPackets\");
HighestAcceptableMax.HighPart = 0;
HighestAcceptableMax.LowPart = -1;
    NdisQueryPacket( Packet,NULL,NULL,NULL,&PacketSize);
    
    Status= NdisAllocateMemory( &pPacketContent, 2000, 0,HighestAcceptableMax);
    if (Status!=NDIS_STATUS_SUCCESS ) return ;
    NdisZeroMemory (pPacketContent, 2000);
    
    NdisQueryBufferSafe(Packet->Private.Head, &pBuf, &BufLength, 32 );
    NdisMoveMemory(pPacketContent, pBuf, BufLength);

    i = BufLength;
    pNext = Packet->Private.Head;
    
    for(;;)
    {
        if(pNext == Packet->Private.Tail)
            break;
            pNext = pNext->Next;   //指针后移
            if(pNext == NULL)
                break;

            NdisQueryBufferSafe(pNext,&pBuf,&BufLength,32);
            NdisMoveMemory(pPacketContent+i,pBuf,BufLength);
            i+=BufLength;
    }
  //
 //---------------------------------------------------------
        //打印udp包,我专门对qq的连接数据包进行了试验
        if(((char *)pPacketContent)[12] == 8 &&
            ((char *)pPacketContent)[13] == 0 &&
                ((char *)pPacketContent)[23] == 17)
        {
            DbgPrint(\"UDP被拦截!\\n\");
           for(i=0;i<2000;i++)
DbgPrint(\"%x\",pPacketContent);
            return ;
        }
  NdisFreeMemory(pPacketContent, 2000, 0);
bluetiger
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2010-09-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望100点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-25 15:20
----------------------------------------------------
以 太 网|  IP首部 | TCP/UDP | 应用协议(FTP/HTTP...)|
首部(14)|  (20)   |  首部   |     或数据           |
----------------------------------------------------
ringle
驱动牛犊
驱动牛犊
  • 注册日期2003-08-14
  • 最后登录2003-10-17
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-25 16:50
楼上的说得对,前面12个f,其实是6个字节0xff,是广播地址;后面6个字节是自己网卡的物理地址
Fang
驱动牛犊
驱动牛犊
  • 注册日期2001-06-12
  • 最后登录2010-08-10
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-28 14:53
最好这样:DbgPrint(\"%02x\",(unsigned char)pPacketContent);
girlscout
驱动牛犊
驱动牛犊
  • 注册日期2003-07-18
  • 最后登录2004-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-29 19:22
你的输出信息是使用什么工具看到的?我想在安装网卡服务后用dbgview观察的,安装需要的xfilter.dll文件从哪里得到? :)
谢了! :D  
girlscout
yangmin26
驱动小牛
驱动小牛
  • 注册日期2003-02-22
  • 最后登录2012-11-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-29 23:29
好好学习~~
附件名称/大小 下载次数 最后更新
2003-08-29_xfilter.dll (35KB)  1
YM KILL YOU
girlscout
驱动牛犊
驱动牛犊
  • 注册日期2003-07-18
  • 最后登录2004-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-09-09 11:29
谢谢了
girlscout
游客

返回顶部