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 |
블로그의 정보
독한 개발자
#독개#