首页 > 编程语言 >JPCAP——JAVA中的数据链路层控制(监听原理) ARP欺骗

JPCAP——JAVA中的数据链路层控制(监听原理) ARP欺骗

时间:2023-04-20 12:05:51浏览次数:34  
标签:ARP 网关 JAVA 填入 IP MAC JPCAP 监听



监听原理 

  在详细说用JPCAP实现网络监听实现前,先简单介绍下监听的原理。

  局域网监听利用的是所谓的 “ARP欺骗”技术。在以前曾经一段阶段,局域网的布局是使用总线式(或集线式)结构,要到达监听只需要将网卡设定为混杂模式即可,但现在的局域网络普遍 采用的是交换式网络,所以单纯靠混杂模式来达到监听的方法已经不可行了。所以为了达到监听的目的,我们需要“欺骗”路由器、“欺骗”交换机,即“ARP欺 骗”技术。

  假设本机为A,监听目标为B。

  首先,伪造一个ARP REPLY包,数据链路层头及ARP内容部分的源MAC地址填入A的MAC地址,而源IP部分填入网关IP,目的地址填入B的MAC、IP,然后将这个包 发送给B,而B接收到这个伪造的ARP REPLY包后,由于源IP为网关IP,于是在它的ARP缓存表里刷新了一项,将(网关IP,网关MAC)刷新成(网关IP,A的MAC)。而B要访问外 部的网都需要经过网关,这时候这些要经过网关的包就通通流到A的机器上来了。

  接着,再伪造一个ARP REPLY包,数据链路层头及ARP内容部分的源MAC地址填入A的MAC地址,而源IP部分填入B的IP,目的地址填入网关MAC、IP,然后将这个包 发给网关,网关接收到这个伪造的ARP REPLY包后,由于源IP为B的IP,于是在它的ARP缓存表里刷新了一项,将(B的IP,B的MAC)刷新成(B的IP,A的MAC)。这时候外部传 给B的数据包经过网关时,就通通转发给A。

  这样还只是拦截了B的数据包而已,B并不能上网——解决方法是将接收到的包,除了目的地址部分稍做修改,其它原封不动的再转发出去,这样就达到了监听的目的——在B不知不觉中浏览了B所有的对外数据包。

标签:ARP,网关,JAVA,填入,IP,MAC,JPCAP,监听
From: https://blog.51cto.com/u_16080829/6209395

相关文章

  • 【备忘录设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介备忘录模式(MementoPattern)是一种结构型设计模式。这种模式就是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并放在外部存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。备忘录模式的角色有三个......
  • Java偏向锁实现原理(Biased Locking)
    评:阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lockrecord,markword之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(LightweightLocking)Java偏向锁(BiasedLocking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行......
  • tomcat6启动报错java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileH
    评:tomcat6启动报错在apache-tomcat-6.0.26/logs/catalina.out日志里面报错:java.lang.ClassNotFoundException:1catalina.org.apache.juli.FileHandler这个是由于apache-tomcat-6.0.26/bin/catalina.sh文件被修改过了,应该把下面的一行放在-Djava.util.logging.manager的前......
  • JavaScript增删HTML标签
    要在JavaScript中添加和删除标签,可以使用以下代码:添加标签:```javascript//创建一个新标签varnewTag=document.createElement("p");//设置标签属性和内容newTag.setAttribute("id","myTag");newTag.innerHTML="Hello,world!";//获取要添加标签的父元素varparen......
  • JavaScript内置函数
    JavaScript内置了许多常用的模块,以下是一些常用模块的列表: 1.Math:数学操作的相关函数,例如计算三角函数,指数,对数,平方根等等。 ```javascript//计算平方根Math.sqrt(16);//返回4 //计算圆的面积Math.PI*Math.pow(5,2);//返回78.53981633974483``` 2.Da......
  • JavaScript字符串的常用操作
    在JavaScript中,字符串是不可变的,也就是说,一旦创建了一个字符串,就不能直接修改其值。如果需要对字符串进行修改,则需要创建一个新的字符串。字符串的增删改查操作如下:1.字符串的增加可以使用加号运算符`+`将两个字符串连接起来,从而实现字符串的增加。```javascriptvarstr1=......
  • k8s deployment资源部署java以及skywalking agent示例
    catdeploy.ymlapiVersion:apps/v1kind:Deploymentmetadata:name:app-namenamespace:your-namespaceannotations:kubernetes.io/change-cause:2.11.0-SNAPSHOT-20230420-46#版本说明-用于回滚等labels:app:app-namespec:replicas:1sel......
  • java - 获取系统信息指令
    1.获取系统的临时文件夹地址System.getProperty("java.io.tmpdir")打印结果C:\Users\cenxi\AppData\Local\Temp\ 2.获取java项目的根文件夹上一级文件夹地址System.getProperty("user.dir")打印结果D:\xxxxx\xxx_java_linux 3.获取操纵系统标识System.getPr......
  • JavaScript第三方库官网
    国内常用的JavaScript库官网有以下几个:1.https://www.bootcdn.cn/:提供了常用的JavaScript库,包括jQuery、Vue.js、React等。2.https://www.staticfile.org/:提供了常用的JavaScript库,包括jQuery、Bootstrap、Font-Awesome等。以上这些官网都提供了丰富的JavaScript......
  • JavaScript网页自动化测试库
    以下是一些可以模拟鼠标键盘操作网页的JavaScript库: 1.Puppeteer:基于Node.js的自动化测试工具,可以模拟用户操作,包括点击、输入等。 2.Selenium:另一个流行的自动化测试工具,也可以进行鼠标键盘模拟操作。 3.Synth:轻量级的JavaScript库,可以模拟键盘和鼠标事件,包括点击、......