Skip to content

Commit feba378

Browse files
authored
Merge pull request #337 from tls-attacker/feat/independent-scanner-config
feat: Make ScannerConfig independent from TLS-Attacker
2 parents 580899e + dd64df9 commit feba378

File tree

18 files changed

+87
-74
lines changed

18 files changed

+87
-74
lines changed

Scanner-Core/src/main/java/de/rub/nds/scanner/core/config/ScannerConfig.java renamed to Scanner-Core/src/main/java/de/rub/nds/scanner/core/config/ExecutorConfig.java

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@
1111
import com.beust.jcommander.Parameter;
1212
import de.rub.nds.scanner.core.constants.ProbeType;
1313
import de.rub.nds.scanner.core.constants.ScannerDetail;
14-
import de.rub.nds.tlsattacker.core.config.TLSDelegateConfig;
15-
import de.rub.nds.tlsattacker.core.config.delegate.GeneralDelegate;
1614
import java.util.Arrays;
1715
import java.util.List;
1816

19-
public abstract class ScannerConfig extends TLSDelegateConfig {
17+
public final class ExecutorConfig {
2018

2119
@Parameter(
2220
names = "-noColor",
@@ -48,11 +46,21 @@ public abstract class ScannerConfig extends TLSDelegateConfig {
4846
description = "The timeout for each probe in ms (default 1800000)")
4947
private int probeTimeout = 1800000;
5048

51-
protected List<ProbeType> probes = null;
49+
@Parameter(
50+
names = "-parallelProbes",
51+
required = false,
52+
description =
53+
"Defines the number of threads responsible for different probes. If set to 1, only one specific probe can be run in time.")
54+
private int parallelProbes = 1;
5255

53-
public ScannerConfig(GeneralDelegate delegate) {
54-
super(delegate);
55-
}
56+
@Parameter(
57+
names = "-threads",
58+
required = false,
59+
description =
60+
"The maximum number of threads used to execute probes located in the queue.")
61+
private int overallThreads = 1;
62+
63+
private List<ProbeType> probes = null;
5664

5765
public ScannerDetail getScanDetail() {
5866
return scanDetail;
@@ -109,4 +117,24 @@ public String getOutputFile() {
109117
public void setOutputFile(String outputFile) {
110118
this.outputFile = outputFile;
111119
}
120+
121+
public int getParallelProbes() {
122+
return parallelProbes;
123+
}
124+
125+
public void setParallelProbes(int parallelProbes) {
126+
this.parallelProbes = parallelProbes;
127+
}
128+
129+
public int getOverallThreads() {
130+
return overallThreads;
131+
}
132+
133+
public void setOverallThreads(int overallThreads) {
134+
this.overallThreads = overallThreads;
135+
}
136+
137+
public boolean isMultithreaded() {
138+
return (parallelProbes > 1 || overallThreads > 1);
139+
}
112140
}

Scanner-Core/src/main/java/de/rub/nds/scanner/core/execution/ThreadedScanJobExecutor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
package de.rub.nds.scanner.core.execution;
1010

1111
import de.rub.nds.scanner.core.afterprobe.AfterProbe;
12-
import de.rub.nds.scanner.core.config.ScannerConfig;
12+
import de.rub.nds.scanner.core.config.ExecutorConfig;
1313
import de.rub.nds.scanner.core.passive.ExtractedValueContainer;
1414
import de.rub.nds.scanner.core.passive.TrackableValue;
1515
import de.rub.nds.scanner.core.probe.ScannerProbe;
@@ -34,7 +34,7 @@ public class ThreadedScanJobExecutor<Report extends ScanReport> extends ScanJobE
3434

3535
private static final Logger LOGGER = LogManager.getLogger();
3636

37-
private final ScannerConfig config;
37+
private final ExecutorConfig config;
3838

3939
private final ScanJob scanJob;
4040

@@ -48,7 +48,7 @@ public class ThreadedScanJobExecutor<Report extends ScanReport> extends ScanJobE
4848
private final Semaphore semaphore = new Semaphore(0);
4949

5050
public ThreadedScanJobExecutor(
51-
ScannerConfig config, ScanJob scanJob, int threadCount, String prefix) {
51+
ExecutorConfig config, ScanJob scanJob, int threadCount, String prefix) {
5252
long probeTimeout = config.getProbeTimeout();
5353
executor =
5454
new ScannerThreadPoolExecutor(
@@ -58,7 +58,7 @@ public ThreadedScanJobExecutor(
5858
}
5959

6060
public ThreadedScanJobExecutor(
61-
ScannerConfig config, ScanJob scanJob, ThreadPoolExecutor executor) {
61+
ExecutorConfig config, ScanJob scanJob, ThreadPoolExecutor executor) {
6262
this.executor = executor;
6363
this.config = config;
6464
this.scanJob = scanJob;

TLS-Client-Scanner/src/main/java/de/rub/nds/tlsscanner/clientscanner/Main.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,10 @@ public static void main(String[] args) throws IOException {
4747
+ ((System.currentTimeMillis() - time) / 1000)
4848
+ "s\n"
4949
+ report.getFullReport(
50-
config.getReportDetail(), !config.isNoColor()));
51-
if (config.isWriteReportToFile()) {
52-
File outputFile = new File(config.getOutputFile());
50+
config.getExecutorConfig().getReportDetail(),
51+
!config.getExecutorConfig().isNoColor()));
52+
if (config.getExecutorConfig().isWriteReportToFile()) {
53+
File outputFile = new File(config.getExecutorConfig().getOutputFile());
5354
ClientReportSerializer.serialize(outputFile, report);
5455
}
5556
} catch (ConfigurationException e) {

TLS-Client-Scanner/src/main/java/de/rub/nds/tlsscanner/clientscanner/execution/TlsClientScanner.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@ public final class TlsClientScanner extends TlsScanner {
6767
private boolean closeAfterFinishParallel;
6868

6969
public TlsClientScanner(ClientScannerConfig config) {
70-
super(config.getProbes());
70+
super(config.getExecutorConfig().getProbes());
7171
this.config = config;
72-
parallelExecutor = new ParallelExecutor(config.getOverallThreads(), 3);
72+
parallelExecutor = new ParallelExecutor(config.getExecutorConfig().getOverallThreads(), 3);
7373
closeAfterFinishParallel = true;
7474
setCallbacks();
7575
fillProbeLists();
7676
}
7777

7878
public TlsClientScanner(ClientScannerConfig config, ParallelExecutor parallelExecutor) {
79-
super(config.getProbes());
79+
super(config.getExecutorConfig().getProbes());
8080
this.config = config;
8181
this.parallelExecutor = parallelExecutor;
8282
closeAfterFinishParallel = false;
@@ -142,7 +142,11 @@ public ClientReport scan() {
142142
ClientReport clientReport = new ClientReport();
143143
ScanJob job = new ScanJob(probeList, afterList);
144144
ThreadedScanJobExecutor<ClientReport> executor =
145-
new ThreadedScanJobExecutor(config, job, config.getParallelProbes(), "");
145+
new ThreadedScanJobExecutor(
146+
config.getExecutorConfig(),
147+
job,
148+
config.getExecutorConfig().getParallelProbes(),
149+
"");
146150
long scanStartTime = System.currentTimeMillis();
147151
clientReport = executor.execute(clientReport);
148152
long scanEndTime = System.currentTimeMillis();
@@ -159,7 +163,8 @@ public ClientReport scan() {
159163
}
160164

161165
private void adjustServerPort() {
162-
if (config.isMultithreaded() && config.getServerDelegate().getPort() != 0) {
166+
if (config.getExecutorConfig().isMultithreaded()
167+
&& config.getServerDelegate().getPort() != 0) {
163168
LOGGER.warn(
164169
"Configured explicit server port, but also multithreaded execution. Ignoring explicit port.");
165170
config.getServerDelegate().setPort(0);

TLS-Client-Scanner/src/main/java/de/rub/nds/tlsscanner/clientscanner/probe/CipherSuiteProbe.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ private List<CipherSuite> getToTestCipherSuitesByVersion(ProtocolVersion version
193193
Arrays.asList(CipherSuite.values()).stream()
194194
.filter(suite -> suite.isRealCipherSuite())
195195
.collect(Collectors.toList());
196-
switch (scannerConfig.getScanDetail()) {
196+
switch (scannerConfig.getExecutorConfig().getScanDetail()) {
197197
case QUICK:
198198
case NORMAL:
199199
return filterPskCipherSuites(filterForVersionSupported(realCipherSuites, version));

TLS-Client-Scanner/src/main/java/de/rub/nds/tlsscanner/clientscanner/probe/PaddingOracleProbe.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class PaddingOracleProbe extends TlsClientProbe<ClientScannerConfig, Clie
5454
public PaddingOracleProbe(
5555
ParallelExecutor parallelExecutor, ClientScannerConfig scannerConfig) {
5656
super(parallelExecutor, TlsProbeType.PADDING_ORACLE, scannerConfig);
57-
this.scanDetail = scannerConfig.getScanDetail();
57+
this.scanDetail = scannerConfig.getExecutorConfig().getScanDetail();
5858
this.numberOfIterations =
5959
scanDetail.isGreaterEqualTo(ScannerDetail.NORMAL)
6060
? NUMBER_OF_ITERATIONS

TLS-Scanner-Core/src/main/java/de/rub/nds/tlsscanner/core/config/TlsScannerConfig.java

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,46 +10,36 @@
1010

1111
import com.beust.jcommander.Parameter;
1212
import com.beust.jcommander.ParametersDelegate;
13-
import de.rub.nds.scanner.core.config.ScannerConfig;
13+
import de.rub.nds.scanner.core.config.ExecutorConfig;
14+
import de.rub.nds.tlsattacker.core.config.TLSDelegateConfig;
1415
import de.rub.nds.tlsattacker.core.config.delegate.GeneralDelegate;
1516
import de.rub.nds.tlsattacker.core.config.delegate.StarttlsDelegate;
1617
import de.rub.nds.tlsscanner.core.config.delegate.CallbackDelegate;
1718
import de.rub.nds.tlsscanner.core.config.delegate.DtlsDelegate;
1819

19-
public class TlsScannerConfig extends ScannerConfig {
20+
public class TlsScannerConfig extends TLSDelegateConfig {
2021

2122
@Parameter(
2223
names = "-timeout",
2324
required = false,
2425
description = "The timeout used for the scans in ms (default 1000)")
2526
private int timeout = 1000;
2627

27-
@Parameter(
28-
names = "-parallelProbes",
29-
required = false,
30-
description =
31-
"Defines the number of threads responsible for different TLS probes. If set to 1, only one specific TLS probe (e.g., TLS version scan) can be run in time.")
32-
private int parallelProbes = 1;
33-
34-
@Parameter(
35-
names = "-threads",
36-
required = false,
37-
description =
38-
"The maximum number of threads used to execute TLS probes located in the scanning queue. This is also the maximum number of threads communicating with the analyzed peer.")
39-
private int overallThreads = 1;
40-
4128
@ParametersDelegate private DtlsDelegate dtlsDelegate;
4229

4330
@ParametersDelegate private StarttlsDelegate startTlsDelegate;
4431

4532
@ParametersDelegate private CallbackDelegate callbackDelegate;
4633

34+
@ParametersDelegate private ExecutorConfig executorConfig;
35+
4736
public TlsScannerConfig(GeneralDelegate delegate) {
4837
super(delegate);
4938

5039
this.dtlsDelegate = new DtlsDelegate();
5140
this.startTlsDelegate = new StarttlsDelegate();
5241
this.callbackDelegate = new CallbackDelegate();
42+
this.executorConfig = new ExecutorConfig();
5343

5444
addDelegate(dtlsDelegate);
5545
addDelegate(startTlsDelegate);
@@ -68,31 +58,15 @@ public CallbackDelegate getCallbackDelegate() {
6858
return callbackDelegate;
6959
}
7060

71-
public int getTimeout() {
72-
return timeout;
61+
public ExecutorConfig getExecutorConfig() {
62+
return executorConfig;
7363
}
7464

75-
public int getParallelProbes() {
76-
return parallelProbes;
77-
}
78-
79-
public int getOverallThreads() {
80-
return overallThreads;
81-
}
82-
83-
public boolean isMultithreaded() {
84-
return (parallelProbes > 1 || overallThreads > 1);
65+
public int getTimeout() {
66+
return timeout;
8567
}
8668

8769
public void setTimeout(int timeout) {
8870
this.timeout = timeout;
8971
}
90-
91-
public void setParallelProbes(int parallelProbes) {
92-
this.parallelProbes = parallelProbes;
93-
}
94-
95-
public void setOverallThreads(int overallThreads) {
96-
this.overallThreads = overallThreads;
97-
}
9872
}

TLS-Scanner-Core/src/test/java/de/rub/nds/tlsscanner/core/probe/requirements/TestProbeAlpn.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* TLS-Scanner - A TLS configuration and analysis tool based on TLS-Attacker
33
*
4-
* Copyright 2017-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH
4+
* Copyright 2017-2023 Ruhr University Bochum, Paderborn University, Technology Innovation Institute, and Hackmanit GmbH
55
*
66
* Licensed under Apache License, Version 2.0
77
* http://www.apache.org/licenses/LICENSE-2.0.txt

TLS-Scanner-Core/src/test/java/de/rub/nds/tlsscanner/core/probe/requirements/TestProbeBasic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* TLS-Scanner - A TLS configuration and analysis tool based on TLS-Attacker
33
*
4-
* Copyright 2017-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH
4+
* Copyright 2017-2023 Ruhr University Bochum, Paderborn University, Technology Innovation Institute, and Hackmanit GmbH
55
*
66
* Licensed under Apache License, Version 2.0
77
* http://www.apache.org/licenses/LICENSE-2.0.txt

TLS-Scanner-Core/src/test/java/de/rub/nds/tlsscanner/core/probe/requirements/TestProbeCca.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* TLS-Scanner - A TLS configuration and analysis tool based on TLS-Attacker
33
*
4-
* Copyright 2017-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH
4+
* Copyright 2017-2023 Ruhr University Bochum, Paderborn University, Technology Innovation Institute, and Hackmanit GmbH
55
*
66
* Licensed under Apache License, Version 2.0
77
* http://www.apache.org/licenses/LICENSE-2.0.txt

0 commit comments

Comments
 (0)