JnetPcap java .lang.NullPointerException - PullRequest
       21

JnetPcap java .lang.NullPointerException

0 голосов
/ 25 января 2020

Итак, я участвую в CTF, и мы должны отправить команду на сервер, чтобы он сам перезагрузился, но цель - принимать запросы только от указанного c ip addr, поэтому мы должны быть «подделка» нашего addr, чтобы сделать эту работу, теперь, когда я делаю это в Java, это сложно, мне нужно использовать эту библиотеку JnetPcap, но я изо всех сил:

Ошибка, которую я получаю:

Exception in thread "Thread-0" java.lang.NullPointerException

Место, в котором происходит ошибка:

    @Override
    public void run() {
        Pcap pcap = new Pcap();
        //first we create the packet
        final JMemoryPacket packet = new JMemoryPacket(buff_size);
        packet.scan(Ethernet.ID);

        //this is where we are changing the ip address header
        Ip4 ip_addr = packet.getHeader(new Ip4());
        ip_addr.source(spoofed_ip); //here is where the null pointer is
        ip_addr.destination(target_host);

        Tcp tcp = packet.getHeader(new Tcp());
        tcp.destination(target_port);

            if (pcap.sendPacket(packet) != Pcap.OK){
                System.err.println(pcap.getErr());
            }


    }

Вот как я настраиваю IP: 1. Когда вы создаете объект, вам нужно ввести несколько параметров, включая IP-адрес в байтовом формате, например, так:

new byte[]{1, 2, 3, 4};

Пример:

new byte[]{(byte)Integer.parseInt(p[0]), (byte)Integer.parseInt(p[1]), (byte)Integer.parseInt(p[2]), (byte)Integer.parseInt(p[3])}

После отладки я вывел это как IP-адрес - [45, 80, -108, -102] когда IP-адрес я пытаюсь подделать как есть 45.80.148.154

Любая помощь будет любимой!

РЕДАКТИРОВАТЬ 1: инициализация spoof_ip:

    public Attack(byte[] target_host, int target_port, int buff_size, byte[] spoofed_ip) {
        this.target_host = target_host;
        this.target_port = target_port;
        this.buff_size = buff_size;
        this.spoofed_ip = spoofed_ip;
    }
...