【问题标题】:Windows Filtering Platform - where's my packet payload?Windows 过滤平台 - 我的数据包有效负载在哪里?
【发布时间】:2011-07-01 22:05:44
【问题描述】:

我一直在修改“检查”WFP 示例(与 WinDDK 捆绑),目的是能够解析所有传入 TCP 数据包(来自指定 IP 地址)的有效负载以获取某些字符串。 (我已经修改了“inspect”,使得过滤器只捕获 TCP 数据包)

到目前为止,我的修改一直在“TLInspectTransportClassify”classifyFn 上,如下所示。我的目标是访问捕获的每个 TCP 数据包的有效负载。

FWPS_STREAM_CALLOUT_IO_PACKET* ioPacket = (FWPS_STREAM_CALLOUT_IO_PACKET*)layerData;
FWPS_STREAM_DATA* streamData;
SIZE_T streamLength;
BYTE* stream = NULL;
SIZE_T bytesCopied = 0;

[...]

if(ioPacket == NULL) {
   DbgPrint("ioPacket == NULL\n");
   return STATUS_INSUFFICIENT_RESOURCES;
}
streamData = ioPacket->streamData;

if(!streamData) {     // why is this always NULL?  shouldn't our payload be here?
   DbgPrint("streamData == NULL: no data\n");   
   classifyOut->actionType = FWP_ACTION_PERMIT;
     classifyOut->rights &= ~FWPS_RIGHT_ACTION_WRITE;
     goto Exit;
}

DbgPrint("tcp packet has some data\n");

streamLength = streamData->dataLength;

stream =  ExAllocatePoolWithTag(NonPagedPool,
                               streamLength,
                               'yftN');

if (!stream)
  return STATUS_INSUFFICIENT_RESOURCES;

RtlZeroMemory(stream,streamLength);
FwpsCopyStreamDataToBuffer0(
  streamData,
  stream,
  streamLength,
  &bytesCopied);

// should now have our tcp payload in 'stream' buffer(?)

DbgPrint("reached parsing code\n");

[...]

据我了解,在如上声明 ioPacket 之后,ioPacket->streamData 应该包含数据包的有效负载。但是,ioPacket->streamData 对我来说始终为 NULL。如何获取数据包的有效负载?我是不是做错了什么。

提前致谢。

【问题讨论】:

    标签: windows filtering platform wfp


    【解决方案1】:

    'TLInspectTransportClassify' 位于 TRANSPORT_LAYER 上,其中 layerData 应转换为 NET_BUFFER_LIST

    FWPS_STREAM_CALLOUT_IO_PACKET 适用于 FWPM_LAYER_STREAM_V4/FWPM_LAYER_STREAM_V6

    参见 MSDN 分类 Fn0。 http://msdn.microsoft.com/en-us/library/ff544890(VS.85).aspx

    管理过滤层标识符 http://msdn.microsoft.com/en-us/library/ff557101(VS.85).aspx

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 2011-08-09
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2020-11-17
      相关资源
      最近更新 更多