/*
* Copyright 2012 Rui Araújo, Luís Fonseca
*
* This file is part of Router Keygen.
*
* Router Keygen is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Router Keygen is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Router Keygen. If not, see <http://www.gnu.org/licenses/>.
*/
package org.exobel.routerkeygen.algorithms;
import android.os.Parcel;
import android.os.Parcelable;
import org.exobel.routerkeygen.R;
import java.util.List;
/**
* <b>This only calculates the keys for some WLAN_xx</b>
* <br>
* <p/>
* Many WLAN_XX don't use this algorithm.
* Code by Kampanita
*/
public class Wlan2Keygen extends Keygen {
public static final Parcelable.Creator<Wlan2Keygen> CREATOR = new Parcelable.Creator<Wlan2Keygen>() {
public Wlan2Keygen createFromParcel(Parcel in) {
return new Wlan2Keygen(in);
}
public Wlan2Keygen[] newArray(int size) {
return new Wlan2Keygen[size];
}
};
final private String ssidIdentifier;
public Wlan2Keygen(String ssid, String mac) {
super(ssid, mac);
ssidIdentifier = ssid.substring(ssid.length() - 2);
}
private Wlan2Keygen(Parcel in) {
super(in);
ssidIdentifier = in.readString();
}
@Override
public List<String> getKeys() {
char[] key = new char[26];
if (getMacAddress().length() != 12) {
setErrorCode(R.string.msg_errpirelli);
return null;
}
key[0] = getMacAddress().charAt(10);
key[1] = getMacAddress().charAt(11);
key[2] = getMacAddress().charAt(0);
key[3] = getMacAddress().charAt(1);
key[4] = getMacAddress().charAt(8);
key[5] = getMacAddress().charAt(9);
key[6] = getMacAddress().charAt(2);
key[7] = getMacAddress().charAt(3);
key[8] = getMacAddress().charAt(4);
key[9] = getMacAddress().charAt(5);
key[10] = getMacAddress().charAt(6);
key[11] = getMacAddress().charAt(7);
key[12] = getMacAddress().charAt(10);
key[13] = getMacAddress().charAt(11);
key[14] = getMacAddress().charAt(8);
key[15] = getMacAddress().charAt(9);
key[16] = getMacAddress().charAt(2);
key[17] = getMacAddress().charAt(3);
key[18] = getMacAddress().charAt(4);
key[19] = getMacAddress().charAt(5);
key[20] = getMacAddress().charAt(6);
key[21] = getMacAddress().charAt(7);
key[22] = getMacAddress().charAt(0);
key[23] = getMacAddress().charAt(1);
key[24] = getMacAddress().charAt(4);
key[25] = getMacAddress().charAt(5);
int max = 9;
String begin = ssidIdentifier.substring(0, 1);
int primer_n = Integer.parseInt(begin, 16);
if (primer_n > max) {
String cadena = String.valueOf(key, 0, 2);
int value = Integer.parseInt(cadena, 16);
value = value - 1;
String cadena2 = Integer.toHexString(value);
if (cadena2.length() < 2)
cadena2 = "0" + cadena2;
key[0] = cadena2.charAt(0);
key[1] = cadena2.charAt(1);
}
addPassword(String.valueOf(key, 0, 26));
return getResults();
}
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeString(ssidIdentifier);
}
}