Работа над расшифровкой TLS

This commit is contained in:
serega6531
2020-04-17 20:46:28 +03:00
parent c697bee9d4
commit 9395c1c9a2
9 changed files with 231 additions and 26 deletions

View File

@@ -0,0 +1,38 @@
package ru.serega6531.packmate.service.optimization;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import ru.serega6531.packmate.model.Packet;
import ru.serega6531.packmate.utils.PacketUtils;
import ru.serega6531.packmate.utils.SSLUtils;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult;
import java.io.File;
import java.nio.ByteBuffer;
import java.util.List;
@RequiredArgsConstructor
public class TlsDecryptor {
private final List<Packet> packets;
@SneakyThrows
public void decryptTls() {
List<List<Packet>> sides = PacketUtils.sliceToSides(packets);
File pemFile = new File(getClass().getClassLoader().getResource("tls.pem").getFile());
File keyFile = new File(getClass().getClassLoader().getResource("tls.key").getFile());
SSLContext context = SSLUtils.createContext(pemFile, keyFile);
SSLEngine serverEngine = context.createSSLEngine();
serverEngine.setUseClientMode(false);
serverEngine.setNeedClientAuth(true);
ByteBuffer decodedServerBuf = ByteBuffer.allocate(1000);
SSLEngineResult unwrap = serverEngine.unwrap(ByteBuffer.wrap(packets.get(0).getContent()), decodedServerBuf);
System.out.println();
}
}

View File

@@ -104,7 +104,7 @@ public class WebSocketsParser {
}
private void parse(final List<Packet> wsPackets, final List<Packet> handshakes, Draft_6455 draft) {
List<List<Packet>> sides = sliceToSides(wsPackets);
List<List<Packet>> sides = PacketUtils.sliceToSides(wsPackets);
parsedPackets = new ArrayList<>(handshakes);
for (List<Packet> side : sides) {
@@ -149,31 +149,6 @@ public class WebSocketsParser {
return parsedPackets;
}
private List<List<Packet>> sliceToSides(List<Packet> packets) {
List<List<Packet>> result = new ArrayList<>();
List<Packet> side = new ArrayList<>();
boolean incoming = true;
for (Packet packet : packets) {
if(packet.isIncoming() != incoming) {
incoming = packet.isIncoming();
if(!side.isEmpty()) {
result.add(side);
side = new ArrayList<>();
}
}
side.add(packet);
}
if(!side.isEmpty()) {
result.add(side);
}
return result;
}
private String getHandshake(final List<Packet> packets) {
final String handshake = PacketUtils.mergePackets(packets)
.map(String::new)