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

Prolomení hesla=zdhlouhavé! – Java – Fórum – Programujte.comProlomení hesla=zdhlouhavé! – Java – Fórum – Programujte.com

 

Vlákno bylo úspěšně vloženo.
Pokud sám přijdeš na řešení, nezapomeň ho sem přidat!
John
~ Anonymní uživatel
29 příspěvků
30. 11. 2014   #1
-
0
-

Dobrý den, chtěl bych se moc zeptat zda by mi někdo neporadil, jak zrychlit tento kod.Jedná se o prolomení hesla, ve kterém při metodě( BruteForceAttacker) útočník zkouší postupně všechny možné kombinace znaků, dokud neuhodne heslo. Jelikož zkouší některá hesla vícekrát,  proto je pomalý.Prosím neví někdo jak ho zrychlit? Pomoc spěchá!!

import java.util.ArrayList;
import java.util.List;

public class BruteForceAttacker extends Thief {

    public static List<String> getPermutace(String input) {

        List<String> soubor = null;

        if (input.length() == 1) {
            soubor = new ArrayList<String>();
            soubor.add(input);
            return soubor;
        } else {
            soubor = getPermutace(input.substring(1));
            Character prvni = input.charAt(0);
            List<String> result = new ArrayList<String>();
            for (String str : soubor) {
                for (int i = 0; i < str.length(); i++) {
                    String item = str.substring(0, i) + prvni
                            + str.substring(i);
                    result.add(item);
                }
                String item = str.concat(prvni.toString());
                result.add(item);
            }
            return result;
        }

    }

    @Override
    public void breakPassword(int sizeOfPassword) {
        StringBuilder sb2 = new StringBuilder();
        for (int i = 1; i < sizeOfPassword; i++) {
            sb2.append(this.getCharacters());
        }
        for (String pw : getPermutace(sb2.toString())) {
            this.tryOpen(pw.substring(0, sizeOfPassword).toCharArray());
            if (this.isOpened()) {
                return;
            }
        }
    }

}

Nahlásit jako SPAM
IP: 147.32.114.–
ingiraxo+15
Grafoman
30. 11. 2014   #2
-
0
-

noo v první řadě "BruteForceAttacker" není metoda, ale třída, za druhé proč útočník zkouší různá hesla? nemá to náhodou dělat ten program?

máš víc druhů útoků na prolomení hesel, nejčastější je slovník a bruteforce, ale každej funguje na jiným principu

pokud hodláš dělat slovník, tak stací mít extra velkej soubor, kde co řádek, to heslo a budeš zkoušet postupně hesla (nebudeš načítat vše, ale pojedes přes stream)

u bruteforce je to trochu jiný a hlavně trvá mnohem dýl (pro hesla o 10+ znacích je už i blbost použít bruteforce).. zkoušíš postupně všechny možný kombinace a - alg. by měl být takový, že nikdy žádnou kombinaci neudělá víckrát - je zbytečné ukládat testované kombinace, stačí ta správná

- měl by ses zaměřit, aby app zbytečně nevytvářela nový objekty a veškeré metody, který se budou volat ve smyčce, tak by měli být triviální a nedělat složitou logiku
- dále je možné pracovat ve více vláknech, řešení je opět více a je potřeba řešit sychronizace

PS: ale pokud očekáváš, že prolomení hesla třeba o délce 8-10 znaků bude trvat pár minut, tak ses trochu sekl o pár dnu/týdnů/měsíců, případně dokonce let ;) Hlavně hesla do 8 znaků se už moc nepoužívaj, minimálně bych se na to nespolíhal

Pro tvoji představu - http://www.lockdown.co.uk/?pg=combi&s=articles

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
John
~ Anonymní uživatel
29 příspěvků
30. 11. 2014   #3
-
0
-

#2 ingiraxo
public class Test {
    
    public void start() {
        String password = "abcda";
        BruteForceAttacker attacker = new BruteForceAttacker();
        attacker.init(new char[]{'a', 'b', 'c', 'd'}, password);
        
        System.out.println("Trying to break password...");
        attacker.breakPassword(password.length());
        
        if (attacker.isOpened()) {
            System.out.println("[VAULT] opened, password is " + password);
        } else {
            System.out.println("[VAULT] is still closed");
        }
    }
}

tu máme ještě testovací sadu...

Nahlásit jako SPAM
IP: 147.32.114.–
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, 5 hostů

Podobná vlákna

Prolomeni hesla — založil Vavat9

Prolomení hesla java — založil LLiky

Prolomení instalačního kódu — založil spider-x

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ý