kivakwan
驱动牛犊
驱动牛犊
  • 注册日期2009-02-01
  • 最后登录2009-04-18
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1817回复:4

求一段关于ARP报文过滤的源代码

楼主#
更多 发布于:2009-02-01 20:08

由于要写毕业论文,想写关于通过中间层驱动过滤ARP欺骗报文方面的技术.所以希望得到各位帮助,找相关的源代码或者文献来研究一下.

PS:最近工作很难找,想留多点时间找工作,论文问题希望可以得到各位指导一下,可怜一下小弟,谢谢~
qqvsdd
驱动牛犊
驱动牛犊
  • 注册日期2008-04-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-02-01 22:50
我的毕设也是arp防火墙  
没什么头绪,刚开始看ddk中passthru的源代码
希望多多交流交流  
QQ:164587043
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-02-04 11:17
使用passthru完全可以实现你的要求
分析收到的数据,如果是ARP包就过滤掉
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
eiffle
驱动牛犊
驱动牛犊
  • 注册日期2008-05-22
  • 最后登录2009-03-16
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望62点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-02-11 15:13
/*******************NdisQueryPacket**********************
    *NdisQueryPacket returns information about a given packet.
    *NdisBuffer---Pointer to a caller-supplied variable in
    *which this function returns a pointer to the initial
    *buffer descriptor chained to the given packet.
    *******************************************************/
    NdisQueryPacket(Packet,
        &PhysicalBufferCount,
        &BufferCount,
        &NdisBuffer,
        &TotalPacketLength);

    //分配我们自己的内存块
    Status = NdisAllocateMemoryWithTag(&mybuffer, 2048, TAG);

    if(Status != NDIS_STATUS_SUCCESS)
    {
        DbgPrint("NdisAllocateMemory fail!\n");
        return NDIS_STATUS_FAILURE;
    }

    NdisZeroMemory(mybuffer, 2048);

    /*************NdisQueryBufferSafe*****************
    *NdisQueryBufferSafe retrieves the size of the range,
    *and optionally the base virtual address,
    *from a buffer descriptor.
    *tembuffer---Pointer to a caller-supplied variable in
    *which this function returns the base virtual address
    *of the range described
    *************************************************/
    NdisQueryBufferSafe(NdisBuffer,
        &tembuffer,//取得NDIS_BUFFER描述符中数据的首地址和大小
        &copysize,
        NormalPagePriority);
    
    //将数据复制到我们的内存中
    NdisMoveMemory(mybuffer, tembuffer, copysize);

    DataOffset = copysize ;
    
    while(1)
    {
        //获得下一个NDIS_BUFFER的的指针
        NdisGetNextBuffer(NdisBuffer, &NdisBuffer);

        if(NdisBuffer == NULL)
            break;

        NdisQueryBufferSafe(NdisBuffer,
            &tembuffer,
            &copysize,
            NormalPagePriority);

        NdisMoveMemory(mybuffer + DataOffset, tembuffer, copysize);

        DataOffset += copysize;
    }
                    //如果不是ip包则放行
    if(RtlUshortByteSwap(myEthHdr->Type) != EthHTypeIP)
    {
        DbgPrint("Not ip packet!\n");
        goto done;
    }

    myIPHdr = (pIPHdr)(mybuffer + sizeof(EthHdr));
这是我用来过滤ip包的,不知道你们需不需要,我以前做过arp攻击检测,不过是基于ip,mac对照表的。
ssy0502
驱动牛犊
驱动牛犊
  • 注册日期2008-11-10
  • 最后登录2009-06-02
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-03-10 15:36
我毕业也是做ARP防火墙哎,哎,我现在在公司实习,根本没时间做,后天还要有个进度汇报,没搞头了
游客

返回顶部