Byłem ciekawy, czy ktoś może mi powiedzieć, czy używanie SQLite do przechowywania słownika (jak w brutalnej sile) do użycia w skrypcie Pythona było skuteczną metodą. Chociaż jestem stosunkowo nowy w Pythonie, mam spore doświadczenie z innymi językami programowania i obecnie pracuję nad narzędziem do pięterowania, które będzie używane w Backtrack. Do tej pory jestem pod wrażeniem szybkości i prostoty języka Python, a moje zapytania SQL wydają się działać idealnie, aby zwrócić potrzebne przedrostki do mojego narzędzia brute force. Myślę jednak, że zastanawiam się, jaki jest standard przechowywania dużych plików danych w Pythonie? Czy przeoczyłem lepszy (szybszy) sposób przechowywania moich prefiksów tylko z powodu mojego komfortu z SQL? Proszę pamiętać, że nie używam Pythona do wysyłania zapytań od 0 do n i używam ich, raczej używam Pythona, aby zawęzić możliwości i zapytać o te wpisy słownika, które pasują do kryteriów. Każda pomoc lub opinie będą mile widziane!Jak szybko jest SQLite za pośrednictwem Pythona
Odpowiedz
Tak, sqlite jest rozsądnym wyborem do implementacji słownika. Aby uzyskać szybkość, użyj opcji: memory: i upewnij się, że tworzysz odpowiednie indeksy dla wyszukiwań i zapytań.
Dla dużych, trwałych baz danych działa również dobrze. W celu uzyskania szybkości należy zwrócić uwagę na duże transakcje zamiast na każdy klucz.
Proponowane i odpowiednich zastosowań dla SQLite jako magazyn danych jest objęte na swojej stronie internetowej: http://www.sqlite.org/features.html
Jeśli Raymond Hettinger zaleca również SQLite, to chyba najlepszym.
Ale rodzimym rozwiązaniem Pythona byłoby użycie pliku "pikle". Zbudowałbyś Python dict
, który przechowuje dane, a następnie "podbija" dyktę; później możesz "rozpruć" dyktando. Jeśli masz tylko jeden klucz, którego musisz szukać, może to być dobra droga.
Dla Pythona 2.x najprawdopodobniej chciałbyś użyć modułu cPickle
. W przypadku Pythona 3.x jest tylko pickle
, ale uważam, że jest tak szybki jak cPickle
.
http://docs.python.org/library/pickle.html
Z drugiej strony, jeśli zbiór danych jest naprawdę duża, tak duża, że SQLite zaczyna się dusić na nim, a następnie zamiast podzielenie go na kilka mniejszych plików SQLite i zarządzania nimi, może to zrobić po prostu zrzuć wszystko do prawdziwej bazy danych, takiej jak PostgreSQL.
Częściowo poza tematem, oto kilka przydatnych linków.
THC-Hydra: P
Również tutaj jest świetny film na politykę haseł i stosując następnie do brutalnej siły.
http://www.irongeek.com/i.php?page=videos/hack3rcon2/martin-bos-your-password-policy-sucks
- 1. Jak szybko zmienić jasność obrazu za pomocą pythona + OpenCV?
- 2. Jak mogę obsłużyć alert z GhostDriver za pośrednictwem Pythona?
- 3. Przekazywanie tablicy do sqlite GDZIE W klauzuli za pośrednictwem FMDB?
- 4. Wstaw plik binarny w bazie danych SQLite za pomocą Pythona
- 5. Jak oglądać transakcje bitcoinem za pośrednictwem blockchain za pośrednictwem nodejs?
- 6. Jak przekazać instancję Pythona do C++ za pośrednictwem Pythona/C API
- 7. Planowanie raportu JasperServer za pośrednictwem SOAP przy użyciu Pythona
- 8. Odbieranie obrazu za pośrednictwem websocket
- 9. Jak sprawdzić, czy formularz jest przesyłany za pośrednictwem javascript?
- 10. Jak sprawdzić, czy przesyłanie ftp za pośrednictwem ruby jest sukcesem?
- 11. Jak sprawdzić, czy wartość zapytania jest obecna za pośrednictwem javascript
- 12. tryb Serialized SQLite za
- 13. Jak podłączyć socket.io za pośrednictwem odwrotnego proxy
- 14. Otrzymuj wiadomości ostrzegawcze za pośrednictwem psycopg2
- 15. Jak mogę odzyskać kompozytora za pośrednictwem Ant?
- 16. Jak publikować wartości tablic za pośrednictwem curl?
- 17. Jak mogę odczytać wybrane pliki z zdalnego archiwum ZIP za pośrednictwem HTTP przy pomocy Pythona?
- 18. Kliknięcie za szybko z galerii slajdów (jquery)
- 19. Zaloguj się na stronie internetowej za pośrednictwem Pythona - jak radzić sobie z CSRF?
- 20. Jak swipe za pośrednictwem różnych zakładkach jonowych
- 21. Jak iterować za pośrednictwem węzłów XDocument's
- 22. Jak przekazać referencję za pośrednictwem pakietu parametrów?
- 23. Jak pobrać wieloplatformowe koła za pośrednictwem pip?
- 24. Jak opublikować aplikację ClickOnce za pośrednictwem CruiseControl.NET?
- 25. Jak wykonać plik wsadowy za pośrednictwem PHP?
- 26. Wielokrotny dostęp do pojedynczego pliku bazy danych SQLite za pośrednictwem System.Data.SQLite i C#
- 27. Instalowanie NodeJS za pośrednictwem Mavena
- 28. Jak szybko znaleźć main() w projekcie java za pomocą eclipse?
- 29. Jak mogę (szybko) miniaturować 300 obrazów za pomocą PyQT4?
Jak szybko byś chciał? Jak duży jest zbiór danych MB, GB, TB? Co masz na myśli przez "przedrostki" to jak w "drzewie prefiksów" (trie)? Jak dobrze operacje wykonywane na danych odpowiadają modelowi relacyjnemu? – jfs