Distribuované prolamování hashů v JavaScriptu
Nálepky:
Slova „prolamování hesel“ a „JavaScript“ se v jedné větě dohromady téměř nevyskytují. Pro potřeby lámání hesla má JavaScript zásadní nevýhody – je pomalý a nedokáže práci rozdělit do více vláken. Nebo ne?
Po pravdě řečeno tato tvrzení už tak moc neplatí. Díky WebWorkers můžeme spustit procesy v JavaScriptu „na pozadí“, a nejnovější JS interpretery jsou už velmi rychlé. Navíc je JavaScript jako stvořený pro distribuované výpočty na různých strojích – stačí, aby si vaši stránku otevřelo víc lidí.
Na blogu Andlabs vyšel článek, v němž autor popisuje postup distribuovaného prolamování MD5 a SHA hashů právě pomocí JavaScriptu. Využívá k tomu webové stránky a principu, podobného známému distribuovanému SETI@home.
brzo bude třeba blokovat stránky, které uživatelům kradou výpočetní výkon
a ako odlisime „slabo naprogramovane“ stranky od stranok ktore kradnu trochu vykonu?
nakoniec sa to začne hromadne zneužívať a JS si začnú ludia blokovať tak ako kedysi ActiveX
Nie ze by to niektori nerobili uz aj dnes ;-)
The network is the computer –John Gage, 21st employee of Sun Microsystems
Uz v roku 2006 som zhodou okolnosti spolupracoval na projekte, v ktorom sa riesili distribuovane vypocty cez javascript. de facto jednoducha aplikacia, staci dostatocne navstevovana stranka a o vypoctovu silu je postarane. samozrejme, o pouzitelnosti by sa dalo diskutovat
Dost závisí na typu aplikace, ale třeba prolamování hesel lze distribuovat krásně. Stačí rozdělit na bloky. Dokud stačí jediný server, tak je to vskutku triviální, spoň nějaký základ.
Před časem jsem zkoumal jednomu spolužákovi hrubou silou seznam tabulek na serveru pomocí slepé SQL injekce. Jako rychlé řešení jsem zkusil zbastlit jeden skript v PHP na pár řádků. Pak jsem chtěl požadavky posílat ve více vláknech, tak jsem to vyřešil spuštěním několika instancí a distribuovat mezi nimi scan bylo velmi snadné. Mít proměnlivý počet stanic, dělat to přes XHR a jednou za čas to syncovat je sice složitější, ale ne o moc.