독개

arp spoofing만드는중

by #독개#

package src;

 

import java.net.InetAddress;

import java.net.NetworkInterface;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Scanner;

import org.jnetpcap.Pcap;

import org.jnetpcap.PcapIf;

import org.jnetpcap.packet.PcapPacket;

import org.jnetpcap.packet.PcapPacketHandler;

 

public class Main {

 

static byte[] LocalMac = new byte[6];

static byte[] LocalIp = new byte[4];

 

public static void main(String[] args) {

 

 

//----네트워크 디바이스 검색

 

//네트워크 장비를 저장하는 공간을 할당합니다.

ArrayList<PcapIf> allDevs = new ArrayList<PcapIf>();

StringBuilder err = new StringBuilder(); //오류 메세지를 담는 버퍼

 

//네트워크 장비를 찾아서 저장 결과는 r에 담김

int r = Pcap.findAllDevs(allDevs, err);

Scanner input = new Scanner(System.in); //나중에 디바이스 선택시사용

 

if (r == Pcap.NOT_OK || allDevs.isEmpty()) {

System.out.println("못찾음" + err.toString());

return;

}

 

System.out.println(" [네트워크 장비탐색 성공] ");

//찾은 장비를 하나씩 돌면서 정보를 출력

int i = 0;

for (PcapIf device : allDevs) {

String description = (device.getDescription() != null) ? device.getDescription() : "설명 없음";

System.out.printf("[ %d번 ] : [ %s ] [%s]\n", i++, device.getName(), description);

}

 

//어떤 디바이스(랜카드)를 선택할지

System.out.print("네트워크 디바이스 선택 :");

int no = input.nextInt(); //위에서 Scanner햇음

 

PcapIf device = allDevs.get(no);

System.out.println(device.getDescription());

 

 

int snaplen = 64 * 1024; //65536바이트 만큼 파일캡쳐 설정

int flags = Pcap.MODE_PROMISCUOUS;  //프라미스큐어스 모드 설정

int timeout = 10 * 1000; //타임아웃(제한시간)을 10초로 설정

 

// 장치의 패킷 캡처를 활성화시킴

Pcap pcap = Pcap.openLive(device.getName(), snaplen, flags, timeout, err);

 

// Pcap 객체가 생성되지 않으면 오류 메세지를 발생

if (pcap == null) {

System.out.printf("캡쳐 할수 없음");

return;

}

 

/*//----패킷캡쳐 (전송시 이부분 주석처리)

 

// 패킷을 처리하는 패킷 핸들러를 정의

PcapPacketHandler<String> Handler = new PcapPacketHandler<String>() {

public void nextPacket(PcapPacket packet, String user) {

 

System.out.println(packet);

 

}

};

//무한으로 패킷캡처 ex) pcap.loop(10, handler, ""); 10번캡처

pcap.loop(Pcap.LOOP_INFINITE, Handler, "");

pcap.close();

*///---------------------------------------

 

 

//----패킷전송

 

 

InetAddress ip;

try {

ip = InetAddress.getLocalHost();

 

NetworkInterface mac = NetworkInterface.getByInetAddress(ip);

 

LocalMac=mac.getHardwareAddress();

LocalIp=ip.getAddress();

} catch (Exception e) { }

 

PcapPacketHandler<String> Handler2 = new PcapPacketHandler<String>() {

public void nextPacket(PcapPacket packet, String user) {

 

pcap.sendPacket(LocalMac);

}

};

pcap.loop(Pcap.LOOP_INFINITE, Handler2, "");

pcap.close();

//---------------------------------------

 

 

 

}

 

}

 

 

'🔥 프로그래밍 학습 > JAVA' 카테고리의 다른 글

람다식  (0) 2020.06.12
Java FX  (0) 2020.06.10
JnetPcap 디바이스검색/패킷캡처/패킷전송  (0) 2020.06.08
네트워킹  (0) 2020.06.04
포트스캐너  (0) 2020.06.03

블로그의 정보

독한 개발자

#독개#

활동하기