AliceDroid – Wifi password recovery tool per Android

Ho creato questa semplice app, la versione Android del tool Alicekeygen. Esattamente come la versione desktop questa applicazione permette il recupero immediato della password wifi per le reti del tipo Alice-xxxxxxxx. I router supportati sono quelli della famiglia con firmware AGPF.

device-2015-07-03-220912

L’applicazione è stata realizzata con AndroidStudio, l’IDE ufficiale Google per lo sviluppo su piattaforma Android. L’algoritmo del tool originale è scritto in C, il porting in Java ha prodotto un algoritmo identico per funzionalità anche se differente nella forma (in Java mancano i puntatori, regole di casting diverse, etc..etc..).

Il tool originale era una semplice applicazione da riga di comando: per recuperare la password occorreva specificare l’SSID della rete, il MAC address della rete stessa e il file dei magic number. Utilizzare questa app è invece molto più semplice e intuitivo: le reti rilevate vengono semplicemente elencate nella schermata principale.

device-2015-07-03-223309

Le reti del tipo “Alice-xxxxxxxx” vengono colorate di rosso ad indicare che sono quelle supportate dall’applicazione. Selezionando una di esse verrà aperta la schermata delle password candidate da provare per quella rete:

device-2015-07-03-223320

 

Per provare una password è sufficiente copiarla nella clipboard (cliccandoci sopra) ed aprire le impostazioni di rete per effettuare l’accesso.

L’app è gratuita e disponibile in Google Play

googleplay

 

 

 

Algoritmo in Java

Questo il porting Java dell’algoritmo originale:

String seriesXserial = "" + String.format("%05d", series) + "X" + String.format("%07d", serialsSet[j]);

/* calcola l'hash SHA256(fixedPadding + serie-X-seriale + MAC) */

try
{
   MessageDigest digest = MessageDigest.getInstance("SHA-256");
   digest.update(fixedPadding, 0, fixedPadding.length);
   digest.update(seriesXserial.getBytes(), 0, seriesXserial.getBytes().length);
   digest.update(macAddr, 0, macAddr.length);
   byte[] hash = digest.digest();

   char[] wpa = new char[24];
   StringBuilder sb = new StringBuilder();
   for (int i = 0; i < 24; i++)
   {
      int s = hash[i] & 0xFF;
      wpa[i] = charset[s];
      sb.append(wpa[i]);
   }

   if (passwordList.contains(sb.toString()) == false)
   {
      passwordList.add(sb.toString());
   }
}
catch(Exception e)
{
    return false;
}

Leave a Reply

avatar
wpDiscuz