`
ruantongsheng
  • 浏览: 21833 次
  • 来自: ...
社区版块
存档分类
最新评论

jcap_test

 
阅读更多
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 using jcap

    Java Web Sniffer 使用 JCap 深入解析网络数据包 在网络安全和网络分析领域,数据包嗅探(Sniffer)是一种重要的工具,它能够捕获并分析网络上的数据包,帮助开发者和管理员理解网络流量、检测潜在的安全问题或者...

    jcap:JAMMA Custom Arcade项目

    "jcap"是基于JAMMA(日本街机接口)标准的自定义街机项目,旨在为游戏开发者和爱好者提供一个平台,让他们能够创建自己的街机游戏。这个项目融合了硬件设计与软件开发,涉及到多个领域的技术,包括图形引擎、游戏...

    jpcap 64位

    《深入理解Jpcap:64位环境下的网络封包分析与处理》 Jpcap,全称为Java Packet Capture,是一款强大的网络封包捕获和分析库,专为Java平台设计。在64位操作系统环境下,Jpcap的使用需要特别的配置步骤,确保其能与...

    javabiginteger源码-paillier:Paillier算法的Java实现。这是为数不多的保留加性同态特性的已知系统之一。JCAP

    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时空中的量子拉莫尔辐射

    我们研究了惯性电荷在不断扩大的de Sitter时空上演化所产生的辐射。 在标量量子电动力学(sQED)内执行扰动计算,我们获得了该过程的跃迁... (JCAP 11:013,2006),其中作者对一般的保形平坦时空进行了类似的计算。

    重力的平移不变时变解II

    本文是JCAP 12(2013)004的续集,并且还致力于在其移动框架公式中无鬼影的重力的平移不变解。 在这里,我们考虑质量常数,除了宇宙学常数外,它在vielbein中是线性的(对应于4D公制中的β3项)。 我们明确地确定了...

    轻马约拉纳中微子对无中微子双β衰变和宇宙学的贡献

    [JCAP 02(2015)045]对中微子双β衰变(0ββ)进行搜索。 此分析表明中微子质量最轻的值很小,因为作者在1°C时发现&lt;84 meV,并为正常层次提供了1°偏好。 马洛拉纳有效质量的允许​​值,由0ββ探测到,在3...

    第三量化变化常数宇宙学中多重宇宙的出现

    在光速变化和引力常数变化的典范量化理论的背景下,可以实现类似的效果,其中两个量都由非最小耦合标量场表示(Balcerzak in JCAP 04:019,2015)。 这种理论既包含了大爆炸前的收缩阶段,也包含了大爆炸后的扩张...

    无鬼的大量f(R)理论建模为有效的爱因斯坦空间和宇宙加速

    我们研究了如何将巨大的无鬼引力f(R)修改的理论MGFTs编码为通用的非对... (JCAP 1305:020,2013)。 研究了无幻影的非对角爱因斯坦空间的宇宙学演化。 建立了MGFT宇宙学与ΛCDM模型的较小非对角变形的一定兼容性。

    james-mblab-clothes-female:詹姆斯的MB-实验室服装资产(女)

    这是GitHub和James的服装资产包(女性)(又名JCAP-F)的主要下载页面,这是用于Blender的精彩 (以前的ManuelBastoniLAB)附加组件的服装资产的开放包。 该项目独立于MB-Lab主项目,旨在填补MB-Lab与Daz 3D,Make...

    洛伦兹违反了扭转微量费米子扇区和星系M 51数据以及手性发电机的界限

    (JCAP 10:058,2012)在对IGMF的远距平行研究中使用了扭转轨迹,理由是扭转轨迹导致的影响要比扭转张量的其他不可约成分弱得多。 LV是根据类似于手性磁流的Dvornikov和Semikoz发电机方程的新发电机方程中的类似...

    communication sequential process

    CSP 描述这样一种并发模型:多个Process 使用一个 Channel 进行通信, 这个 Channel 连结的 Process 通常是匿名的,消息传递通常是同步的。CSP 是一门形式语言(类似于 ℷ calculus),用于描述并发系统中的互动模式...

    性能测试软件

    文件名"JCap"可能是指JMeter的一个插件或配置文件,因为JMeter(Java Capacitor的缩写)是一款广泛使用的开源性能测试工具,它可以用来进行各种类型的性能测试,包括HTTP、FTP、数据库连接等。JMeter允许用户自定义...

    bumping introduction

    - **江阴长电**(JCAP):提供 Bumping 服务,涉及多种类型的凸点制造。 - **苏州晶方**(WLCSP):专注于 WLCSP 封装技术及相关服务。 - **中芯国际**(SMIC):作为中国领先的集成电路制造商,也涉足 Bumping 技术...

    三聚氰胺甲醛树脂对金的吸附行为 (1995年)

    实验还采用了JCAP9000(N+M)型等离子体直读光谱仪和Perkin-Elmer599B型红外分光光度计等精密仪器。 - **实验方法**:首先制备含金溶液,并将其置于含有不同酸性介质的容器中,随后加入自制的三聚氰胺甲醛树脂。通过在...

    DWR即时通讯

    DWR(Direct Web Remoting)是一种开源的Java库,它允许JavaScript在浏览器中直接调用服务器端的Java方法,实现Web应用中的实时双向通信。DWR简化了Ajax开发,使得开发者可以像操作本地对象一样操作远程对象,从而...

Global site tag (gtag.js) - Google Analytics