/**
* TLS-Attacker - A Modular Penetration Testing Framework for TLS
*
* Copyright 2014-2016 Ruhr University Bochum / Hackmanit GmbH
*
* Licensed under Apache License 2.0
* http://www.apache.org/licenses/LICENSE-2.0
*/
package de.rub.nds.tlsattacker.attacks.config;
import com.beust.jcommander.Parameter;
import de.rub.nds.tlsattacker.tls.config.ClientCommandConfig;
import de.rub.nds.tlsattacker.tls.constants.ProtocolVersion;
import de.rub.nds.tlsattacker.tls.constants.CipherSuite;
import de.rub.nds.tlsattacker.tls.workflow.WorkflowTraceType;
import de.rub.nds.tlsattacker.transport.TransportHandlerType;
import java.util.ArrayList;
import java.util.List;
/**
* @author Florian Pfützenreuter <florian.pfuetzenreuter@rub.de>
*/
public class DtlsPaddingOracleAttackCommandConfig extends ClientCommandConfig {
public static final String ATTACK_COMMAND = "dtls_potest";
@Parameter(names = "-messagespertrain", description = "Number of messages per train")
int messagesPerTrain = 10;
@Parameter(names = "-trainmessagesize", description = "Message size of each trains messages")
int trainMessageSize = 1450;
@Parameter(names = "-rounds", description = "Number of attack rounds")
int nrOfRounds = 20;
@Parameter(names = "-resultfile", description = "Save the response times in the specified file")
String resultFilePath = null;
@Parameter(names = "-messagewaitnanos", description = "Wait for this amount of nanoseconds between sending two messages of any given train (rate limiting)")
long messageWaitNanos = 0;
public DtlsPaddingOracleAttackCommandConfig() {
// Just to be sure
transportHandlerType = TransportHandlerType.UDP;
protocolVersion = ProtocolVersion.DTLS12;
workflowTraceType = WorkflowTraceType.HANDSHAKE;
// Until all dtls workflow factories are adapted, this is to make sure
// the right workflow factory is used
List<CipherSuite> cs = new ArrayList<>();
cs.add(CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA);
cipherSuites = cs;
}
public int getMessagesPerTrain() {
return messagesPerTrain;
}
public int getTrainMessageSize() {
return trainMessageSize;
}
public int getNrOfRounds() {
return nrOfRounds;
}
public String getResultFilePath() {
return resultFilePath;
}
public long getMessageWaitNanos() {
return messageWaitNanos;
}
public void setMessagesPerTrain(int messagesPerTrain) {
this.messagesPerTrain = messagesPerTrain;
}
public void setTrainMessageSize(int trainMessageSize) {
this.trainMessageSize = trainMessageSize;
}
public void setNrOfRounds(int nrOfRounds) {
this.nrOfRounds = nrOfRounds;
}
public void setResultFilePath(String resultFilePath) {
this.resultFilePath = resultFilePath;
}
public void setMessageWaitNanos(long messageWaitNanos) {
this.messageWaitNanos = messageWaitNanos;
}
}