guitar_string
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2004-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1735回复:8

两个经典问题(Wingate的transparent redirection技术)!

楼主#
更多 发布于:2003-07-04 18:27
1、如何在IP层获得本机的IP地址?(这里当然是指哪个函数能读到本地IP,而不是指从本地发出的IP包中截取源IP!)

2、TCP的三次握手连接中,接收IP包方对IP包中的源IP地址的利用情况。例如,A、B建立TCP连接的三次握手,如果A发往B的第二次握手的IP包头中的源IP地址被修改(当然checksum也有相应的改变),B是否会抛弃该IP包?念书时,记得老师好像说过,三次握手的交互中,源和目的的IP地址在回复时被交换。因此,如果修改源IP,将会出错。(这个问题源于Wingate的transparent redirection技术和proxy技术,望高手留意)

谢谢!

[编辑 -  7/8/03 by  guitar_string]

最新喜欢:

baoyibao99baoyib...
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-05 08:42
1、如何在IP层获得本机的IP地址?
NDIS有标准函数,但现在我不记得的
2.更改了有什么关系,你再算一下checksum不就可以!,要不NAT怎么实现呢。

 :D你改我也改

[编辑 -  7/9/03 by  antspower]
放弃瘟草,现吃李草
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-07-07 11:29
hei :D
琢磨悟真知
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-09 00:20
读取注册表是一个方法
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-07-09 11:29
对于问题1,我是用读注册表的方法实现的,在驱动加载的时候调用。 :)
good good study, day day up。
guitar_string
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2004-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-10 09:08
能否说得详细点
对于你提到的这点,我有一个疑问:
在IP层能用到windows API ??API属于核心调用吗?
当用户更改本机IP地址后,如何让我编写的驱动知道?

恭候指导!
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-10 21:58
 这是内核访问注册标的例子
NDIS_STRING tcpLinkageKeyName = NDIS_STRING_CONST(\"\\\\Registry\\\\Machine\\\\System\\\\CurrentControlSet\\\\Services\\\\Tcpip\\\\Linkage\");
InitializeObjectAttributes(&objAttrs, &tcpLinkageKeyName,
                             OBJ_CASE_INSENSITIVE, NULL, NULL);
  status = ZwOpenKey(&keyHandle, KEY_READ, &objAttrs);
  if (!NT_SUCCESS(status))
  {
    DbgPrint(\"\\n\\nStatus of %x opening %ws\\n\", status,        tcpLinkageKeyName.Buffer);
  }
  else
  {
    ULONG resultLength;
    KEY_VALUE_PARTIAL_INFORMATION valueInfo;
    status = ZwQueryValueKey(keyHandle, &bindValueName,
KeyValuePartialInformation, &valueInfo,
(valueInfo), &resultLength);
}
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-10 22:01
对于问题2,如果改变了,可能是由问题的,
但是,如果,在建立握手前,(也就是第一次握手前)就已经改变了,这样3次握手可以保证同业,nat实际上在建立握手前就已经改变了源ip了,所以,不存在在握手过程中ip变动
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
guitar_string
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2004-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-11 10:36
老大,怎么编译了一大堆错误。
下面是DDK中的一句话:
Callers of InitializeObjectAttributes must be running at IRQL PASSIVE_LEVEL.

我的驱动程序要加在例如xpassthru的recv.c文件里,这好像不是passive_level吧。

继续关注!!
游客

返回顶部