Работа над расшифровкой 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

@@ -4,6 +4,7 @@ import lombok.experimental.UtilityClass;
import org.apache.commons.lang3.ArrayUtils;
import ru.serega6531.packmate.model.Packet;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -16,4 +17,29 @@ public class PacketUtils {
.reduce(ArrayUtils::addAll);
}
public 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;
}
}

View File

@@ -0,0 +1,54 @@
package ru.serega6531.packmate.utils;
import com.google.common.base.Splitter;
import lombok.SneakyThrows;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
import static com.google.common.base.Preconditions.checkState;
public class SSLUtils {
@SneakyThrows
public static SSLContext createContext(File pemFile, File keyFile) {
final String pass = "abcdef";
File jksKeystoreFile = File.createTempFile("packmate_", ".jks");
File pkcsKeystoreFile = File.createTempFile("packmate_", ".pkcs12");
Splitter splitter = Splitter.on(' ');
jksKeystoreFile.delete();
String command = "openssl pkcs12 -export -out " + pkcsKeystoreFile.getAbsolutePath() + " -in " + pemFile.getAbsolutePath() +
" -inkey " + keyFile.getAbsolutePath() + " -passout pass:" + pass;
Process process = new ProcessBuilder(splitter.splitToList(command)).inheritIO().start();
checkState(process.waitFor() == 0);
command = "keytool -importkeystore -srckeystore " + pkcsKeystoreFile.getAbsolutePath() + " -srcstoretype PKCS12 -destkeystore " +
jksKeystoreFile.getAbsolutePath() + " -srcstorepass " + pass + " -deststorepass " + pass;
process = new ProcessBuilder(splitter.splitToList(command)).inheritIO().start();
checkState(process.waitFor() == 0);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(new FileInputStream(jksKeystoreFile), pass.toCharArray());
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keystore, pass.toCharArray());
SSLContext ret = SSLContext.getInstance("TLSv1.2");
TrustManagerFactory factory = TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm());
factory.init(keystore);
ret.init(keyManagerFactory.getKeyManagers(), factory.getTrustManagers(), null);
return ret;
}
}