xujianxjxujian
驱动牛犊
驱动牛犊
  • 注册日期2002-05-01
  • 最后登录2002-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1941回复:11

(急!)请高手指点:两块网卡,过滤指定网卡的包,在passthru里怎么修改?

楼主#
更多 发布于:2002-05-04 19:03
请教各位高手:
经过几天的苦读,对在passthru里面修改来过滤包,终于有点眉目了。但是,我机器上有两块网卡:一块做ADSL上网用;一块连在寝室里的局域网上面。假设我要过滤其中一块网卡上收到的包。我应该怎么样做呢?
谢谢!

最新喜欢:

jzyhummeljzyhum...
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-05 14:48
其实你说的就是NAT,找找相关资料吧。
对于NAT我也正在实现,写了一大半代码了,但是现在突然缺乏激情了。总觉得或许爱干点别的什么。再说,NAT不是一两句话可以说清的,你必须要精通TCP/IP协议,能截包只是里面的一个很少量的问题
得到数据包后,你要判断是否是本机数据包,是就算了,否则你就要从另一个网卡发送出去。理论上就这么简单,但实现起来就麻烦了。
劝你还是好好看看TCP/IP吧!其实对于一个做网络系统扩展和网络安全的人来说会截包是必须的,可以说是最基本的技术要求,包都截不了,你还要干啥?最主要的还在于对TCP/IP的认识,了解。理清他的脉络!最好看看清华出的一本书,主要是讲的TCP/IP的软件实现,对TCP/IP软件进行了详细的分析,挺不错的!祝你好运!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-05 14:54
书名是??
按第一贴的“给分”键,给分。
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-05 15:01
用TCP/IP进行网际互连2―实现》记不清,大体是。
是个一本国外教材,我们学院图书馆有!所以记不住书名了。
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-05 20:33
一套三本,挂着谢希仁的名字的是吗?我记得那是好象是电子工业出的,98年板的好象是。现在早出新版了吧。那书确实不错。
按第一贴的“给分”键,给分。
zgqzxr
驱动牛犊
驱动牛犊
  • 注册日期2002-05-20
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-22 16:33
机械工业出的,三卷中第二卷
洪武沿门托钵日,淮阴胯下受辱时; 贫贱不改四海志,二十年后知雄雌。 ――毕业留题
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-22 18:15
引用:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
请教各位高手:
经过几天的苦读,对在passthru里面修改来过滤包,终于有点眉目了。但是,我机器上有两块网卡:一块做ADSL上网用;一块连在寝室里的局域网上面。假设我要过滤其中一块网卡上收到的包。我应该怎么样做呢?
谢谢!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    很简单的,在ProtocolReceive或ProtocolReceivePacket函数中有一个句柄,表示是哪个网卡的句柄,通过该句柄就可以实现有选择的过滤了
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-22 18:43
怎么知道哪个句柄是哪儿网卡的??
就是哪个IP地址的??
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-23 18:42
关注
111
xujianxjxujian
驱动牛犊
驱动牛犊
  • 注册日期2002-05-01
  • 最后登录2002-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-24 14:25
谢谢各位大侠们!
最近一直忙着毕业设计,所以很少来这里了。
我后来用Bound ID 实现了两块网卡的区分。但这是passthru里面现成的。我想我还是应该静下心来,好好的看看TCP/IP。
谢谢各位的指点!
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-24 21:21
具体说说看,偶正好没看过那部分的东东(LBFO)
111
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-24 21:51
小问题嘛~~既然SIRROOM了,我也来凑个热闹!首先我要批评~~~因为又是一个看例子没看全的家伙~~光看PASSTHRU不看PACKET就想写包过滤了??PACKET里面又许多宝哩!在BINDADAPT函数的传入参数有一个的名字叫IN PNDIS_STRING  DeviceName的,这个东西是干什么的??看PACKET的例子里面是怎么用的没有??再看看这个:VOID
  NdisMIndicateReceivePacket(
    IN NDIS_HANDLE  MiniportAdapterHandle,
    IN PPNDIS_PACKET  ReceivePackets,
    IN UINT  NumberOfPackets
    );
第一个参数是什么???用的是MINIPORT的HANDLE!明白了??PACKET里面为什么不用这个函数??首先是因为它没有上层协议它在协议层嘛!所以没这个需要,再就是它没有MINIPORT层啊~~当然也就没MINIPORTINITIAL函数!自然也就没人调用NdisMSetAttributes或NdisMSetAttributesEx来生成这个句柄啦!那当然又就根本不困难又条件调用啦!VOID
  NdisMSetAttributesEx(
    IN NDIS_HANDLE MiniportAdapterHandle,
    IN NDIS_HANDLE MiniportAdapterContext,
    IN UINT  CheckForHangTimeInSeconds  OPTIONAL,
    IN ULONG  AttributeFlags,
    IN NDIS_INTERFACE_TYPE AdapterType
    );
看看第一个参数!明白了?我们在看SEND的!
VOID
  NdisSend(
    OUT PNDIS_STATUS  Status,
    IN NDIS_HANDLE  NdisBindingHandle,
    IN PNDIS_PACKET  Packet
    );
看第二个函数!IN NDIS_HANDLE  NdisBindingHandle这个是什么??看看这个
VOID
  NdisOpenAdapter(
    OUT PNDIS_STATUS  Status,
    OUT PNDIS_STATUS  OpenErrorStatus,
    OUT PNDIS_HANDLE  NdisBindingHandle,
    OUT PUINT  SelectedMediumIndex,
    IN PNDIS_MEDIUM  MediumArray,
    IN UINT  MediumArraySize,
    IN NDIS_HANDLE  NdisProtocolHandle,
    IN NDIS_HANDLE  ProtocolBindingContext,
    IN PNDIS_STRING  AdapterName,
    IN UINT  OpenOptions,
    IN PSTRING  AddressingInformation  OPTIONAL,
    );
第三个参数是什么??所以说你看代码都没看仔细!为什么PACKET的PACKETWRITE函数里面可以直接SEND一个PACKET出去?就因为它有下层,所以有这个必要!也因为它有PROTOCOL函数,所以也会在PACKETBINDADAPT里面调用NdisOpenAdapter函数!所以也又这个句柄有这个可能! 既然说到这就顺便告诉你们ADAPT怎么来的吧~~IN NDIS_HANDLE  ProtocolBindingContext这个东西看到没有??回去看看代码!再看看DDK里面是怎么说的!其实学NDIS并不难,不过是看书和看例子不仔细罢了!至于怎么过滤某个网卡上的包的问题我就不回答了!如果看到这里还不会的话你也可以去歇菜了!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
游客

返回顶部