zoukankan      html  css  js  c++  java
  • 内核中设置混杂模式(NDIS_PACKET_TYPE_PROMISCUOUS)

    在passthru中

    MPSetInformation添加以下代码

    if( Oid == OID_GEN_CURRENT_PACKET_FILTER && InformationBufferLength >= sizeof(ULONG) )
      {

                。。。。。。。

         *(ULONG*)InformationBuffer |= NDIS_PACKET_TYPE_PROMISCUOUS;       

                。。。。。。。。。

       }

    。。。。。。。。。。。。。

    NdisRequest(&Status,
         pAdapt->BindingHandle,
         &pAdapt->Request);

    以上为简便做法

    下面是用ioctrl来设置

    //设置为混杂模式
        RtlZeroMemory(&pAdapt->Request, sizeof(NDIS_REQUEST));
        pAdapt->PACKET_FILTER=NDIS_PACKET_TYPE_PROMISCUOUS | NDIS_PACKET_TYPE_DIRECTED |NDIS_PACKET_TYPE_MULTICAST |NDIS_PACKET_TYPE_BROADCAST;
        pAdapt->Request.RequestType=NdisRequestSetInformation;//设置请求命令
        pAdapt->Request.DATA.SET_INFORMATION.Oid = OID_GEN_CURRENT_PACKET_FILTER;
        pAdapt->Request.DATA.SET_INFORMATION.InformationBuffer = &pAdapt->PACKET_FILTER;
        pAdapt->Request.DATA.SET_INFORMATION.InformationBufferLength = sizeof(pAdapt->PACKET_FILTER);
        
        NdisRequest(&status,pAdapt->BindingHandle,&pAdapt->Request);//发送请求  

  • 相关阅读:
    Linux学习之路——ls命令及文件权限
    解析规范格式的日志文件至List中
    Flask
    GIT和github
    常见的面试题
    python—面向对象的封装
    作业—数据类型8.20
    练习—8.17 while循环
    s7day2
    oracle 开窗分析函数和树形结构
  • 原文地址:https://www.cnblogs.com/ahuo/p/1493288.html
Copyright © 2011-2022 走看看