Skip to content

Commit e6c518f

Browse files
authored
Merge branch 'master' into fuzzerfixes
2 parents 75e3b76 + 07564fe commit e6c518f

File tree

14 files changed

+57
-17
lines changed

14 files changed

+57
-17
lines changed

README.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,27 @@ In order to compile and use TLS-Attacker, you need to have Java and Maven instal
1313
```bash
1414
$ sudo apt-get install maven
1515
```
16-
TLS-Attacker currently needs Java JDK 8 to run. If you have the correct Java version you can run the maven command from the TLS-Attacker directory:
16+
TLS-Attacker currently needs Java JDK 8 to run. Since version 3.5.0, TLS-Attacker also required ASN.1-Tool and X509-Attacker as a dependency.
17+
18+
Installing ASN.1 Tool:
19+
```bash
20+
$ git clone https://github.com/RUB-NDS/ASN.1-Tool
21+
$ cd ASN.1-Tool
22+
$ mvn clean install
23+
$ cd ..
24+
25+
```
26+
27+
Installing X509-Attacker:
28+
```bash
29+
$ git clone https://github.com/RUB-NDS/x509-Attacker
30+
$ cd X509-Attacker
31+
$ mvn clean install
32+
$ cd ..
33+
```
34+
35+
36+
If you have the correct Java version you can run the maven command from the TLS-Attacker directory:
1737
```bash
1838
$ cd TLS-Attacker
1939
$ mvn clean install

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/handler/DHClientKeyExchangeHandler.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import de.rub.nds.tlsattacker.core.protocol.preparator.DHClientKeyExchangePreparator;
1515
import de.rub.nds.tlsattacker.core.protocol.serializer.DHClientKeyExchangeSerializer;
1616
import de.rub.nds.tlsattacker.core.state.TlsContext;
17+
import java.math.BigInteger;
1718

1819
/**
1920
* Handler for DH and DHE ClientKeyExchange messages
@@ -44,7 +45,12 @@ public DHClientKeyExchangeSerializer getSerializer(DHClientKeyExchangeMessage me
4445
public void adjustTLSContext(DHClientKeyExchangeMessage message) {
4546
adjustPremasterSecret(message);
4647
adjustMasterSecret(message);
48+
adjustClientPublicKey(message);
4749
setRecordCipher();
4850
spawnNewSession();
4951
}
52+
53+
private void adjustClientPublicKey(DHClientKeyExchangeMessage message) {
54+
tlsContext.setClientDhPublicKey(new BigInteger(message.getPublicKey().getValue()));
55+
}
5056
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/socket/TlsAttackerSocket.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ public void send(byte[] bytes) {
8080
ApplicationMessage message = new ApplicationMessage();
8181
ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
8282
byte[] sendingBytes = new byte[16384];
83-
int actuallyRead = 0;
83+
int actuallyRead;
8484
do {
85+
actuallyRead = 0;
8586
try {
8687
actuallyRead = stream.read(sendingBytes);
8788
if (actuallyRead > 0) {

TLS-Core/src/test/java/de/rub/nds/tlsattacker/core/protocol/handler/DHClientKeyExchangeHandlerTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import de.rub.nds.tlsattacker.core.protocol.serializer.DHClientKeyExchangeSerializer;
1919
import de.rub.nds.tlsattacker.core.record.layer.TlsRecordLayer;
2020
import de.rub.nds.tlsattacker.core.state.TlsContext;
21+
import java.math.BigInteger;
2122
import org.junit.After;
2223
import static org.junit.Assert.*;
2324
import org.junit.Before;
@@ -69,6 +70,7 @@ public void testGetSerializer() {
6970
@Test
7071
public void testAdjustTLSContext() {
7172
DHClientKeyExchangeMessage message = new DHClientKeyExchangeMessage();
73+
message.setPublicKey(new byte[] { 1 });
7274
message.prepareComputations();
7375
message.getComputations()
7476
.setPremasterSecret(
@@ -90,5 +92,6 @@ public void testAdjustTLSContext() {
9092
ArrayConverter
9193
.hexStringToByteArray("4a0a7f6a0598acb36684359e1a19d848ab03b3ba1167430471166d94dcf8315d1c4290c9d9e40c50ae834df7b4f4bdef"),
9294
context.getMasterSecret());
95+
assertTrue(context.getClientDhPublicKey().equals(BigInteger.ONE));
9396
}
9497
}

Transport/src/main/java/de/rub/nds/tlsattacker/transport/TimeableTransportHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111

1212
public interface TimeableTransportHandler {
1313

14-
public abstract long getLastMeasurement();
14+
public abstract Long getLastMeasurement();
1515
}

Transport/src/main/java/de/rub/nds/tlsattacker/transport/TransportHandler.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,13 @@ public long getTimeout() {
129129
public void setTimeout(long timeout) {
130130
this.timeout = timeout;
131131
}
132+
133+
public void setIsInStreamTerminating(boolean isInStreamTerminating) {
134+
this.isInStreamTerminating = isInStreamTerminating;
135+
}
136+
137+
public boolean isIsInStreamTerminating() {
138+
return isInStreamTerminating;
139+
}
140+
132141
}

Transport/src/main/java/de/rub/nds/tlsattacker/transport/TransportHandlerFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public static TransportHandler createTransportHandler(Connection con) {
6363
}
6464
case TCP_PROXY_TIMING:
6565
if (localConEndType == ConnectionEndType.CLIENT) {
66-
return new TimingProxyClientTcpTransportHandler(timeout, con.getIp(), con.getPort());
66+
return new TimingProxyClientTcpTransportHandler(con);
6767
} else {
6868
throw new UnsupportedOperationException(
6969
"TCP_PROXY_TIMING for server sockets is currently not supported");

Transport/src/main/java/de/rub/nds/tlsattacker/transport/tcp/ClientTcpTransportHandler.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,7 @@ public SocketState getSocketState() throws InvalidTransportHandlerStateException
8787
if (socket.getInputStream().available() > 0) {
8888
return SocketState.DATA_AVAILABLE;
8989
}
90-
socket.setSoTimeout(1);
9190
int read = socket.getInputStream().read();
92-
socket.setSoTimeout((int) timeout);
9391
if (read == -1) {
9492
return SocketState.CLOSED;
9593
} else {

Transport/src/main/java/de/rub/nds/tlsattacker/transport/tcp/proxy/TimingProxyClientTcpTransportHandler.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class TimingProxyClientTcpTransportHandler extends TransportHandler imple
3535
protected int proxyDataPort = 4444;
3636
protected String proxyControlHostName = "127.0.0.1";
3737
protected int proxyControlPort = 5555;
38-
protected long measurement = 0;
38+
protected Long measurement = null;
3939

4040
@Override
4141
public byte[] fetchData() throws IOException {
@@ -60,20 +60,23 @@ public TimingProxyClientTcpTransportHandler(Connection connection) {
6060
this.proxyDataPort = connection.getProxyDataPort();
6161
this.proxyControlHostName = connection.getProxyControlHostname();
6262
this.proxyControlPort = connection.getProxyControlPort();
63+
setIsInStreamTerminating(false);
6364
}
6465

6566
public TimingProxyClientTcpTransportHandler(long timeout, String hostname, int port) {
6667
super(timeout, ConnectionEndType.CLIENT);
6768
this.hostname = hostname;
6869
this.port = port;
70+
setIsInStreamTerminating(false);
6971
}
7072

7173
@Override
72-
public void setProxy(String dataChanelHost, int dataChanelPort, String controlChanelHost, int controlChanelPort) {
73-
proxyDataHostName = dataChanelHost;
74+
public void setProxy(String dataChannelHost, int dataChanelPort, String controlChannelHost, int controlChanelPort) {
75+
proxyDataHostName = dataChannelHost;
7476
proxyDataPort = dataChanelPort;
75-
proxyControlHostName = controlChanelHost;
77+
proxyControlHostName = controlChannelHost;
7678
proxyControlPort = controlChanelPort;
79+
7780
}
7881

7982
@Override
@@ -149,7 +152,7 @@ public SocketState getSocketState() throws InvalidTransportHandlerStateException
149152
}
150153

151154
@Override
152-
public long getLastMeasurement() {
155+
public Long getLastMeasurement() {
153156
return measurement;
154157
}
155158
}

Transport/src/main/java/de/rub/nds/tlsattacker/transport/tcp/timing/TimingClientTcpTransportHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
public class TimingClientTcpTransportHandler extends ClientTcpTransportHandler implements TimeableTransportHandler {
1818

19-
private long measurement = 0;
19+
private Long measurement = null;
2020
private boolean prependEarlyReadData = false;
2121
private int earlyReadData = 0;
2222

@@ -54,7 +54,7 @@ public byte[] fetchData() throws IOException {
5454
}
5555

5656
@Override
57-
public long getLastMeasurement() {
57+
public Long getLastMeasurement() {
5858
return measurement;
5959
}
6060

0 commit comments

Comments
 (0)