Как получить пакет рукопожатия (SYN_ACK) при создании сокета Java? - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь создать приложение брандмауэра.Я читаю все исходящие пакеты и хочу обойти некоторые из них.Для каждого исходящего TCP-пакета я создаю сокет.Но когда я создаю сокет, Java делает рукопожатие.Мне нужно переслать входящий ответ SYN-ACK на интерфейс устройства.

Я думал, что смогу создать поддельный ответ SYN-ACK, но потом я узнал, что это будет проблемой для соединений SSL.

Я использую PCAP4J для анализа пакетов.


//Parse packet
            IpPacket parsedPacket = (IpPacket) IpSelector.newPacket(rawPacket, 0, rawPacket.length);
            TcpPacket parsedTcp = (TcpPacket) parsedPacket.getPayload();

            if (parsedTcp.getHeader().getSyn() && !parsedTcp.getHeader().getAck()){
                Log.d("Handshaking", "-> SYN");
                // TODO: Try to make a connection, if available Send a SYN-ACK packet to device
                //return; Stop
            } else if (parsedTcp.getHeader().getAck()
                    && !parsedTcp.getHeader().getSyn()){
                // TODO: Device send ACK. Check payload if suitable, Build a real socket and send data
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...