创建Java套接字时如何获取握手包(SYN_ACK)?

时间:2019-07-04 08:07:55

标签: java sockets tcp

我正在尝试构建防火墙应用。我正在读取所有传出数据包,但我想绕开其中一些。对于每个传出的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
            }

0 个答案:

没有答案