package org.exobel.routerkeygen.algorithms;
import android.os.Parcel;
import android.os.Parcelable;
import org.exobel.routerkeygen.R;
import java.util.List;
import java.util.Locale;
public class ArcadyanKeygen extends Keygen {
public static final Parcelable.Creator<ArcadyanKeygen> CREATOR = new Parcelable.Creator<ArcadyanKeygen>() {
public ArcadyanKeygen createFromParcel(Parcel in) {
return new ArcadyanKeygen(in);
}
public ArcadyanKeygen[] newArray(int size) {
return new ArcadyanKeygen[size];
}
};
public ArcadyanKeygen(String ssid, String mac) {
super(ssid, mac);
}
private ArcadyanKeygen(Parcel in) {
super(in);
}
@Override
public int getSupportState() {
if (getSsidName().matches(
"(Arcor|EasyBox|Vodafone|WLAN)(-| )[0-9a-fA-F]{6}")
|| getSsidName().matches("Vodafone[0-9a-zA-Z]{4}"))
return SUPPORTED;
return UNLIKELY_SUPPORTED;
}
@Override
public List<String> getKeys() {
final String mac = getMacAddress();
if (mac.length() != 12) {
setErrorCode(R.string.msg_errpirelli);
return null;
}
String C1 = Integer.toString(Integer.parseInt(mac.substring(8), 16));
while (C1.length() < 5)
C1 = "0" + C1;
final char S7 = C1.charAt(1);
final char S8 = C1.charAt(2);
final char S9 = C1.charAt(3);
final char S10 = C1.charAt(4);
final char M9 = mac.charAt(8);
final char M10 = mac.charAt(9);
final char M11 = mac.charAt(10);
final char M12 = mac.charAt(11);
final String tmpK1 = Integer.toHexString(Character.digit(S7, 16)
+ Character.digit(S8, 16) + Character.digit(M11, 16)
+ Character.digit(M12, 16));
final String tmpK2 = Integer.toHexString(Character.digit(M9, 16)
+ Character.digit(M10, 16) + Character.digit(S9, 16)
+ Character.digit(S10, 16));
final char K1 = tmpK1.charAt(tmpK1.length() - 1);
final char K2 = tmpK2.charAt(tmpK2.length() - 1);
final String X1 = Integer.toHexString(Character.digit(K1, 16)
^ Character.digit(S10, 16));
final String X2 = Integer.toHexString(Character.digit(K1, 16)
^ Character.digit(S9, 16));
final String X3 = Integer.toHexString(Character.digit(K1, 16)
^ Character.digit(S8, 16));
final String Y1 = Integer.toHexString(Character.digit(K2, 16)
^ Character.digit(M10, 16));
final String Y2 = Integer.toHexString(Character.digit(K2, 16)
^ Character.digit(M11, 16));
final String Y3 = Integer.toHexString(Character.digit(K2, 16)
^ Character.digit(M12, 16));
final String Z1 = Integer.toHexString(Character.digit(M11, 16)
^ Character.digit(S10, 16));
final String Z2 = Integer.toHexString(Character.digit(M12, 16)
^ Character.digit(S9, 16));
final String Z3 = Integer.toHexString(Character.digit(K1, 16)
^ Character.digit(K2, 16));
final String wpaKey = X1 + Y1 + Z1 + X2 + Y2 + Z2 + X3 + Y3 + Z3;
addPassword(wpaKey.toUpperCase(Locale.getDefault()));
if (wpaKey.indexOf('0') != -1) {
addPassword(wpaKey.replace("0", "1").toUpperCase(Locale.getDefault()));
}
return getResults();
}
}