Jeszcze raz powrót do poprzedniego tematu. Przerobiłem swój skrypt na nieco mniej naiwną formę. Z ciekawości uruchomiłem go na jednym zestawie danych wejściowych, przy czym kolejność haseł była losowa. Wszystkich, poza pierwszym przypadkiem, który był brany bezpośrednio z poprzedniego wpisu. Nie można porównywać wprost czasów działania obu wersji skryptu (różne maszyny). Różnica pomiędzy poszczególnymi przypadkami w obrębie jednego zestawu haseł jest jednak bardzo widoczna:
['avSffipDyj', 'JaSyfapyb', 'aSyfipyi', 'avSfapDb', 'avSfpDy', 'ayfpji', 'JyffDb', 'vSfiyb', 'vaybj', 'ffpDb'] 0.411000013351 ['ffpDb', 'avSfapDb', 'vaybj', 'avSfpDy', 'JaSyfapyb', 'avSffipDyj', 'vSfiyb', 'aSyfipyi', 'JyffDb', 'ayfpji'] 1056.74699998 ['aSyfipyi', 'avSffipDyj', 'ffpDb', 'avSfpDy', 'vSfiyb', 'JaSyfapyb', 'avSfapDb', 'vaybj', 'JyffDb', 'ayfpji'] 38.4509999752 ['vSfiyb', 'avSfapDb', 'aSyfipyi', 'ffpDb', 'avSffipDyj', 'vaybj', 'avSfpDy', 'ayfpji', 'JyffDb', 'JaSyfapyb'] 174.740999937 ['avSffipDyj', 'JyffDb', 'ffpDb', 'JaSyfapyb', 'aSyfipyi', 'vSfiyb', 'ayfpji', 'vaybj', 'avSfapDb', 'avSfpDy'] 3.45799994469 ['avSfpDy', 'aSyfipyi', 'JaSyfapyb', 'ayfpji', 'avSfapDb', 'vaybj', 'JyffDb', 'avSffipDyj', 'ffpDb', 'vSfiyb'] 25.5379998684 ['avSfpDy', 'aSyfipyi', 'avSffipDyj', 'vaybj', 'JaSyfapyb', 'vSfiyb', 'ayfpji', 'ffpDb', 'avSfapDb', 'JyffDb'] 87.6420001984 ['JyffDb', 'avSfapDb', 'avSfpDy', 'avSffipDyj', 'vaybj', 'aSyfipyi', 'vSfiyb', 'ffpDb', 'JaSyfapyb', 'ayfpji'] 290.555999994 ['ayfpji', 'ffpDb', 'vaybj', 'avSfapDb', 'vSfiyb', 'aSyfipyi', 'avSffipDyj', 'avSfpDy', 'JaSyfapyb', 'JyffDb'] 734.882999897 ['aSyfipyi', 'vSfiyb', 'avSffipDyj', 'avSfpDy', 'JaSyfapyb', 'ffpDb', 'vaybj', 'avSfapDb', 'ayfpji', 'JyffDb'] 84.8340001106 ['JyffDb', 'vSfiyb', 'avSfapDb', 'avSffipDyj', 'ayfpji', 'aSyfipyi', 'avSfpDy', 'vaybj', 'ffpDb', 'JaSyfapyb'] 180.236000061 ['ayfpji', 'vaybj', 'aSyfipyi', 'avSfapDb', 'vSfiyb', 'avSffipDyj', 'ffpDb', 'avSfpDy', 'JyffDb', 'JaSyfapyb'] 478.786000013 ['aSyfipyi', 'avSfapDb', 'ayfpji', 'avSfpDy', 'vSfiyb', 'vaybj', 'ffpDb', 'JyffDb', 'JaSyfapyb', 'avSffipDyj'] 37.1860001087 ['JyffDb', 'vaybj', 'ayfpji', 'avSfpDy', 'ffpDb', 'aSyfipyi', 'avSffipDyj', 'vSfiyb', 'JaSyfapyb', 'avSfapDb'] 530.560000181 ['ayfpji', 'ffpDb', 'vaybj', 'vSfiyb', 'avSffipDyj', 'JaSyfapyb', 'avSfpDy', 'aSyfipyi', 'avSfapDb', 'JyffDb'] 879.066999912 ['avSfapDb', 'avSfpDy', 'vSfiyb', 'ffpDb', 'avSffipDyj', 'JyffDb', 'vaybj', 'ayfpji', 'JaSyfapyb', 'aSyfipyi']
Ostatni przypadek zakończył się niepowodzeniem, wyleciał wiele mówiący wyjątek MemoryError. Akurat ten wyjątek był skutkiem mojego błędu (nie usuwałem między krokami identycznych masek).
Po drobnych poprawkach i wprowadzeniu funkcji sortującej, przypadki testowe z poprzedniego przykładu teraz wykonują się znacznie szybciej (posortowane dane wejściowe, czas wykonania).
['gAdeOkmouk', 'gdyOkmusk', 'OgdyOmou', 'OAdeOaok', 'OyOamsk', '6OAeOks', 'yekamu', '6yeOmo', 'Oyauk', 'Aeao'] 1.2990000248 ['aSyfipDyji', 'vyfiaDbji', 'Jvyfipybj', 'avfiybi', 'JffaDji', 'avyiybi', 'vSfipy', 'avyaj', 'yiybi', 'ypDy'] 0.599999904633 ['OgeOkmosk', 'Ogdykausk', 'Odyeamok', 'OgOkmusk', 'gdykaou', '6OAeOks', 'OAdekos', 'gdyOao', 'gAyOk', 'OAeO'] 2.882999897 ['avSffipDyj', 'JaSyfapyb', 'aSyfipyi', 'avSfapDb', 'avSfpDy', 'ayfpji', 'JyffDb', 'vSfiyb', 'vaybj', 'ffpDb'] 0.365000009537 ['vSyfiybi', 'JSffiDyb', 'avSfpDbi', 'JffiDy', 'Jvfbji', 'vSayi', 'aSaji', 'JaSfy', 'JSaj', 'Sfpy'] 9.55900001526
To teraz można się zabrać za wymyślanie haseł wyjątkowo trudnych do złamania w ten sposób ;)
Kontynuuje ten interesujący chyba tylko dla mnie temat odzyskiwania sekretu z jego kawałków. Korzystając z poprawionej wersji skryptu, postanowiłem przeprowadzić prosty eksperyment, który pozwoli z grubsza oszacować ilość próbek, które należy przechwycić,
Przesłany: Jan 17, 16:53