Ralfy
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2013-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2226回复:16

[求助]费尔防火墙中如何取得包内容??

楼主#
更多 发布于:2003-02-25 10:00
在费尔防火墙2.0中,防火墙通过Hook后使用
XF_Receive(
    IN NDIS_HANDLE NdisBindingContext,
    IN NDIS_HANDLE MacReceiveContext,
    IN PVOID HeaderBuffer,
    IN UINT HeaderBufferSize,
    IN PVOID LookAheadBuffer,
    IN UINT LookaheadBufferSize,
    IN UINT PacketSize
)
来接管数据包接收,使用NDIS_STATUS NDIS_API
XF_SendPacket(
    IN NDIS_HANDLE MacBindingHandle,
    IN PNDIS_PACKET Packet
)
来接管数据包发送.
在程序中只访问了包头,我看了RFC793,包内容应该就在包头后,可我用softice在Http包到达时激活断点,能访问包头,却看不到包的内容.
请问该如何访问包的内容??

最新喜欢:

zackaryzackar...
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-25 10:04
在LookAheadBuffer中,更多的内容去看ddk里面ndis部分的文档
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
Ralfy
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2013-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-25 10:16
LookAheadBuffer的内存地址我也看了,都是二进制的,我想得到Http的请求,应该是明显示的纯文本的.
Ralfy
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2013-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-25 10:19
而且LookAheadBuffer其实是HeaderBuffer偏移几个字节.
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-25 10:19
每个IP包的内容都在那里了,用softice看到的当然是二进制的内容。还有,你怎么知道过来的一个包是http的包?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
Ralfy
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2013-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-25 10:34
每个IP包的内容都在那里了,用softice看到的当然是二进制的内容。

softice分两部分显示,一边显示的是16进制数,一边显示的是字符.过会我可以将内容贴出来.

还有,你怎么知道过来的一个包是http的包?

我从另一台机上(IP已知)发数据包,接到包时判断一下源IP和端口,就知道了.
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-02-26 08:03
在费尔防火墙2.0中,防火墙通过Hook后使用
XF_Receive(
    IN NDIS_HANDLE NdisBindingContext,
    IN NDIS_HANDLE MacReceiveContext,
    IN PVOID HeaderBuffer,
    IN UINT HeaderBufferSize,
    IN PVOID LookAheadBuffer,
    IN UINT LookaheadBufferSize,
    IN UINT PacketSize
)
来接管数据包接收,使用NDIS_STATUS NDIS_API
XF_SendPacket(
    IN NDIS_HANDLE MacBindingHandle,
    IN PNDIS_PACKET Packet
)
来接管数据包发送.
在程序中只访问了包头,我看了RFC793,包内容应该就在包头后,可我用softice在Http包到达时激活断点,能访问包头,却看不到包的内容.
请问该如何访问包的内容??
 


用NdisQueryPacket( );
然后NdisQueryBuffer( )
再NdisMoveMemory(  );
再NdisGetNextBuffer( );
最后dbgprint(pData);
就可以将包的内容hook出来了.


知之为知之,不知为不知 有错则改之
cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-02-26 13:15
XF_RECEIVE只能接受小于128字节以内的数据,大于128个字节的数据会走TransferData函数,而费尔并没有HOOK到TransferData函数,会不会HTTP的请求走了这个函数....你自己可以试试... :D
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-02-26 13:24
怎么只能接收小于128的数据???ndistrasferdata还不是在receive里面调用么?不知道xf是怎么做的
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
Ralfy
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2013-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-02-26 17:02
用NdisQueryPacket( );
然后NdisQueryBuffer( )
再NdisMoveMemory(  );
再NdisGetNextBuffer( );
最后dbgprint(pData);
就可以将包的内容hook出来了.

感谢回复, 正在偿试...

怎么只能接收小于128的数据???ndistrasferdata还不是在receive里面调用么?不知道xf是怎么做的

费尔防火墙2.0只是根据包头作过滤条件, 主要是IP和Port,并没有访问到包的内容.
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-02-26 17:10
那也不会存在只能接收128字节的问题,既然他用的是hook_device_service的方式,你的这个receive和hook之前协议的receive受到的是一样的东西。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-02-26 17:18
怎么只能接收小于128的数据???ndistrasferdata还不是在receive里面调用么?不知道xf是怎么做的


真的。。我已经试过了。。。。receive的确还是走。。。不过ndistrasferdata是绝对没有调用的。。我已经用PING试过了。。。
而且。。。当大于128时trasferdata函数就会自动调用了。。。。。 :cool:
mailporn
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2008-10-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望20点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-03-10 12:53
哪里有费尔防火墙2.0的源程序下载呀?!
海人
haiwei
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2003-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-03-21 10:29
我也要,能给我一份马?谢谢
good
mingyulantian
驱动牛犊
驱动牛犊
  • 注册日期2002-11-26
  • 最后登录2006-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-03-21 14:56
好象在这个网站上有吧,自己去找找,别偷懒
wfeiisch
驱动牛犊
驱动牛犊
  • 注册日期2002-10-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-03-24 14:55
本站只有1。0版的,2.0的版本谁有啊?共享一下,大家一起学习学习NDIS的开发!!
daviswjk
驱动牛犊
驱动牛犊
  • 注册日期2003-03-26
  • 最后登录2009-06-12
  • 粉丝0
  • 关注0
  • 积分334分
  • 威望64点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-03-27 02:29
2.0 都是要钱的吧

一切随风!
游客

返回顶部