de.rub.nds.tlsattacker.attacks.padding.ClassicDynamicPaddingTraceGenerator Maven / Gradle / Ivy
/**
* TLS-Attacker - A Modular Penetration Testing Framework for TLS
*
* Copyright 2014-2021 Ruhr University Bochum, Paderborn University, Hackmanit GmbH
*
* Licensed under Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package de.rub.nds.tlsattacker.attacks.padding;
import de.rub.nds.tlsattacker.attacks.constants.PaddingRecordGeneratorType;
import de.rub.nds.tlsattacker.attacks.padding.vector.PaddingVector;
import de.rub.nds.tlsattacker.core.config.Config;
import de.rub.nds.tlsattacker.core.protocol.message.ApplicationMessage;
import de.rub.nds.tlsattacker.core.protocol.message.ChangeCipherSpecMessage;
import de.rub.nds.tlsattacker.core.protocol.message.ClientHelloMessage;
import de.rub.nds.tlsattacker.core.protocol.message.FinishedMessage;
import de.rub.nds.tlsattacker.core.protocol.message.ServerHelloDoneMessage;
import de.rub.nds.tlsattacker.core.record.AbstractRecord;
import de.rub.nds.tlsattacker.core.workflow.WorkflowTrace;
import de.rub.nds.tlsattacker.core.workflow.action.GenericReceiveAction;
import de.rub.nds.tlsattacker.core.workflow.action.ReceiveAction;
import de.rub.nds.tlsattacker.core.workflow.action.ReceiveTillAction;
import de.rub.nds.tlsattacker.core.workflow.action.SendAction;
import de.rub.nds.tlsattacker.core.workflow.action.SendDynamicClientKeyExchangeAction;
import de.rub.nds.tlsattacker.core.workflow.factory.WorkflowConfigurationFactory;
import java.util.LinkedList;
/**
*
*/
public class ClassicDynamicPaddingTraceGenerator extends PaddingTraceGenerator {
/**
*
* @param recordGeneratorType
*/
public ClassicDynamicPaddingTraceGenerator(PaddingRecordGeneratorType recordGeneratorType) {
super(recordGeneratorType);
}
/**
*
* @param config
* @return
*/
@Override
public WorkflowTrace getPaddingOracleWorkflowTrace(Config config, PaddingVector vector) {
WorkflowConfigurationFactory factory = new WorkflowConfigurationFactory(config);
WorkflowTrace trace = factory.createTlsEntryWorkflowTrace(config.getDefaultClientConnection());
trace.addTlsAction(new SendAction(new ClientHelloMessage(config)));
trace.addTlsAction(new ReceiveTillAction(new ServerHelloDoneMessage()));
trace.addTlsAction(new SendDynamicClientKeyExchangeAction());
trace.addTlsAction(new SendAction(new ChangeCipherSpecMessage(), new FinishedMessage()));
trace.addTlsAction(new ReceiveAction(new ChangeCipherSpecMessage(), new FinishedMessage()));
ApplicationMessage applicationMessage = new ApplicationMessage(config);
SendAction sendAction = new SendAction(applicationMessage);
sendAction.setRecords(new LinkedList());
sendAction.getRecords().add(vector.createRecord());
trace.addTlsAction(sendAction);
trace.addTlsAction(new GenericReceiveAction());
return trace;
}
}