结论:不同系统采用不同的措施
|
HW ADDR
|
WINDOWS 9x/ME
|
WINDOWS 2K/NT4
|
LINUX2.2/2.4
|
|||
|
|
PROMIS
|
|
PROMIS
|
|
PROMIS
|
|
|
FF:FF:FF:FF:FF:FF
|
RES
|
RES
|
RES
|
RES
|
RES
|
RES
|
|
FF:FF:FF:FF:FF:FE
|
-
|
RES
|
-
|
RES
|
-
|
RES
|
|
FF:FF:
|
-
|
RES
|
-
|
RES
|
-
|
RES
|
|
FF:
|
-
|
RES
|
-
|
-
|
-
|
RES
|
|
|
-
|
-
|
-
|
-
|
-
|
RES
|
|
:5E:
|
-
|
-
|
-
|
-
|
-
|
RES
|
|
:5E:
|
RES
|
RES
|
RES
|
RES
|
RES
|
RES
|
对7种地址的实验结果列在下面的表上。
这些实验结果分别是在WINDOWS 95,98,ME,2000和LINUX下得出的。正如我们前面所述的,网卡处于正常模式时,所有的系统内核都会对BROADCAST ADDRESS和MULTICAST ADDRESS 1做出响应。
但是,当网卡处于混杂模式时,根据操作系统的不同,结果也会不同。WINDOWS 95,98和ME将会对FAKE BROADCAST 31,16,和8BITS做出响应。所以,我们可以认为WINDOWS 9x的软件过滤至多只检查前8位来判别是否是广播地址。
在WINDOWS 2000下,它会对FAKE BROADCAST 31和16BITS作出响应。所以我们可以认为WINDOWS 2000的软件过滤至多只检查前16位来判别是否是广播地址。
在LINUX下,会对这七种地址的包都做出响应。换句话说,当网卡处于混杂模式时,LINUX会对这七种包做出响应。
以下的结果说明我们可以根据ARP包来判别是否有处于混杂模式的节点,而不管操作系统是WINDOWS或LINUX。从而,可以通过这样一种简单的方法用来在局域网中的检测。以下是检测过程:
1) 我们试图对装载IP协议的机器进行是否处在混杂模式的检测。我们构建这样一个ARP包:
|
Ethernet address of destination
|
FF:FF:FF:FF:FF:FE
|
|
Ethernet address of sender
|
<Own NIC’s Device address>
|
|
Protocol type (ARP=0806)
|
0806
|
|
Hardware address space (Ethernet=01)
|
0001
|
|
Protocol address space (IPv4=0800)
|
0800
|
|
Byte length of Hardware address
|
06
|
|
Byte length of protocol address
|
04
|
|
Opcode (ARP request=01,ARP reply=02)
|
0001
|
|
Hardware address of sender of this packet
|
<Own NIC’s Device address>
|
|
Protocol address of sender of this packet
|
<Own NIC’s IP address>
|
|
Hardware address of target of this packet
|
|
|
Protocol address of target of this packet
|
<IP Address>(address want to be checked)
|
2) 在我们构建完这种包后,我们把它发送到局域网上
3) 在正常情况下,这个包将会被硬件过滤拒绝。但是,如果这台机器处在混杂模式,它将会对这个包做出响应。如果我们接收到响应,那么这台机器处在混杂模式。
为了检测混杂模式,我们可利用在7提到的技术对局域网上所有的机器按序进行。如果有些机器不能收到ARP包,那么将不能利用这种方法。