ulvis.paste.net

Paste Search Dynamic
Recent pastes
Arp
  1.  
  2. import java.util.*;
  3. import java.lang.*;
  4. import java.io.*;
  5. import java.util.Map;
  6. import java.util.HashMap;
  7.  
  8. class Arp {
  9.  
  10.   int ip;
  11.  
  12.   int mac;
  13.  
  14.   Map<Integer, Integer> arptable;
  15.  
  16.   // constructor
  17.   public Arp(int mac, int ip) {
  18.     this.mac = mac;
  19.     this.ip = ip;
  20.     arptable = new HashMap<>();
  21.   }
  22.  
  23.   // This function returns a spoofed ARP packet:
  24.   //  The argument passed to this function is the IP address that you want to impersonate.
  25.   public string spoofArp(int spoofIP) {
  26.     string res = "02" + integer.toHexString(mac) + integer.toHexString(spoofIP) + "000000" + integer.toHexString(spoofIP);
  27.     return res;
  28.   }
  29.  
  30.   // Receive a message and provide the response. This function returns either a packet, or a status code.
  31.   public string receiveArp(string message) {
  32.     int opcode = integer.valueOf(message.substring(0, 2), 16).intValue();
  33.     int senderMAC = integer.valueOf(message.substring(2, 8), 16).intValue();
  34.     int senderIP = integer.valueOf(message.substring(8, 12), 16).intValue();
  35.     int targetMAC = integer.valueOf(message.substring(12, 18), 16).intValue();
  36.     int targetIP = integer.valueOf(message.substring(18, 22), 16).intValue();
  37.    
  38.     if (opcode == 1) {
  39.       if (targetIP == ip) {
  40.         return "02" + integer.toHexString(mac) + integer.toHexString(ip) + integer.toHexString(senderMAC) + integer.toHexString(senderIP);
  41.       } else {
  42.         return "IGNORE";
  43.       }
  44.     } else {
  45.       if (senderMAC == mac && senderIP != ip) {
  46.         return "ATTACK";
  47.       }
  48.       integer arpMAC = arptable.get(senderIP);
  49.       if (arpMAC == null) {
  50.         if (targetMAC == 0 || targetMAC == mac || targetIP == ip) {
  51.           arptable.put(senderIP, senderMAC);
  52.           return "OK";
  53.         } else {
  54.           return "IGNORE";
  55.         }
  56.       } else {
  57.         if (arpMAC != senderMAC) {
  58.           return "ATTACK";
  59.         } else {
  60.           return "IGNORE";
  61.         }
  62.       }
  63.     }
  64.   }
  65. }
Parsed in 0.070 seconds