XP SP2对raw socket所做的改动

http://www.opencjk.org/~scz/windows/200609051043.txt

Q:

在XP SP2上raw socket发包,得到10004号错误:

A blocking operation was interrupted by a call to WSACancelBlockingCall.

A: microsoft

XP SP2仍支持raw socket的接收,但raw socket的发送被限制了:

1)

不能通过raw socket发送TCP报文

2)

不能通过raw socket发送伪造源IP的UDP报文。被发送UDP报文的源IP必须是本机某个
网络接口上配置的IP,否则这个UDP报文被默默丢弃。

D:

据他人说法,关闭XP SP2自带FW,同时关闭相关服务即可解决该问题。

Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)

sc stop SharedAccess

net stop SharedAccess

XP SP2上的raw socket我没试过。不过即使在XP SP1上,如果自带FW开着的话,raw
socket发包也是有影响的,所以我测试raw socket时,都先去网络属性里关闭自带FW。

D: Robin Keir <robin@keir.net> 2005-04-12

XP SP2推出时明确指出"不能通过raw socket发送TCP报文"。2005-04-12之前很容易
绕过这个限制,"net stop SharedAccess"即可。但是,安装MS05-019/KB893066之后,
这个绕过方案不再有效。

当时maillist上语带嘲讽地提到,安装过MS05-019/KB893066的2003"意外地"也不能
通过raw socket发送TCP报文,后来MS被告知这个"BUG",随即在2003 RC2中修正。

下面是一些总结:

2000的raw socket依然是全功能的。

尽管可以通过raw socket发送TCP报文,XP SP0也应该"net stop SharedAccess"。有
个Application Layer Gateway Service/ALG服务,与FW联系紧密,用raw socket向
21、389、1002、1720/TCP发包时,可能会受ALG服务的干挠。停止SharedAccess服务
时会自动停止ALG服务。

未安装MS05-019/KB893066的XP SP1情形类似XP SP0。

安装过MS05-019/KB893066的XP SP1应该关闭FW(在本地连接的属性里),但不要停止
SharedAccess服务,通过raw socket发送TCP报文时需要SharedAccess服务。ALG服务
可能会干挠发向某些端口的报文,由于SharedAccess服务依赖ALG服务,这次没法停
止ALG服务。XP SP1缺省没有打开FW,SharedAccess服务也未启用。

未安装MS05-019/KB893066的XP SP2应该"net stop SharedAccess"。但这不能解决并
发半开出连接数的限制,惟一已知解决方案是修理tcpip.sys。

安装过MS05-019/KB893066的XP SP2彻底禁止通过raw socket发送TCP报文,无论是否
启用SharedAccess服务。

2003情形类似XP SP0。但是这次ALG服务与SharedAccess服务不再有依赖关系,因此
可以"net stop ALG"。注意,这里说的2003,至少是2003 RC2及其后续版本,或者未
安装MS05-019/KB893066(MS有一个看似无意鬼知道是不是有意的BUG在这个Hotfix里)
的所有版本。

D: scz@nsfocus 2006-09-05

今天亲自在一台打满了最新补丁的英文版XP SP2上测试,证实前述关闭FW的解决方案
不再有效。

此刻tcpip.sys版本号是5.1.2600.2892,ipnathlp.dll版本号是5.1.2600.2180。如
下三个补丁都修改了tcpip.sys:

MS05-019/KB893066
MS06-007/KB913446
MS06-032/KB917953

如果试图卸载MS05-019/KB893066恢复通过raw socket发送TCP报文的能力,势必同时
卸载后续两个补丁,这不是一个好主意。

可以考虑动用NDIS Protocol Driver,比如:

Raw Ethernet Packet Sending - miahrugger [2003-10-25]
http://www.codeproject.com/cs/internet/sendrawpacket.asp
http://www.codeproject.com/cs/internet/SendRawPacket/SendRawPacket.zip

也可以考虑剁了tcpip.sys、ipnathlp.dll(不推荐)。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值