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