Как быстро работает SQLite через Python - PullRequest
5 голосов
/ 06 ноября 2011

Мне было просто любопытно, если бы кто-нибудь мог мне сказать, является ли использование SQLite для хранения словаря (как в грубой силе) для использования в скрипте Python эффективным методом.Хотя я относительно новичок в Python, у меня достаточно опыта работы с другими языками программирования, и в настоящее время я работаю над инструментом для пентестинга, который можно использовать в Backtrack.До сих пор я впечатлен скоростью и простотой Python, и мои запросы SQL, кажется, работают идеально идеально, чтобы вернуть необходимые префиксы для моего инструмента грубой силы.Тем не менее, я думаю, что мне интересно, что является стандартом для хранения больших файлов данных в Python?Я пропускаю лучший (более быстрый) способ хранения своих префиксов просто из-за моего комфорта с SQL?Пожалуйста, имейте в виду, что я не использую Python для запроса идентификаторов от 0 до n и использую их, скорее я использую Python для сужения возможностей и запроса тех словарных статей, которые соответствуют критериям.Любая помощь или мнения будут высоко оценены!

Ответы [ 3 ]

3 голосов
/ 06 ноября 2011

Да, sqlite - разумный выбор для реализации словаря.Для скорости используйте параметр: memory: и убедитесь, что создали соответствующие индексы для ваших запросов и поисков.

Для больших постоянных баз данных это также хорошо работает.Для ускорения позаботьтесь о том, чтобы совершать крупные транзакции, а не по ключам.

Предлагаемое и соответствующее использование sqlite в качестве хранилища данных описано на их веб-сайте: http://www.sqlite.org/features.html

1 голос
/ 06 ноября 2011

Полу не по теме, вот несколько полезных ссылок.

THC-Hydra : P

Также здесь есть отличное видео о политиках паролей и их использовании для грубой силы.

http://www.irongeek.com/i.php?page=videos/hack3rcon2/martin-bos-your-password-policy-sucks

1 голос
/ 06 ноября 2011

Если Рэймонд Хеттингер также рекомендует SQLite, то это, вероятно, ваш лучший выбор.

Но решение Python было бы использовать файл "pickle". Вы должны построить Python dict, который содержит данные, а затем "переманивать" диктат; позже вы можете «распутать» диктовку. Если у вас есть только один ключ, по которому вам нужно искать, это может быть хорошим способом.

Для Python 2.x вы, вероятно, захотите использовать модуль cPickle. Для Python 3.x есть только pickle, но я считаю, что это так же быстро, как cPickle.

http://docs.python.org/library/pickle.html

С другой стороны, если ваш набор данных действительно большой, настолько большой, что SQLite начинает его душить, то вместо того, чтобы разбивать его на несколько более мелких файлов SQLite и управлять ими, возможно, имеет смысл просто сбросить все реальная база данных, такая как PostgreSQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...