Skip to content

Commit 34fce10

Browse files
Testsuite can now be run from the Runnable project
1 parent 6ef3212 commit 34fce10

File tree

5 files changed

+150
-143
lines changed

5 files changed

+150
-143
lines changed

Fuzzer/src/main/java/de/rub/nds/tlsattacker/fuzzer/Main.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ public static void main(String[] args) throws Exception {
4545
JCommander jc = new JCommander(generalConfig);
4646

4747
MultiFuzzerConfig cmconfig = new MultiFuzzerConfig();
48-
jc.addCommand(MultiFuzzerConfig.ATTACK_COMMAND, cmconfig);
48+
jc.addCommand(MultiFuzzerConfig.COMMAND, cmconfig);
4949

5050
BleichenbacherCommandConfig bleichenbacherTest = new BleichenbacherCommandConfig();
5151
jc.addCommand(BleichenbacherCommandConfig.ATTACK_COMMAND, bleichenbacherTest);
5252
DtlsPaddingOracleAttackCommandConfig dtlsPaddingOracleAttackTest = new DtlsPaddingOracleAttackCommandConfig();
5353
jc.addCommand(DtlsPaddingOracleAttackCommandConfig.ATTACK_COMMAND, dtlsPaddingOracleAttackTest);
5454
// EarlyCCSCommandConfig earlyCCS = new EarlyCCSCommandConfig();
55-
// jc.addCommand(EarlyCCSCommandConfig.ATTACK_COMMAND, earlyCCS);
55+
// jc.addCommand(EarlyCCSCommandConfig.COMMAND, earlyCCS);
5656
InvalidCurveAttackCommandConfig ellipticTest = new InvalidCurveAttackCommandConfig();
5757
jc.addCommand(InvalidCurveAttackCommandConfig.ATTACK_COMMAND, ellipticTest);
5858
InvalidCurveAttackFullCommandConfig elliptic = new InvalidCurveAttackFullCommandConfig();
@@ -64,7 +64,7 @@ public static void main(String[] args) throws Exception {
6464
PoodleCommandConfig poodle = new PoodleCommandConfig();
6565
jc.addCommand(PoodleCommandConfig.ATTACK_COMMAND, poodle);
6666
// SniTestCommandConfig sniTest = new SniTestCommandConfig();
67-
// jc.addCommand(SniTestCommandConfig.ATTACK_COMMAND, sniTest);
67+
// jc.addCommand(SniTestCommandConfig.COMMAND, sniTest);
6868
WinshockCommandConfig winshock = new WinshockCommandConfig();
6969
jc.addCommand(WinshockCommandConfig.ATTACK_COMMAND, winshock);
7070

@@ -77,13 +77,13 @@ public static void main(String[] args) throws Exception {
7777

7878
Attacker attacker;
7979
switch (jc.getParsedCommand()) {
80-
case MultiFuzzerConfig.ATTACK_COMMAND:
80+
case MultiFuzzerConfig.COMMAND:
8181
startMultiFuzzer(cmconfig, generalConfig, jc);
8282
return;
8383
case BleichenbacherCommandConfig.ATTACK_COMMAND:
8484
attacker = new BleichenbacherAttack(bleichenbacherTest);
8585
break;
86-
// case EarlyCCSCommandConfig.ATTACK_COMMAND:
86+
// case EarlyCCSCommandConfig.COMMAND:
8787
// attacker = new EarlyCCSAttack(earlyCCS);
8888
// break;
8989
case InvalidCurveAttackCommandConfig.ATTACK_COMMAND:
@@ -107,7 +107,7 @@ public static void main(String[] args) throws Exception {
107107
case DtlsPaddingOracleAttackCommandConfig.ATTACK_COMMAND:
108108
attacker = new DtlsPaddingOracleAttack(dtlsPaddingOracleAttackTest);
109109
break;
110-
// case SniTestCommandConfig.ATTACK_COMMAND:
110+
// case SniTestCommandConfig.COMMAND:
111111
// attacker = new SniTest(sniTest);
112112
// break;
113113
default:
@@ -127,7 +127,7 @@ public static void main(String[] args) throws Exception {
127127
private static void startMultiFuzzer(MultiFuzzerConfig fuzzerConfig, GeneralConfig generalConfig, JCommander jc) {
128128
MultiFuzzer fuzzer = new MultiFuzzer(fuzzerConfig, generalConfig);
129129
if (fuzzerConfig.isHelp()) {
130-
jc.usage(MultiFuzzerConfig.ATTACK_COMMAND);
130+
jc.usage(MultiFuzzerConfig.COMMAND);
131131
return;
132132
}
133133
fuzzer.startFuzzer();

Fuzzer/src/main/java/de/rub/nds/tlsattacker/fuzzer/config/MultiFuzzerConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
public class MultiFuzzerConfig {
1818

19-
public static final String ATTACK_COMMAND = "multi_fuzzer";
19+
public static final String COMMAND = "multi_fuzzer";
2020

2121
@Parameter(names = { "-h", "-help" }, help = true, description = "Prints help")
2222
protected boolean help;

Runnable/src/main/java/de/rub/nds/tlsattacker/Main.java

Lines changed: 139 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
*
44
* Copyright 2014-2016 Ruhr University Bochum / Hackmanit GmbH
55
*
6-
* Licensed under Apache License 2.0
7-
* http://www.apache.org/licenses/LICENSE-2.0
6+
* Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0
87
*/
98
package de.rub.nds.tlsattacker;
109

@@ -29,6 +28,8 @@
2928
import de.rub.nds.tlsattacker.attacks.impl.WinshockAttack;
3029
import de.rub.nds.tlsattacker.fuzzer.config.MultiFuzzerConfig;
3130
import de.rub.nds.tlsattacker.fuzzer.impl.MultiFuzzer;
31+
import de.rub.nds.tlsattacker.testsuite.config.ServerTestConfig;
32+
import de.rub.nds.tlsattacker.testsuite.impl.ServerTestSuite;
3233
import de.rub.nds.tlsattacker.tls.Attacker;
3334
import de.rub.nds.tlsattacker.tls.config.ClientCommandConfig;
3435
import de.rub.nds.tlsattacker.tls.config.CommandConfig;
@@ -52,7 +53,7 @@
5253
import org.apache.logging.log4j.Logger;
5354

5455
/**
55-
*
56+
*
5657
* @author Juraj Somorovsky <juraj.somorovsky@rub.de>
5758
*/
5859
public class Main {
@@ -61,143 +62,149 @@ public class Main {
6162

6263
public static void main(String[] args) throws Exception {
6364

64-
GeneralConfig generalConfig = new GeneralConfig();
65-
JCommander jc = new JCommander(generalConfig);
66-
67-
MultiFuzzerConfig cmconfig = new MultiFuzzerConfig();
68-
jc.addCommand(MultiFuzzerConfig.ATTACK_COMMAND, cmconfig);
69-
70-
BleichenbacherCommandConfig bleichenbacherTest = new BleichenbacherCommandConfig();
71-
jc.addCommand(BleichenbacherCommandConfig.ATTACK_COMMAND, bleichenbacherTest);
72-
DtlsPaddingOracleAttackCommandConfig dtlsPaddingOracleAttackTest = new DtlsPaddingOracleAttackCommandConfig();
73-
jc.addCommand(DtlsPaddingOracleAttackCommandConfig.ATTACK_COMMAND, dtlsPaddingOracleAttackTest);
74-
InvalidCurveAttackCommandConfig ellipticTest = new InvalidCurveAttackCommandConfig();
75-
jc.addCommand(InvalidCurveAttackCommandConfig.ATTACK_COMMAND, ellipticTest);
76-
InvalidCurveAttackFullCommandConfig elliptic = new InvalidCurveAttackFullCommandConfig();
77-
jc.addCommand(InvalidCurveAttackFullCommandConfig.ATTACK_COMMAND, elliptic);
78-
HeartbleedCommandConfig heartbleed = new HeartbleedCommandConfig();
79-
jc.addCommand(HeartbleedCommandConfig.ATTACK_COMMAND, heartbleed);
80-
PaddingOracleCommandConfig paddingOracle = new PaddingOracleCommandConfig();
81-
jc.addCommand(PaddingOracleCommandConfig.ATTACK_COMMAND, paddingOracle);
82-
PoodleCommandConfig poodle = new PoodleCommandConfig();
83-
jc.addCommand(PoodleCommandConfig.ATTACK_COMMAND, poodle);
84-
WinshockCommandConfig winshock = new WinshockCommandConfig();
85-
jc.addCommand(WinshockCommandConfig.ATTACK_COMMAND, winshock);
86-
ServerCommandConfig server = new ServerCommandConfig();
87-
jc.addCommand(ServerCommandConfig.COMMAND, server);
88-
ClientCommandConfig client = new ClientCommandConfig();
89-
jc.addCommand(ClientCommandConfig.COMMAND, client);
90-
ManInTheMiddleAttackCommandConfig MitM_Attack = new ManInTheMiddleAttackCommandConfig();
91-
jc.addCommand(ManInTheMiddleAttackCommandConfig.ATTACK_COMMAND, MitM_Attack);
92-
93-
jc.parse(args);
94-
95-
if (generalConfig.isHelp() || jc.getParsedCommand() == null) {
96-
jc.usage();
97-
return;
98-
}
99-
100-
Attacker attacker;
101-
switch (jc.getParsedCommand()) {
102-
case MultiFuzzerConfig.ATTACK_COMMAND:
103-
startMultiFuzzer(cmconfig, generalConfig, jc);
104-
return;
105-
case ServerCommandConfig.COMMAND:
106-
startSimpleTls(generalConfig, server, jc);
107-
return;
108-
case ClientCommandConfig.COMMAND:
109-
startSimpleTls(generalConfig, client, jc);
110-
return;
111-
case BleichenbacherCommandConfig.ATTACK_COMMAND:
112-
attacker = new BleichenbacherAttack(bleichenbacherTest);
113-
break;
114-
case InvalidCurveAttackCommandConfig.ATTACK_COMMAND:
115-
attacker = new InvalidCurveAttack(ellipticTest);
116-
break;
117-
case InvalidCurveAttackFullCommandConfig.ATTACK_COMMAND:
118-
attacker = new InvalidCurveAttackFull(elliptic);
119-
break;
120-
case HeartbleedCommandConfig.ATTACK_COMMAND:
121-
attacker = new HeartbleedAttack(heartbleed);
122-
break;
123-
case PoodleCommandConfig.ATTACK_COMMAND:
124-
attacker = new PoodleAttack(poodle);
125-
break;
126-
case PaddingOracleCommandConfig.ATTACK_COMMAND:
127-
attacker = new PaddingOracleAttack(paddingOracle);
128-
break;
129-
case WinshockCommandConfig.ATTACK_COMMAND:
130-
attacker = new WinshockAttack(winshock);
131-
break;
132-
case DtlsPaddingOracleAttackCommandConfig.ATTACK_COMMAND:
133-
attacker = new DtlsPaddingOracleAttack(dtlsPaddingOracleAttackTest);
134-
break;
135-
case ManInTheMiddleAttackCommandConfig.ATTACK_COMMAND:
136-
attacker = new ManInTheMiddleAttack(MitM_Attack);
137-
break;
138-
default:
139-
throw new ConfigurationException("No command found");
140-
}
141-
ConfigHandler configHandler = ConfigHandlerFactory.createConfigHandler("client");
142-
configHandler.initialize(generalConfig);
143-
144-
if (configHandler.printHelpForCommand(jc, attacker.getConfig())) {
145-
return;
146-
}
147-
148-
attacker.executeAttack(configHandler);
149-
150-
CommandConfig config = attacker.getConfig();
151-
if (config.getWorkflowOutput() != null && !config.getWorkflowOutput().isEmpty()) {
152-
logWorkflowTraces(attacker.getTlsContexts(), config.getWorkflowOutput());
153-
}
65+
GeneralConfig generalConfig = new GeneralConfig();
66+
JCommander jc = new JCommander(generalConfig);
67+
68+
MultiFuzzerConfig cmconfig = new MultiFuzzerConfig();
69+
jc.addCommand(MultiFuzzerConfig.COMMAND, cmconfig);
70+
71+
BleichenbacherCommandConfig bleichenbacherTest = new BleichenbacherCommandConfig();
72+
jc.addCommand(BleichenbacherCommandConfig.ATTACK_COMMAND, bleichenbacherTest);
73+
DtlsPaddingOracleAttackCommandConfig dtlsPaddingOracleAttackTest = new DtlsPaddingOracleAttackCommandConfig();
74+
jc.addCommand(DtlsPaddingOracleAttackCommandConfig.ATTACK_COMMAND, dtlsPaddingOracleAttackTest);
75+
InvalidCurveAttackCommandConfig ellipticTest = new InvalidCurveAttackCommandConfig();
76+
jc.addCommand(InvalidCurveAttackCommandConfig.ATTACK_COMMAND, ellipticTest);
77+
InvalidCurveAttackFullCommandConfig elliptic = new InvalidCurveAttackFullCommandConfig();
78+
jc.addCommand(InvalidCurveAttackFullCommandConfig.ATTACK_COMMAND, elliptic);
79+
HeartbleedCommandConfig heartbleed = new HeartbleedCommandConfig();
80+
jc.addCommand(HeartbleedCommandConfig.ATTACK_COMMAND, heartbleed);
81+
PaddingOracleCommandConfig paddingOracle = new PaddingOracleCommandConfig();
82+
jc.addCommand(PaddingOracleCommandConfig.ATTACK_COMMAND, paddingOracle);
83+
PoodleCommandConfig poodle = new PoodleCommandConfig();
84+
jc.addCommand(PoodleCommandConfig.ATTACK_COMMAND, poodle);
85+
WinshockCommandConfig winshock = new WinshockCommandConfig();
86+
jc.addCommand(WinshockCommandConfig.ATTACK_COMMAND, winshock);
87+
ServerCommandConfig server = new ServerCommandConfig();
88+
jc.addCommand(ServerCommandConfig.COMMAND, server);
89+
ClientCommandConfig client = new ClientCommandConfig();
90+
jc.addCommand(ClientCommandConfig.COMMAND, client);
91+
ManInTheMiddleAttackCommandConfig MitM_Attack = new ManInTheMiddleAttackCommandConfig();
92+
jc.addCommand(ManInTheMiddleAttackCommandConfig.ATTACK_COMMAND, MitM_Attack);
93+
ServerTestConfig stconfig = new ServerTestConfig();
94+
jc.addCommand(ServerTestConfig.COMMAND, stconfig);
95+
96+
jc.parse(args);
97+
98+
if (generalConfig.isHelp() || jc.getParsedCommand() == null) {
99+
jc.usage();
100+
return;
101+
}
102+
103+
Attacker attacker;
104+
switch (jc.getParsedCommand()) {
105+
case MultiFuzzerConfig.COMMAND:
106+
startMultiFuzzer(cmconfig, generalConfig, jc);
107+
return;
108+
case ServerCommandConfig.COMMAND:
109+
startSimpleTls(generalConfig, server, jc);
110+
return;
111+
case ClientCommandConfig.COMMAND:
112+
startSimpleTls(generalConfig, client, jc);
113+
return;
114+
case ServerTestConfig.COMMAND:
115+
ServerTestSuite st = new ServerTestSuite(stconfig, generalConfig);
116+
st.startTests();
117+
return;
118+
case BleichenbacherCommandConfig.ATTACK_COMMAND:
119+
attacker = new BleichenbacherAttack(bleichenbacherTest);
120+
break;
121+
case InvalidCurveAttackCommandConfig.ATTACK_COMMAND:
122+
attacker = new InvalidCurveAttack(ellipticTest);
123+
break;
124+
case InvalidCurveAttackFullCommandConfig.ATTACK_COMMAND:
125+
attacker = new InvalidCurveAttackFull(elliptic);
126+
break;
127+
case HeartbleedCommandConfig.ATTACK_COMMAND:
128+
attacker = new HeartbleedAttack(heartbleed);
129+
break;
130+
case PoodleCommandConfig.ATTACK_COMMAND:
131+
attacker = new PoodleAttack(poodle);
132+
break;
133+
case PaddingOracleCommandConfig.ATTACK_COMMAND:
134+
attacker = new PaddingOracleAttack(paddingOracle);
135+
break;
136+
case WinshockCommandConfig.ATTACK_COMMAND:
137+
attacker = new WinshockAttack(winshock);
138+
break;
139+
case DtlsPaddingOracleAttackCommandConfig.ATTACK_COMMAND:
140+
attacker = new DtlsPaddingOracleAttack(dtlsPaddingOracleAttackTest);
141+
break;
142+
case ManInTheMiddleAttackCommandConfig.ATTACK_COMMAND:
143+
attacker = new ManInTheMiddleAttack(MitM_Attack);
144+
break;
145+
default:
146+
throw new ConfigurationException("No command found");
147+
}
148+
ConfigHandler configHandler = ConfigHandlerFactory.createConfigHandler("client");
149+
configHandler.initialize(generalConfig);
150+
151+
if (configHandler.printHelpForCommand(jc, attacker.getConfig())) {
152+
return;
153+
}
154+
155+
attacker.executeAttack(configHandler);
156+
157+
CommandConfig config = attacker.getConfig();
158+
if (config.getWorkflowOutput() != null && !config.getWorkflowOutput().isEmpty()) {
159+
logWorkflowTraces(attacker.getTlsContexts(), config.getWorkflowOutput());
160+
}
154161
}
155162

156163
private static void startMultiFuzzer(MultiFuzzerConfig fuzzerConfig, GeneralConfig generalConfig, JCommander jc) {
157-
MultiFuzzer fuzzer = new MultiFuzzer(fuzzerConfig, generalConfig);
158-
if (fuzzerConfig.isHelp()) {
159-
jc.usage(MultiFuzzerConfig.ATTACK_COMMAND);
160-
return;
161-
}
162-
fuzzer.startFuzzer();
164+
MultiFuzzer fuzzer = new MultiFuzzer(fuzzerConfig, generalConfig);
165+
if (fuzzerConfig.isHelp()) {
166+
jc.usage(MultiFuzzerConfig.COMMAND);
167+
return;
168+
}
169+
fuzzer.startFuzzer();
163170
}
164171

165172
private static void startSimpleTls(GeneralConfig generalConfig, CommandConfig config, JCommander jc)
166-
throws JAXBException, IOException {
167-
ConfigHandler configHandler = ConfigHandlerFactory.createConfigHandler(jc.getParsedCommand());
168-
configHandler.initialize(generalConfig);
169-
170-
if (configHandler.printHelpForCommand(jc, config)) {
171-
return;
172-
}
173-
174-
TransportHandler transportHandler = configHandler.initializeTransportHandler(config);
175-
TlsContext tlsContext = configHandler.initializeTlsContext(config);
176-
WorkflowExecutor workflowExecutor = configHandler.initializeWorkflowExecutor(transportHandler, tlsContext);
177-
178-
try {
179-
workflowExecutor.executeWorkflow();
180-
} catch (WorkflowExecutionException ex) {
181-
LOGGER.info(ex.getLocalizedMessage(), ex);
182-
LOGGER.log(LogLevel.CONSOLE_OUTPUT,
183-
"The TLS protocol flow was not executed completely, follow the debug messages for more information.");
184-
}
185-
186-
transportHandler.closeConnection();
187-
188-
if (config.getWorkflowOutput() != null && !config.getWorkflowOutput().isEmpty()) {
189-
FileOutputStream fos = new FileOutputStream(config.getWorkflowOutput());
190-
WorkflowTraceSerializer.write(fos, tlsContext.getWorkflowTrace());
191-
}
173+
throws JAXBException, IOException {
174+
ConfigHandler configHandler = ConfigHandlerFactory.createConfigHandler(jc.getParsedCommand());
175+
configHandler.initialize(generalConfig);
176+
177+
if (configHandler.printHelpForCommand(jc, config)) {
178+
return;
179+
}
180+
181+
TransportHandler transportHandler = configHandler.initializeTransportHandler(config);
182+
TlsContext tlsContext = configHandler.initializeTlsContext(config);
183+
WorkflowExecutor workflowExecutor = configHandler.initializeWorkflowExecutor(transportHandler, tlsContext);
184+
185+
try {
186+
workflowExecutor.executeWorkflow();
187+
} catch (WorkflowExecutionException ex) {
188+
LOGGER.info(ex.getLocalizedMessage(), ex);
189+
LOGGER.log(LogLevel.CONSOLE_OUTPUT,
190+
"The TLS protocol flow was not executed completely, follow the debug messages for more information.");
191+
}
192+
193+
transportHandler.closeConnection();
194+
195+
if (config.getWorkflowOutput() != null && !config.getWorkflowOutput().isEmpty()) {
196+
FileOutputStream fos = new FileOutputStream(config.getWorkflowOutput());
197+
WorkflowTraceSerializer.write(fos, tlsContext.getWorkflowTrace());
198+
}
192199
}
193200

194201
private static void logWorkflowTraces(List<TlsContext> tlsContexts, String fileName) throws JAXBException,
195-
FileNotFoundException, IOException {
196-
int i = 0;
197-
for (TlsContext context : tlsContexts) {
198-
i++;
199-
FileOutputStream fos = new FileOutputStream(fileName + i);
200-
WorkflowTraceSerializer.write(fos, context.getWorkflowTrace());
201-
}
202+
FileNotFoundException, IOException {
203+
int i = 0;
204+
for (TlsContext context : tlsContexts) {
205+
i++;
206+
FileOutputStream fos = new FileOutputStream(fileName + i);
207+
WorkflowTraceSerializer.write(fos, context.getWorkflowTrace());
208+
}
202209
}
203210
}

TestSuite/src/main/java/de/rub/nds/tlsattacker/testsuite/Main.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static void main(String[] args) throws Exception {
2626
JCommander jc = new JCommander(generalConfig);
2727

2828
ServerTestConfig stconfig = new ServerTestConfig();
29-
jc.addCommand(ServerTestConfig.ATTACK_COMMAND, stconfig);
29+
jc.addCommand(ServerTestConfig.COMMAND, stconfig);
3030

3131
jc.parse(args);
3232

@@ -36,7 +36,7 @@ public static void main(String[] args) throws Exception {
3636
}
3737

3838
switch (jc.getParsedCommand()) {
39-
case ServerTestConfig.ATTACK_COMMAND:
39+
case ServerTestConfig.COMMAND:
4040
ServerTestSuite st = new ServerTestSuite(stconfig, generalConfig);
4141
st.startTests();
4242
return;

0 commit comments

Comments
 (0)