import java.net.Inet4Address;
import java.net.InetAddress;
import java.util.Arrays;
import jpcap.JpcapCaptor;
import jpcap.JpcapSender;
import jpcap.NetworkInterface;
import jpcap.NetworkInterfaceAddress;
import jpcap.packet.ARPPacket;
import jpcap.packet.EthernetPacket;
public class Test{
public static byte[] arp(InetAddress ip) throws Exception{
//find network interface
NetworkInterface[] devices=JpcapCaptor.getDeviceList();
NetworkInterface device=null;
loop: for(NetworkInterface d:devices){
for(NetworkInterfaceAddress addr:d.addresses){
if(!(addr.address instanceof Inet4Address)) continue;
byte[] bip=ip.getAddress();
byte[] subnet=addr.subnet.getAddress();
byte[] bif=addr.address.getAddress();
for(int i=0;i<4;i++){
bip[i]=(byte)(bip[i]&subnet[i]);
bif[i]=(byte)(bif[i]&subnet[i]);
}
if(Arrays.equals(bip,bif)){
device=d;
break loop;
}
}
}
if(device==null)
throw new IllegalArgumentException(ip+" is not a local address");
//open Jpcap
JpcapCaptor captor=JpcapCaptor.openDevice(device,2000,false,3000);
captor.setFilter("arp",true);
JpcapSender sender=captor.getJpcapSenderInstance();
InetAddress srcip=null;
for(NetworkInterfaceAddress addr:device.addresses)
if(addr.address instanceof Inet4Address){
srcip=addr.address;
break;
}
byte[] broadcast=new byte[]{(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255};
ARPPacket arp=new ARPPacket();
arp.hardtype=ARPPacket.HARDTYPE_ETHER;
arp.prototype=ARPPacket.PROTOTYPE_IP;
arp.operation=ARPPacket.ARP_REQUEST;
arp.hlen=6;
arp.plen=4;
arp.sender_hardaddr=device.mac_address;
arp.sender_protoaddr=srcip.getAddress();
arp.target_hardaddr=broadcast;
arp.target_protoaddr=ip.getAddress();
EthernetPacket ether=new EthernetPacket();
ether.frametype=EthernetPacket.ETHERTYPE_ARP;
ether.src_mac=device.mac_address;
ether.dst_mac=broadcast;
arp.datalink=ether;
sender.sendPacket(arp);
while(true){
ARPPacket p=(ARPPacket)captor.getPacket();
if(p==null){
throw new IllegalArgumentException(ip+" is not a local address");
}
if(Arrays.equals(p.target_protoaddr,srcip.getAddress())){
return p.sender_hardaddr;
}
}
}
public static void main(String[] args) {
//args[0]="192.168.100";
//if(args.length<1){
// System.out.println("Usage: java ARP <ip address>");
//}else{
try {
byte[] mac=Test.arp(InetAddress.getByName("192.168.1.1"));
for (byte b : mac)
System.out.print(Integer.toHexString(b&0xff) + ":");
System.out.println();
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
//}
}
}
分享到:
相关推荐
java sniffer for web user to capture data grame.
jcap:JAMMA Custom Arcade项目
1.该安装包是64bit的 2.使用前将需要安装jdk,jre,eclipse,Winpcap 3.将jpcap.dll放在jdk/bin目录下 4.将jpcap.jar导入项目中
java biginteger源码笔记 The Java:trade_mark: Cryptography Architecture requires that Java security providers be code-signed (using a code-signing certificate issued by Oracle Corporation). ...file
我们研究了惯性电荷在不断扩大的de Sitter时空上演化所产生的辐射。 在标量量子电动力学(sQED)内执行扰动计算,我们获得了该过程的跃迁... (JCAP 11:013,2006),其中作者对一般的保形平坦时空进行了类似的计算。
本文是JCAP 12(2013)004的续集,并且还致力于在其移动框架公式中无鬼影的重力的平移不变解。 在这里,我们考虑质量常数,除了宇宙学常数外,它在vielbein中是线性的(对应于4D公制中的β3项)。 我们明确地确定了...
[JCAP 02(2015)045]对中微子双β衰变(0ββ)进行搜索。 此分析表明中微子质量最轻的值很小,因为作者在1°C时发现<84 meV,并为正常层次提供了1°偏好。 马洛拉纳有效质量的允许值,由0ββ探测到,在3...
在光速变化和引力常数变化的典范量化理论的背景下,可以实现类似的效果,其中两个量都由非最小耦合标量场表示(Balcerzak in JCAP 04:019,2015)。 这种理论既包含了大爆炸前的收缩阶段,也包含了大爆炸后的扩张...
我们研究了如何将巨大的无鬼引力f(R)修改的理论MGFTs编码为通用的非对... (JCAP 1305:020,2013)。 研究了无幻影的非对角爱因斯坦空间的宇宙学演化。 建立了MGFT宇宙学与ΛCDM模型的较小非对角变形的一定兼容性。
这是GitHub和James的服装资产包(女性)(又名JCAP-F)的主要下载页面,这是用于Blender的精彩 (以前的ManuelBastoniLAB)附加组件的服装资产的开放包。 该项目独立于MB-Lab主项目,旨在填补MB-Lab与Daz 3D,Make...
(JCAP 10:058,2012)在对IGMF的远距平行研究中使用了扭转轨迹,理由是扭转轨迹导致的影响要比扭转张量的其他不可约成分弱得多。 LV是根据类似于手性磁流的Dvornikov和Semikoz发电机方程的新发电机方程中的类似...
CSP 描述这样一种并发模型:多个Process 使用一个 Channel 进行通信, 这个 Channel 连结的 Process 通常是匿名的,消息传递通常是同步的。CSP 是一门形式语言(类似于 ℷ calculus),用于描述并发系统中的互动模式...
DWR即时通讯