by Anonymous » 11 Apr 2025, 11:52
Während ich eine Nachricht vom DHCP-Client erhalte, versuche eine Angebotsnachricht zurück zu senden, aber es scheint, als würde es sich wie dieses fehlgeformte Paket (DHCP/BOOTP) zeigen.
Code: Select all
private byte[] createDhcpMessage(long xid, byte msgType, byte[] offeredIp) {
byte[] msg = new byte[576];
msg[0] = 0x02; // BOOTREPLY
msg[1] = 0x01; // Ethernet
msg[2] = 0x06; // MAC Length
msg[3] = 0x00; // Hops
msg[4] = (byte) (xid >> 24);
msg[5] = (byte) (xid >> 16);
msg[6] = (byte) (xid >> 8);
msg[7] = (byte) xid;
msg[10] = (byte) 0x80; // Broadcast
System.arraycopy(offeredIp, 0, msg, 16, 4);
byte[] mac = new byte[] { 0x00, 0x1A, 0x2B, 0x3C, 0x4D, 0x5E };
System.arraycopy(mac, 0, msg, 28, mac.length);
msg[236] = 0x63;
msg[237] = (byte) 0x82;
msg[238] = 0x53;
msg[239] = 0x63;
int idx = 240;
msg[idx++] = 53;
msg[idx++] = 1;
msg[idx++] = msgType;
msg[idx++] = 1;
msg[idx++] = 4;
msg[idx++] = (byte) 255;
msg[idx++] = (byte) 255;
msg[idx++] = (byte) 255;
msg[idx++] = 0;
msg[idx++] = 3;
msg[idx++] = 4;
msg[idx++] = (byte) 192;
msg[idx++] = (byte) 168;
msg[idx++] = 1;
msg[idx++] = 1;
msg[idx++] = 6;
msg[idx++] = 4;
msg[idx++] = 8;
msg[idx++] = 8;
msg[idx++] = 8;
msg[idx++] = 8;
msg[idx++] = 51;
msg[idx++] = 4;
msg[idx++] = 0;
msg[idx++] = 1;
msg[idx++] = 0x51;
msg[idx++] = (byte) 0x80;
msg[idx++] = 54;
msg[idx++] = 4;
msg[idx++] = (byte) 192;
msg[idx++] = (byte) 168;
msg[idx++] = 1;
msg[idx++] = 1;
msg[idx++] = (byte) 0xFF;
return Arrays.copyOf(msg, idx);
}
Während ich eine Nachricht vom DHCP-Client erhalte, versuche eine Angebotsnachricht zurück zu senden, aber es scheint, als würde es sich wie dieses fehlgeformte Paket (DHCP/BOOTP) zeigen.[code]private byte[] createDhcpMessage(long xid, byte msgType, byte[] offeredIp) {
byte[] msg = new byte[576];
msg[0] = 0x02; // BOOTREPLY
msg[1] = 0x01; // Ethernet
msg[2] = 0x06; // MAC Length
msg[3] = 0x00; // Hops
msg[4] = (byte) (xid >> 24);
msg[5] = (byte) (xid >> 16);
msg[6] = (byte) (xid >> 8);
msg[7] = (byte) xid;
msg[10] = (byte) 0x80; // Broadcast
System.arraycopy(offeredIp, 0, msg, 16, 4);
byte[] mac = new byte[] { 0x00, 0x1A, 0x2B, 0x3C, 0x4D, 0x5E };
System.arraycopy(mac, 0, msg, 28, mac.length);
msg[236] = 0x63;
msg[237] = (byte) 0x82;
msg[238] = 0x53;
msg[239] = 0x63;
int idx = 240;
msg[idx++] = 53;
msg[idx++] = 1;
msg[idx++] = msgType;
msg[idx++] = 1;
msg[idx++] = 4;
msg[idx++] = (byte) 255;
msg[idx++] = (byte) 255;
msg[idx++] = (byte) 255;
msg[idx++] = 0;
msg[idx++] = 3;
msg[idx++] = 4;
msg[idx++] = (byte) 192;
msg[idx++] = (byte) 168;
msg[idx++] = 1;
msg[idx++] = 1;
msg[idx++] = 6;
msg[idx++] = 4;
msg[idx++] = 8;
msg[idx++] = 8;
msg[idx++] = 8;
msg[idx++] = 8;
msg[idx++] = 51;
msg[idx++] = 4;
msg[idx++] = 0;
msg[idx++] = 1;
msg[idx++] = 0x51;
msg[idx++] = (byte) 0x80;
msg[idx++] = 54;
msg[idx++] = 4;
msg[idx++] = (byte) 192;
msg[idx++] = (byte) 168;
msg[idx++] = 1;
msg[idx++] = 1;
msg[idx++] = (byte) 0xFF;
return Arrays.copyOf(msg, idx);
}
[/code]