Tenía curiosidad si alguien pudiera decirme si usar SQLite para almacenar un diccionario (como en fuerza bruta) para usar en un script de Python era un método eficiente. Si bien soy relativamente nuevo en Python, tengo bastante experiencia con otros lenguajes de programación y actualmente estoy trabajando en una herramienta de pentesting para usar en Backtrack. Hasta el momento, estoy bastante impresionado con la velocidad y la simplicidad de Python, y mis consultas SQL parecen estar funcionando bastante idealmente para devolver los prefijos necesarios para mi herramienta de fuerza bruta. Sin embargo, supongo que lo que me pregunto es ¿cuál es el estándar para almacenar archivos de datos de gran tamaño en Python? ¿Estoy pasando por alto una forma mejor (más rápida) de almacenar mis prefijos simplemente por mi comodidad con SQL? Tenga en cuenta que no estoy usando Python para consultar los ID de 0 a ny usarlos, sino que estoy usando Python para reducir las posibilidades y consultar aquellas entradas de diccionario que coincidan con los criterios. ¡Cualquier ayuda u opinión sería muy apreciada!Cuán rápido es SQLite a través de Python
Respuesta
Sí, sqlite es una opción razonable para implementar un diccionario. Para mayor velocidad, use la opción: memory: y asegúrese de crear los índices apropiados para sus búsquedas y consultas.
Para bases de datos grandes y persistentes, también funciona bien. Para mayor velocidad, asegúrese de realizar transacciones grandes en lugar de por clave.
Los usos sugeridos y apropiadas para SQLite como un almacén de datos está cubierta en su sitio web: http://www.sqlite.org/features.html
Si Raymond Hettinger también recomienda SQLite, entonces eso es probablemente su mejor apuesta.
Pero una solución nativa de Python sería usar un archivo "pickle". Construiría un Python dict
que contenga los datos, luego "recortar" el dict; más tarde podrías "destripar" el dict. Si solo tiene una clave que necesita buscar, entonces esta podría ser una buena forma de hacerlo.
Para Python 2.x es probable que desee utilizar el módulo cPickle
. Para Python 3.x, solo existe pickle
, pero creo que es tan rápido como cPickle
.
http://docs.python.org/library/pickle.html
Por otro lado, si el conjunto de datos es realmente grande, tan grande que SQLite está empezando a ahogar en él, entonces en vez de dividirlo en varios archivos SQLite más pequeños y gestión de los mismos, podría tener sentido para simplemente volcar todo en una base de datos real como PostgreSQL.
Semi fuera de tema, aquí hay algunos enlaces útiles.
THC-Hydra: P
También aquí es un gran video sobre las políticas de contraseñas y usar a continuación a la fuerza bruta.
http://www.irongeek.com/i.php?page=videos/hack3rcon2/martin-bos-your-password-policy-sucks
- 1. cuán rápido es el segmento de python
- 2. ¿SQLite es realmente más rápido que MySQL?
- 3. Ciclismo a través de SortedList: ¿por qué es más rápido?
- 4. Cuán rápido es el acceso variable local de subprocesos en Linux
- 5. ¿Cuán escalable es Grails?
- 6. ¿Es más rápido leer columnas de ancho fijo en SQLite?
- 7. cuán seguro es tomcat
- 8. ¿Cuán maduro es dblinq?
- 9. ¿Cuán diferente es la semántica entre Python y JavaScript?
- 10. Looping a través de un cursor SQLite toma demasiado tiempo
- 11. ¿Cuán exacto y rápido es el proveedor de ubicación de la red androides?
- 12. ¿Es MATLAB más rápido que Python?
- 13. ¿Cuán exacto es Thread.Sleep (TimeSpan)?
- 14. ¿Cuán flexible es Oracle ADF?
- 15. OSGi: ¿Cuán madura es esta tecnología?
- 16. Cuán maduro es PHP: SVN
- 17. ¿Cuán importante es la portabilidad de SQL?
- 18. ¿Cuán diferente es Qt4 de Qt3?
- 19. ¿Cuán precisa es la precisión de CLLocation?
- 20. Iterar a través de las filas de Sqlite-query
- 21. Conexión con Sqlite en android a través de Servlet
- 22. ¿Cuán difícil es el multihilo de Haskell?
- 23. ¿Cuán seguro es mi regreso seguro?
- 24. Python: ¿qué tan rápido?
- 25. ¿Cuán difícil es portar una aplicación asp.net a azul?
- 26. SQLite - ¿Es posible insertar un BLOB a través de una declaración de inserción?
- 27. ¿Por qué es más rápido acceder al DOM a través de una variable en caché?
- 28. Accediendo a un XAMPP mysql a través de Python
- 29. ¿Cuán importante es apoyar navegadores antiguos?
- 30. ¿Cuán importante es escribir especificaciones funcionales?
¿Qué tan rápido, ¿Le gustaría que fuera? ¿Qué tan grande es el conjunto de datos MB, GB, TB? ¿Qué quiere decir con "prefijos" es como en "árbol de prefijo" (trie)? ¿Qué tan bien las operaciones que realiza en los datos corresponden al modelo relacional? – jfs