Prolomení hesla java – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prolomení hesla java – Java – Fórum – Programujte.comProlomení hesla java – Java – Fórum – Programujte.com

 

LLiky0
Duch
20. 11. 2013   #1
-
0
-

Ahoj zdravím vás všechny, mám problém mám hotovej program na prolomení hesla ale nechtěj mi to vzít, že je tam jedna chyba... Já už si z tím nevím rady...

Mohl by mi někdo poradit..

Můj kód vypadá takhle.


public class BruteForceAttacker extends Thief {

    char[] heslo;
    char[] Znaky;
    int HesloD;
    
    @Override
    public void breakPassword(int sizeOfPassword) {
        //Write your code here
        this.HesloD = sizeOfPassword;
        heslo = new char[HesloD];
        Znaky = getCharacters();
        tryOpen(0);
    }
    
    boolean tryOpen(int password) {
        for (int i = 0; i < Znaky.length; i++) {
            heslo[password] = Znaky[i];

            if (password < HesloD - 1) {
                if (tryOpen(password + 1)) {
                    return true;
                }
            }

            if (tryOpen(heslo)) {
                return true;
            }
            System.exit(0);
        }

        return false;
    }

    
}

a mám třídu s mainem..

ale ta není tak podstatné, tu jsem nemusel vytvořit já...

Nahlásit jako SPAM
IP: 217.77.165.–
LLiky0
Duch
20. 11. 2013   #2
-
0
-

Potřebuji, jestli by jste se mohli na to podívat jestli tam není nějaká chyba nebo jestli by se třeba něco nedalo udělat líp...

Díky moc...

Nahlásit jako SPAM
IP: 46.135.111.–
Matrix17
~ Anonymní uživatel
300 příspěvků
20. 11. 2013   #3
-
0
-

Hned po první iteraci přes pole znaků to utneš. Tj. nikdy neprojdeš všechny kombinace.

Nahlásit jako SPAM
IP: 95.82.185.–
LLiky0
Duch
21. 11. 2013   #4
-
0
-

Teď nevím kterou myslíš... Jsem trošku dost mimo..#3 Matrix17

Nahlásit jako SPAM
IP: 88.102.134.–
Matrix17
~ Anonymní uživatel
300 příspěvků
21. 11. 2013   #5
-
0
-

No máš for cyklus a po první interaci se dostaneš (samozřejmě v každý úrovni rekurze) na příkaz:

System.exit(0);


Ale jelikož se na něj dostaneš až na "konci" tj. při posledním rekurzivní voláním (pro poslední znak hesla), tak to exne až tam, pokud to heslo náhodou neuhádneš.

Nahlásit jako SPAM
IP: 95.82.185.–
sleepy
~ Anonymní uživatel
422 příspěvků
22. 11. 2013   #6
-
0
-

tryOpen(char[]). Inak mas celkom dost mimo aj kod, najskor napis co to ma robit, resp. napis ako si predstavujes, ze to ma fungovat. Lebo toto asi nebude roibit nic. Kde overujes ze je heslo spravne, alebo neoverujes? Co zadavas, ako to volas. Jednoducho napis vsetko co treba, lebo takto ti asi velmi nikto neporadi.

Nahlásit jako SPAM
IP: 147.175.177.–
LLiky0
Duch
22. 11. 2013   #7
-
0
-

#6 sleepy
tohle je testovací třída, která to spouští...


public class Test {
    
    public static void main(String[] args) {
        String password = "aaaaaaaaa";
        BruteForceAttacker attacker = new BruteForceAttacker();
        attacker.init(new char[]{'a', 'b', 'c', 'd'}, password);
        
        attacker.breakPassword(password.length());
    }
}

Nahlásit jako SPAM
IP: 88.102.153.–
sleepy
~ Anonymní uživatel
422 příspěvků
27. 11. 2013   #8
-
0
-

Aj keby ti ten kod fungoval tak kde overis, kde ze je zadane heslo spravne? Co je metoda getCharacters()? No skusim nieco napisat:

 

class BruteForceAtacker{
	private char[] carset;
	private String password;
	
// pouzil som normalny konstruktor namiesto initu
	public BruteForceAtacker(char[] charset, password){
		this.charset = charset; // lepsie by mohli byt to skopirovat
		this.password = password;
	}

	private boolean verifyPassword(String password) {
		// toto nieco spravi 
		// a vrati to ci je alebo nieje heslo spravne
		return this.password.equals(password);
	}

	public String breakPassword(int length) {
		int[] pasCh = new int[]; // pomocne pole aby som moholist 0 .. n
		char[] pass = new char[length]; // toto je tvoje heslo ako pole znakov
		for(int i=0; i<length; i++) {
			// prehodi pole cisle do znakov podla charsetu
			pass[i] = charset[pasCh[i]];
		}
		while(!verifyPassword(new String(pass))) {
			// pripocitas 1 a zmodulujes podla velkosti charsetu
			pasCh[0]=(pasCh[k]+1)%charset.length;
			for(int k=1; k< cahrset.length; k++) {
				if(pasCh[k-1]==0 && pasCh[0]==0){
					pasCh[k]=(pasCh[k]+1)%charset.length;
				}
			}
			for(int i=0; i<length; i++) {
				pass[i] = charset[pasCh[i]];
			}
		}
		// najde heslo tak ho posle naspat
		return new String(pass);
	}
}
Nahlásit jako SPAM
IP: 147.175.177.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Prolomeni hesla — založil Vavat9

Java Servlet Kontrola hesla — založil Opik

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý