Newsgroup: it.comp.java
Titolo: Perché non funziona?

Un  mio amico  sistemista  mi  ha sfidato,  dicendo  che  non sarei  mai
riuscito a trovare la password di un suo swich cisco. Ora, poiché questo
aggeggio accetta connessioni telnet attraverso  la rete locale in cui si
trova anche il mio pc ho pensato di scrivere un programmino che continui
a connettersi al cisco cambiano ogni volta la password fino a quando non
imbrocca quella giusta.
La mia idea è stata la seguente: creo una classe Password che ogni volta
mi ritorni una  stringa contenente la possibile  password. Questa classe
prevede una password lunga da uno  a otto caratteri. Ad ogni carattere è
associato un elemento di un array  di int contenente il codice ASCII del
carattere. Leggendo i valori il metodo ricostruisce la password e poi la
ritorna. Infine  incrementa gli int con  i codici del caratteri.  Il mio
problema è  che deve esserci  da qualche parte  un errore perché  non va
oltre  le  password a  due  caratteri.  Qualcuno  mi  sa dire  dove  sta
l'errore?
class Password {
        private int caratteri[];
        private StringBuffer stringa;
        private boolean vuoto;
        Password() {
                caratteri = new int[8];
                caratteri[0] = -1;
                caratteri[1] = -1;
                caratteri[2] = -1;
                caratteri[3] = -1;
                caratteri[4] = -1;
                caratteri[5] = -1;
                caratteri[6] = -1;
                caratteri[7] = 0;
                vuoto = false;
        }
        public boolean vuoto() {
                return vuoto;
        }
        public String ritorna() {
                stringa = new StringBuffer(8);
                if(caratteri[0]!=-1) stringa.append((char) caratteri[0]);
                if(caratteri[1]!=-1) stringa.append((char) caratteri[1]);
                if(caratteri[2]!=-1) stringa.append((char) caratteri[2]);
                if(caratteri[3]!=-1) stringa.append((char) caratteri[3]);
                if(caratteri[4]!=-1) stringa.append((char) caratteri[4]);
                if(caratteri[5]!=-1) stringa.append((char) caratteri[5]);
                if(caratteri[6]!=-1) stringa.append((char) caratteri[6]);
                if(caratteri[7]!=-1) stringa.append((char) caratteri[7]);
                incrementa();
                return stringa.toString();
        }
        private void incrementa() {
                caratteri[7]++;
                if(caratteri[7]==256) {
                        caratteri[7] = 0;
                        caratteri[6]++;
                }
                if(caratteri[6]==256) {
                        caratteri[6] = 0;
                        caratteri[5]++;
                }
                if(caratteri[5]==256) {
                        caratteri[5] = 0;
                        caratteri[4]++;
                }
                if(caratteri[4]==256) {
                        caratteri[4] = 0;
                        caratteri[3]++;
                }
                if(caratteri[3]==256) {
                        caratteri[3] = 0;
                        caratteri[2]++;
                }
                if(caratteri[2]==256) {
                        caratteri[2] = 0;
                        caratteri[1]++;
                }
                if(caratteri[1]==256) {
                        caratteri[1] = 0;
                        caratteri[0]++;
                }
                if(caratteri[0]==256) {
                        vuoto = true;
                }
        }
}
PS: lo so che posso sembrare un lamer con un discorso del genere, ma non
lo sono!  Mi serve solo per  dimostrargli che pone troppa  fiducia negli
apparecchi cisco.
-- 
Non c'è più forza nella normalità: c'è solo monotonia.

 prevede una password lunga da uno  a otto caratteri. Ad ogni carattere è
Ciao Ottavio. Supponiamo che il tuo amico usi come alfabeto i seguenti 80
caratteri:
@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!#$%^&*():;/.<¿>
Le password possibili lunghe fino a 8 caratteri con questo alfabeto sono
1698958582278480. Supponi che in un millisecondo tu generi una password, ti
colleghi al router Cisco, ed il router ti invalidi il tentativo. Hai bisogno
di circa 53873 anni (poco di più) per verificarle tutte; potremmo supporre
che verso la metà tu ci azzecchi. Io non penso di essere qui tra 26mila anni
alle 14:30 precise per scoprire qual'era la password. :) Inoltre, in realtà
la faccenda è un po' più lunga, solitamente il sistema attende un secondo o
due e poi ti dice che la password non è valida. Non ritengo possibile un
attacco con la forza bruta, non almeno usando un unico computer. Ti
suggerisco invece di cercare quale sia il modello di router che lui usa, ed
andare su 
astalavista.box.sk
 a fare una ricerchina. Molti router cisco hanno
una password predefinita che ti permette di entrare, o comunque potresti
trovare qualche altro sistema che ti permette di risparmiare un po' di tempo;
nulla di meglio in questi casi che una bella calibro 45 puntata alla tempia
del sistemista. :)
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

 casi che una bella calibro 45 puntata alla tempia del sistemista.
e vabbè, però così non va bene.  Devo essere io che trovo un sistema per
aprirlo, non voglio usare un tool prefatto.
