Ero curioso di sapere se qualcuno che mi ha insegnato se usare SQLite per memorizzare un dizionario (come nella forza bruta) per l'uso in uno script Python era un metodo efficiente. Mentre sono relativamente nuovo a Python, ho un bel po 'di esperienza con altri linguaggi di programmazione e sto attualmente lavorando a uno strumento di pentesting da utilizzare in Backtrack. Finora sono rimasto molto impressionato dalla velocità e dalla semplicità di Python e le mie query SQL sembrano funzionare in modo ideale per restituire i prefissi necessari per il mio strumento brute force. Tuttavia, immagino che cosa mi stia chiedendo qual è lo standard per la memorizzazione di file di dati di grandi dimensioni in Python? Sto trascurando un modo migliore (più veloce) di memorizzare i miei prefissi semplicemente per il mio comfort con SQL? Tieni presente che non sto usando Python per interrogare gli ID da 0 a n e li uso, piuttosto sto usando Python per restringere le possibilità e interrogare quelle voci del dizionario che corrispondono ai criteri. Qualsiasi aiuto o opinione sarebbe molto apprezzato!Quanto veloce è SQLite via Python
risposta
Sì, sqlite è una scelta ragionevole per l'implementazione di un dizionario. Per velocità, usa l'opzione: memory: e assicurati di creare gli indici appropriati per le tue ricerche e query.
Per database di grandi dimensioni e persistenti funziona anche bene. Per velocità, fai attenzione a eseguire transazioni di grandi dimensioni anziché per chiave.
Gli usi proposti e appropriate per SQLite come archivio dati è coperto al loro sito web: http://www.sqlite.org/features.html
Se Raymond Hettinger raccomanda, inoltre, SQLite, allora questo è probabilmente la soluzione migliore.
Ma una soluzione Python nativa sarebbe utilizzare un file "pickle". Dovresti creare un Python dict
che trattiene i dati, quindi "scodellare" il dict; più tardi potevi "sbrogliare" il ditt. Se hai solo una chiave su cui devi cercare, allora questo potrebbe essere un buon modo per andare.
Per Python 2.x è probabile che si desideri utilizzare il modulo cPickle
. Per Python 3.x, c'è solo pickle
, ma credo che sia veloce quanto cPickle
.
http://docs.python.org/library/pickle.html
D'altra parte se il set di dati è davvero grande, così grande che SQLite sta iniziando a soffocare su di esso, allora invece di dividere in su in più file SQLite più piccoli e la loro gestione, potrebbe avere senso di scaricare tutto in un vero database come PostgreSQL.
Semi off-topic, ecco alcuni link utili.
THC-Hydra: P
qui è anche un ottimo video su politiche di password e usando poi alla forza bruta.
http://www.irongeek.com/i.php?page=videos/hack3rcon2/martin-bos-your-password-policy-sucks
- 1. Quanto è veloce Berkeley DB SQL rispetto a SQLite?
- 2. Quanto è veloce Data.Array?
- 3. Quanto è veloce Google App Engine?
- 4. Quanto è veloce Data.Sequence.Seq rispetto a []?
- 5. SQLite è davvero più veloce di MySQL?
- 6. Python SQLite: database è bloccato
- 7. Il server MySQL è andato via - Python
- 8. Quanto più veloce è NUnit paragonato a MSTest
- 9. Quanto è veloce andare 1.5 gc con terabyte di RAM?
- 10. Quanto più veloce è un database in esecuzione nella RAM?
- 11. Quanto è veloce std :: swap per i tipi interi?
- 12. Python - scoprire quanto di un'immagine è nero
- 13. SQLite Android: quale query ("query" o "rawQuery") è più veloce?
- 14. Perché python math.factorial (x) è molto veloce?
- 15. In che modo "min" di due numeri interi è veloce quanto "bit hacking"?
- 16. Python e Django OperationalError (2006, 'server MySQL è andato via')
- 17. Quanto JSON è troppo JSON?
- 18. Quanto sono sicuri i file SQLite e SharedPreferences su Android?
- 19. Come seguire Python PEP8 per quanto riguarda le interruzioni di riga e quanto è importante?
- 20. Sqlite quanto elimina l'ultimo elemento aggiunto di un tavolo
- 21. Quanto di STL è troppo?
- 22. SQLite python non aggiorna tabella
- 23. Quanto è affidabile HTTP_REFERER?
- 24. Quanto è portatile GLib?
- 25. Quanto è buono VTK?
- 26. Quanto performante è StackFrame?
- 27. Quanto è buono l'avvio?
- 28. Quanto è efficiente javascript?
- 29. Quanto è unico ManagedThreadID?
- 30. Quanto è sicuro openID?
Quanto velocemente Vuoi che sia? Quanto è grande il set di dati MB, GB, TB? Cosa intendi per "prefissi" è come in "albero prefisso" (trie)? Quanto bene le operazioni che eseguite sui dati corrispondono al modello relazionale? – jfs