ARP+ICMP请求和回复信息Word下载.docx

上传人:b****6 文档编号:19087647 上传时间:2023-01-03 格式:DOCX 页数:15 大小:107.91KB
下载 相关 举报
ARP+ICMP请求和回复信息Word下载.docx_第1页
第1页 / 共15页
ARP+ICMP请求和回复信息Word下载.docx_第2页
第2页 / 共15页
ARP+ICMP请求和回复信息Word下载.docx_第3页
第3页 / 共15页
ARP+ICMP请求和回复信息Word下载.docx_第4页
第4页 / 共15页
ARP+ICMP请求和回复信息Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

ARP+ICMP请求和回复信息Word下载.docx

《ARP+ICMP请求和回复信息Word下载.docx》由会员分享,可在线阅读,更多相关《ARP+ICMP请求和回复信息Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

ARP+ICMP请求和回复信息Word下载.docx

目标MAC地址"

字段到"

数据"

字段的数据进行校验。

接下来是ARP协议报文部分。

其中各个字段的含义如下:

硬件类型:

表明ARP实现在何种类型的网络上。

协议类型:

代表解析协议(上层协议)。

这里,一般是0800,即IP。

硬件地址长度:

MAC地址长度,此处为6个字节。

协议地址长度:

IP地址长度,此处为4个字节。

操作类型:

代表ARP数据包类型。

0表示ARP请求数据包,1表示ARP应答数据包。

源MAC地址:

发送端MAC地址。

源IP地址:

代表发送端协议地址(IP地址)。

目标MAC地址:

目的端MAC地址(待填充)。

目标IP地址:

代表目的端协议地址(IP地址)。

ARP应答协议报文和ARP请求协议报文类似。

不同的是,此时,以太网帧头部的目标MAC地址为发送ARP地址解析请求的主机的MAC地址,而源MAC地址为被解析的主机的MAC地址。

同时,操作类型字段为1,表示ARP应答数据包,目标MAC地址字段被填充以目标MAC地址。

////////////////////////////////////////////////////////////////////////////////

 

我也不知道怎么搞得,奇怪了,我的8019驱动为什么能收ARP,UDP包,却收不到ICMP和TCP包!

ARP已经通了,而中断对icmp(ping)和tcp(telnet)却不理?

我是用Ethereal抓的包。

各位碰到没有,帮我想想问题出在那儿了!

多谢!

同样是数据包,差距咋这么大呢!

即然能正确接收ARPUDP包,说明我的8019驱动应该是好的吧?

怎么会有这种问题?

ping172.16.4.15 

这个ip不存在,发4个ARP包,都能接收并处理;

ping17727 

17727当作主机名,发3个NBNS包,nbns是udp,能收到;

ping172.16.4.18 

8019的ip,发4个ICMP包,网卡根本不中断;

telnet172.16.4.187 

发3个TCP包,没反应:

兄弟们帮忙分析一下,想不通啊!

多谢

答2:

把驱动源代码贴出,这样才好帮你改,这样说鬼知道是什么问题

答3:

应该是软件问题,好好找找。

答4:

是skyeye杨晔的驱动驱动太长了,能把人看晕的

下面是8019中断的代码,我就在这里设断点,ARPUCP包能中断,而icmp和tcp就停不下来。

void__irq 

ne2k_isr(void)

{

u8_t 

isr,curr,bnry;

structnetif*netif;

rI_ISPC=BIT_EINT1;

//closenic

//********************addbymaokorfordebug,2005.6.17*******

outb(CMD_PAGE2|CMD_NODMA|CMD_STOP,NE_CR);

isr=inb(NE_IMR);

//*****************************************************888888

//inPAGE0

outb(CMD_PAGE0|CMD_NODMA|CMD_STOP,NE_CR);

isr=inb(NE_ISR);

//ramoverflowinterrupt

if(isr&

ISR_OVW){

outb(ISR_OVW,NE_ISR);

//clearinterrupt

// 

ne2k_overflowProcess();

//yangye:

nooverflownow

}

//errortransferinterrupt,NICaborttxduetoexcessivecollisions 

ISR_TXE){

outb(ISR_TXE,NE_ISR);

//temporarilydonothing

//Rxerror,resetBNRYpointertoCURR(useSENDPACKETmode)

ISR_RXE){

outb(ISR_RXE,NE_ISR);

outb(CMD_PAGE1|CMD_NODMA|CMD_STOP,NE_CR);

curr=inb(NE_CURR);

outb(curr,NE_BNRY);

//gotpacketwithnoerrors

ISR_PRX){

outb(ISR_PRX,NE_ISR);

outb(CMD_PAGE1|CMD_NODMA|CMD_STOP,NE_CR);

curr 

inb(NE_CURR);

outb(CMD_PAGE0|CMD_NODMA|CMD_STOP,NE_CR);

bnry=inb(NE_BNRY);

//yangye2003-1-21

//getmorethanonepacketuntilreceivebufferisempty

while(curr!

=bnry){

ne2k_recv_packet(rtl8019if_netif);

curr= 

bnry= 

inb(NE_BNRY);

//Transfercomplelte,donothinghere

if(isr&

ISR_PTX){

PRINT("

ne2k_isr:

isISR_PTX\n"

);

outb(ISR_PTX,NE_ISR);

outb(0xff,NE_ISR);

//clearISR 

//opennicfornextpacket

outb(CMD_PAGE0|CMD_NODMA|CMD_RUN,NE_CR);

答5:

8019有bug,千万要注意可以参考linux下的驱动,那个是修正bug的,千万不要用没有经过实践验证的代码。

答6:

啊!

多谢各位回复!

wangkj:

8019有bug?

能具体说说吗,skyeye的驱动好像也有人移植成功过!

答7:

可能是mac地址不对我对比了一下,发现这几种包的区别是目的mac不同,arp是广播的就能受到。

难道是网卡的mac设置不对?

8019发送的arp回复包中的mac地址是直接读寄存器的还是程序设置的?

怎么会错呢?

我把arp包贴出来,兄弟们帮我分析一下,另外这个包有校验错误(incorrect,shouldbe0xaf8108fa)不知哪里错了?

No. 

Time 

Source 

Destination 

ProtocolInfo

651436.86735325:

01:

ea:

5d:

00 

172.16.4.10 

ARP 

172.16.4.18isat25:

00

Frame65(64bytesonwire,64bytescaptured)

EthernetII,Src:

25:

00,Dst:

05:

02:

14:

db

Destination:

db(172.16.4.10)

Source:

00(25:

00)

Type:

ARP(0x0806)

Trailer:

000000000000000000000000000000000000

Framechecksequence:

0xc4be25b7(incorrect,shouldbe0xaf8108fa)

AddressResolutionProtocol(reply)

Hardwaretype:

Ethernet(0x0001)

Protocoltype:

IP(0x0800)

Hardwaresize:

6

Protocolsize:

4

Opcode:

reply(0x0002)

SenderMACaddress:

SenderIPaddress:

172.16.4.18(172.16.4.18)

TargetMACaddress:

TargetIPaddress:

172.16.4.10(172.16.4.10)

答8:

发现mac地址没有正确保存,才错误发现个问题,帮我看看!

structRTL8019if{

structeth_addr*ethaddr;

};

packedstructeth_addr{

u8_taddr[6];

}PACK_STRUCT_STRUCT;

staticvoid

low_level_init(structnetif*netif)

u8_ti,isr;

structRTL8019if*rtl8019if,rtl8019;

u8_tmac_addr[6];

mac_addr[0]=inb(NE_PAR0);

mac_addr[1]=inb(NE_PAR1);

mac_addr[2]=inb(NE_PAR2);

mac_addr[3]=inb(NE_PAR3);

mac_addr[4]=inb(NE_PAR4);

mac_addr[5]=inb(NE_PAR5);

/*makeupanaddress.*/

rtl8019if->

ethaddr->

addr[0]=mac_addr[0];

addr[1]=mac_addr[1];

addr[2]=mac_addr[2];

addr[3]=mac_addr[3];

addr[4]=mac_addr[4];

addr[5]=mac_addr[5];

rtl8019=*rtl8019if;

mac_addr数组读值正确,但是赋值给rtl8019if->

addr时没有成功,sdt中查看变量rtl8019值,只能看到->

ethaddr是0x00000000。

是数据结构packed的问题吗?

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

这时候的网络充满了ARP请求数据和ARP响应数据,这些数据占用了很大的网络带宽,降低了网络的流量和利用率,不管你是通过Capture获取数据的方式来分析或者利用EtherPeekNX的协议类型数据分析或者流量分析都可以看出。

接下来就进行NetRobocop的限制权限功能,看看它到底是怎样限制网络上用户的连网的。

在计算机C上对计算机B进行限制,禁止它和其它主机相连。

这时候查看计算机A和计算机B的ARP缓存表可以看出来它把各自计算机的ARP缓存表中计算机A和计算机B的MAC地址(下面框出来的部分)给换掉了。

计算机A上C:

\WINDOWS\Desktop>

arp-a

Interface:

192.168.11.1onInterface0x1000002

InternetAddressPhysicalAddressType

192.168.11.200-e0-4c-02-88-24dynamic

192.168.11.300-e0-4c-3c-05-20dynamic

计算机B上C:

192.168.11.2onInterface0x1000002

192.168.11.100-e0-4c-05-77-76dynamic

其实这就是一个ARP欺骗。

这时候如果计算机B有发送到IP为192.168.11.1的计算机A的数据通过查找ARP缓存表就转换成其它的MAC地址,数据到达计算机A后它通过对照MAC地址,发现不是自己的MAC地址就丢弃这个数据,计算机A就收不到计算机B发来的数据,也就是计算机B不能连通计算机A。

但是计算机C为了还能控制计算机B,它不修改自己的MAC地址,保持着和计算机B的通信。

实现这个ARP欺骗的过程通过EtherPeekNX的数据截取和分析可以看出它采用的也是ARP响应数据。

ARP协议并不只在发送了ARP请求数据才接收ARP响应数据。

当计算机接收到ARP响应数据的时候,就会对本地的ARP缓存表进行更新,将ARP响应中的IP地址和MAC地址存储在ARP缓存表中。

这个ARP欺骗的ARP响应数据其实就是计算机C借用了计算机A的IP地址向计算机B发送了一个随机伪造的MAC地址,它的数据包如下:

Flags:

0x00

Status:

PacketLength:

64

Timestamp:

11:

04:

08.31800009/25/2003

EthernetHeader

Destination:

E0:

4C:

3B:

F0:

46

Source:

77:

76/伪造的MAC地址

ProtocolType:

0x0806IPARP

ARP-AddressResolutionProtocol

Hardware:

1Ethernet(10Mb)

Protocol:

0x0800IP

HardwareAddressLength:

6

ProtocolAddressLength:

4

Operation:

2ARPResponse

SenderHardwareAddress:

SenderInternetAddress:

192.168.11.1/伪造的计算机A的IP地址

TargetHardwareAddress:

TargetInternetAddress:

192.168.11.2

Extrabytes

Numberofbytes:

20202020202020202020202020202020

2020

FCS-FrameCheckSequence

FCS(Calculated):

0xC3277168

ARP缓存表是动态更新的,如果只发送一个这样的带ARP欺骗的ARP响应数据,在经过一段时候没有通信后它就会从ARP缓存表中删除,下次再有连接的话就再进行ARP请求和ARP响应,更新成正确的MAC地址。

为了防止ARP缓存更新,NetRobocop在一直不停地给计算机B发送这个带ARP欺骗的ARP响应数据。

同时它也一直不停的向计算机A发送带ARP欺骗的ARP响应数据,这样就可以完全阻止计算机A和计算机B的双方的通信。

如果发送方和接收方的IP地址一样会怎样呢?

也就是我们经常见到的IP地址冲突警告,NetRobocop就是利用它来产生IP地址冲突的。

计算机C发给计算机A的IP冲突的ARP响应数据如下:

0x01

06:

29.84100009/25/2003

3C:

0F:

14

78:

84:

6B/伪造的MAC地址

2ARPResponse

192.168.11.1/伪造的和接收方相同的IP地址

192.168.11.1

................00000000000000000000000000000000

..0000

0xFE9194DA

这样,计算机A在收到这个带IP冲突的ARP响应数据后,网卡在检测到发送方和接收方使用了相同的IP地址,就会产生一个IP地址冲突中断,CPU接收中断后就弹出一个警告窗口。

这个带IP冲突的ARP响应数据也是在一直不停地发送的,所以计算机A就一直收到这个IP冲突警告。

五、EtherPeekNX对NetRobocop的解决方法

通过对NetRobocop数据的截取和分析,了解了NetRobocop这个网络软件的基本原理。

一旦这个软件被非法使用,某些用户可能被非法限制权限后就很难摆脱它的控制,而且它是利用网络的底层功能ARP欺骗来实现控制,没有什么现成的工具和软件来阻止这种限制,除非它对你取消限制权限才有可能正常连网使用。

那我们对这种限制是否就束手无策了呢?

答案当然是否定的,其实我们可以用NetRobocop的ARP欺骗原理来进行反击,摆脱它的控制,保持网络的正常状态。

当然在这种情况下,网络上就会充满了这些ARP的数据包,占用很大的网络流量,影响正常的网络使用。

使用的方法可以这样来实现,因为一旦受到NetRobocop的限制,你已经没办法和其他计算机进行通信,但控制你的那台计算机还可以和你通信,我们就是利用它的这个线索找到控制你的计算机,通过EtherPeekNX的Capture功能就可以发现,找出它的IP地址和MAC地址,然后通过EtherPeekNX的发送数据功能给它也发送带ARP欺骗的ARP响应数据,让它断开和其他计算机的连接,从而摆脱它的控制。

六、结束语

如EtherPeekNX和NetRobocop这些网络工具可以被网管人员用于加强安全性

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1