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 Web Sniffer 使用 JCap 深入解析网络数据包 在网络安全和网络分析领域,数据包嗅探(Sniffer)是一种重要的工具,它能够捕获并分析网络上的数据包,帮助开发者和管理员理解网络流量、检测潜在的安全问题或者...
"jcap"是基于JAMMA(日本街机接口)标准的自定义街机项目,旨在为游戏开发者和爱好者提供一个平台,让他们能够创建自己的街机游戏。这个项目融合了硬件设计与软件开发,涉及到多个领域的技术,包括图形引擎、游戏...
《深入理解Jpcap:64位环境下的网络封包分析与处理》 Jpcap,全称为Java Packet Capture,是一款强大的网络封包捕获和分析库,专为Java平台设计。在64位操作系统环境下,Jpcap的使用需要特别的配置步骤,确保其能与...
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),用于描述并发系统中的互动模式...
文件名"JCap"可能是指JMeter的一个插件或配置文件,因为JMeter(Java Capacitor的缩写)是一款广泛使用的开源性能测试工具,它可以用来进行各种类型的性能测试,包括HTTP、FTP、数据库连接等。JMeter允许用户自定义...
- **江阴长电**(JCAP):提供 Bumping 服务,涉及多种类型的凸点制造。 - **苏州晶方**(WLCSP):专注于 WLCSP 封装技术及相关服务。 - **中芯国际**(SMIC):作为中国领先的集成电路制造商,也涉足 Bumping 技术...
实验还采用了JCAP9000(N+M)型等离子体直读光谱仪和Perkin-Elmer599B型红外分光光度计等精密仪器。 - **实验方法**:首先制备含金溶液,并将其置于含有不同酸性介质的容器中,随后加入自制的三聚氰胺甲醛树脂。通过在...
DWR(Direct Web Remoting)是一种开源的Java库,它允许JavaScript在浏览器中直接调用服务器端的Java方法,实现Web应用中的实时双向通信。DWR简化了Ajax开发,使得开发者可以像操作本地对象一样操作远程对象,从而...