Sqlite format 3 как расшифровать

Freevi

Бесплатная программа SQLiteStudio для редактирования SQLite баз данных

Если вы столкнулись с файлами имеющих расширение .sqlite или .sqlite3, не знаете чем их открыть, чтоб покопаться в их внутренностях, тогда отличным выбором станет бесплатная программа SQLiteStudio. Для тех, кому интересно, что это за файлы, то это база данных в формате SQLite, где все таблицы данные храниться в одном файле. Сейчас многие программы используют базы SQLite для хранения своих данных в упорядоченном виде, например переписка и номера контактов в Viber.

SQLite не нужно устанавливать, единственный исполняемый файл, который вы скачаете, это и есть вся программы, который запускаем по необходимости. Только во время первого запуска приложение скромно поинтересуется, какой язык вы предпочитаете использовать, русский присутствует. Во время каждого запуска выскакивает таблица с подсказками, которую можно отключить, поставив соответствующую галочку.

Перед тем как углубляться в нюансы работы SQLite, хочется сделать небольшую ремарку. У разработчиков нет негласных правил, какое должно быть расширения у базы данных SQLite. В зависимости, от фантазии разработчиков расширения файла может быть как осмысленные .sqlite , .sqlite3, sl2, sl3 так и более универсальные db, db2, db3, sbd3. Чтоб убедиться, что вам под руки попала действительно база данных формата SQLite , нужно и если в первой строчке встречается словосочетание «SQLite format», тогда смело берем SQLiteStudio в руки.

Чтоб открыть базу данных жмем в основном меню «Базы данных»-> «Добавить базу данных», после чего выскакивает окошко, в котором выбираем файл с интересующей нас базой данной, при необходимости делаем небольшие настройки (какой именно версии база данных и запоминать ли её), и жмем «ОК». С настройками можете особо не заворачиваться и все оставить по умолчанию, в 99% случаев все прекрасно работает.

После подключения базы данных она добавляется в левую табличку, по щелчку на которой раскрывается список таблиц, которые там содержаться. В правой части можно увидеть структуру таблице на одноименной вкладке и данные, которые там храниться, для чего нужно щелкнуть по вкладке «Данные».

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

На удивление здесь много настроек, однако, они все в основном связны с внешним видом программы (цвета, шрифты, что показывать и что прятать) и быстрыми клавишами.

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

Программа прекрасно работает на 32-х и 64-х битных операционных системах. Интерфейс переведен приблизительно на десять языков, в том числе и русский.

Официальный сайт SQLiteStudio http://sqlitestudio.pl/

Страница для бесплатного скачивания SQLiteStudio http://sqlitestudio.pl/?act=download

Последняя версия на момент написания SQLiteStudio 2.1.5

Размер программы: исполняемый файл 5,28Мб

Совместимость: Windows Vista, Windows 7, 8 и Windows XP

Источник

Статья ASM – работа с базами SQLite (часть 1. Формат файла)

Традиционно, для работы с СУБД используются скриптовые языки типа: Python, SQL, Tcl, Perl и прочие. Это вполне оправдано, поскольку их синтаксис максимально приближен к человеческой речи, а огромный набор рычагов и предметно-ориентированных модулей превращает решение вполне серьёзных проблем, чуть-ли не в игру. Единственным недостатком скриптов является скорость выполнения ими задач, т.к. в отличии от компилируемых программ они работают через интерпретатор – т.е. сначала построчный анализ текста, перевод его в байт-код, и лишь потом исполнение.

Читайте также:  Как устроена головка принтера эпсон

Однако бывают ситуации, когда с базами нужно совершить элементарные действия, например не создавать её с нуля забивая данными, а тупо прочитать пару-тройку столбцов уже имеющейся в ней информации. Это могут быть кукисы в браузерах, пароли и прочая инфа личного характера. Именно в таких случаях преимущество ассма (да и любого компилируемого языка) становится очевидным. Чтобы полностью исключить криминал, мы потренируемся строго на своей машине, не совершая атак на удалённые сервера. Здесь идеальным вариантом будет разбор встраиваемой базы SQLite – на ней и остановимся. Материал получился обширным, поэтому я разделил его на три части:

Ещё в 80-х годах прошлого столетия «человек-разумный» придумал СУБД, или систему управления базами данных. В обозримом будущем, схема свои позиции сдавать не собирается, а потому представляет интерес на всех уровнях. Огромные корпорации доверяют базам конфиденциальную информацию, а кража этих баз вторыми лицами – худшее, что только может случиться с компанией.

Всё-бы ничего, однако достоянием общественности становятся и личные сведения о нас с вами, а это уже настораживает. Базы почтовых серверов и социальных сетей с завидной периодичностью утекают из (якобы) защищённых периметров и админы здесь только пожимают плечами. В результате ошибок переполнения буферов, всевозможных дыр в системе безопасности и прочих уязвимостей, вся эта конструкция держится на честном слове. По сути мы, как конечные пользователи, в войне хакеров с админами выступаем в роли сторонних наблюдателей, которые лёжа на своём диване способны лишь обсуждать/осуждать.

Но мир не без добрых людей. Некоторые энтузиасты по собственной инициативе и на бесплатной основе пытаются изменить его к лучшему. Так, в августе 2000-го, некто Ричард Хипп (северная Каролина, США) анонсировал СУБД под названием SQLite. Он точил её напильником долгих 4-года, чтобы привести в надлежащий вид и представить мировому сообществу как стабильный релиз SQLite3 . На данный момент последней считается v3.35.5 от 19 апреля 2021-года. То-есть проект жив, и активно развивается.

В отличие от многих других систем управления базами данных типа: MySql, Oracle и прочих, SQLite не является клиент-серверной базой данных – это обычное хранилище, которое встраивается в клиентское приложение, ..например: веб-браузеры, аудио/видео проигрыватели, графические редакторы, мобильные телефоны и т.п. В результате, получаем достаточно мощную, компактную и простую СУБД, а как-говорится «где мало сложности – там мало ложности».

На данном этапе сразу определимся с инструментами, чтобы больше не возвращаться к ним.
Есть огромное кол-во редакторов SQLite, но лично мне приглянулся «Expert Personal» . Продуманный его интерфейс позволяет без особого труда и в пару кликов создавать, просматривать и редактировать базы-данных, а бонусом – в установочном пакете сразу идёт и свежая библиотека sqlite3.dll . Дело в том, что полноценная поддержка SQLite включена только начиная с Win-10, так-что обладателям более старых систем ХР,7,8 придётся качать эту либу из репозитория автора. Получив редактор, мы убиваем сразу двух зайцев – вот линки:

Сайт разработчика «SQLite Expert Personal»: SQLite administration | SQLite Expert
Исходники и библиотека от автора СУБД: SQLite Download Page
Описание функций sqlite3.dll: List Of SQLite Functions
Навороченный HEX-редактор «010 Editor»: https://www.sweetscape.com/010editor

Читайте также:  Как под linux установить сертификат

2. Знакомство с базой SQLite3

SQLite имеет свой формат и обслуживается своей подсистемой. Передвижение запросов на выполнение той или иной операции назвали «транзакациями» . Вся база-данных разбивается на страницы одинакового размера, где и хранится полезная нагрузка в виде двумерной матрицы строк и столбцов. Размер одной страницы «Page» варьируется в диапазоне от 512 до 65536 байт, а под максимальное кол-во страниц в одной базе отводится 32 бита = 4’294’967’294. При таких значениях, простой арифметикой можно получить допустимый размер базы-данных: 4’294’967’294 * 65’536 = 281’474’976’645’120 , или 281 терабайт.

2.1.0. Режим[1] – Rollback, или «журнал отката» состояния

При таких гигантских объёмах в 1/4 петабайта, СУБД обязана гарантировать целостность своих данных, иначе в использовании баз просто теряется смысл. Поэтому, при операциях записи в таблицу, ядро SQLite сначала копирует содержимое модифицируемых страниц в т.н. «журнал отката» , и только потом производит запись в основную базу. Журнал Rollback – это обычный дисковый файл, который всегда находится рядом с базой и имеет оригинальное имя, с добавлением суффикса —journal . Если транзакация на запись проходит успешно, то журнал удаляется, иначе ядро откатывает базу в прежнее состояние с сообщением об одной из следующих возможных ошибок:

Отметим, что откат происходит прозрачно для пользователя, а вся ответственность ложится на неэкспортируемую служебную процедуру, которую запускает т.н. «триггер» . В зависимости от конфигурации базы, триггеры могут вызываться как для каждой операции записи, так и один раз на глобальное изменение базы (в последнем случае его называют «табличным»).

2.1.1. Режим[2] – WAL , или «журнал упреждающей записи» (Write-Ahead Logging )

Традиционный откат после неудачных попыток записи подразумевает сохранение резервных копий исходных страниц в отдельный файл, и восстановлении их в случае сбоя. В более новых версиях SQLite ввели ещё один режим под названием «упреждающая запись» WAL. Этот альтернативный режим представляет собой инверсный вариант обычного отката. Теперь, запись производится не напрямую в базу, а наоборот во-временный файл с суффиксом -–wal . Это напоминает отложенную запись в кэш процессора WriteBack, не в пример сквозной записи в память WriteThrought.

Размер временного WAL-файла на диске как-правило 1000 страниц, а транзакацию сброса их в базу назвали «контрольной точкой». Таким образом, в традиционном откате имеем две примитивные операции «чтение/запись», а в усовершенствованном WAL добавляется ещё одна операция «сброс» (контрольная точка). Обновление исходной базы страницами WAL может происходить или по запросу пользователя, или-же автоматически, при переполнении временного файла.

2.1.2. VACUUM – дефрагментация базы-данных

Ещё одним немаловажным моментом является поддержание базы в компактном/сжатом состоянии. Для этих целей, в доспехах SQLite припрятан механизм под названием «Vacuum» . Суть его в том, что если мы удаляем строки из базы, то информация фактически остаётся на своём месте, а соответствующая строка просто помечается свободной. В результате, в таблице появляются паразитные (вакуумные) строки, которые не несут абсолютно никакой полезной инфы, зато занимают пространство и размер базы.

Команда «VACUUM» очищает основную базу путём копирования её содержимого во временный файл, и перезагрузки исходной базы из этой копии. При этом механизм удаляет пустые страницы, выравнивает данные (делает их смежными) и назначает каждой строке новый порядковый номер RowID. Ядро отвергнет команду, если есть активная транзакция.

Кстати это типичная ситуация в базах «cookies» браузеров. Как-правило, время жизни кукисов определяет значение в столбце «expires_utc» (time counter), по истечении которого «правильный» кукис авто-уничтожается системой. В итоге, если посмотреть на такую базу в редакторе, она будет напоминать зубы хоккеиста, как в примере ниже:

Читайте также:  Stop 0x000000e3 windows 7

2.1.3. Cache Page – кэширование страниц

Подсистема SQLite может иметь несколько страниц для кэша дискового ввода-вывода. Рассмотрим ситуацию, когда мы изменили несколько строк в таблице и дали команду на их сохранение. При этом, если транзакацию на запись ядро выполнит сразу, то это займёт много времени, и мы рискуем получить отклик через пару секунд. Запись на жёсткий диск довольно длительная операция, и лучше подкопить все модифицированные данные сначала в буферной памяти (а точнее в странице кэш), и сохранять их на диск в какой-нибудь момент бездействия. Такой алгоритм практикуют все версии операционных систем Windows при файловых операциях ввода-вывода, и подсистема SQLite не исключение, хотя на практике применяет редко.

2.1.4. Формат схемы базы-данных

В настоящее время определены 4 разновидности формата схемы:

2.1.5. Заголовок «Header» базы

Любая база-данных SQLite3 начинается с заголовка «Header» , который занимает первые 100 байт (см. скрин 010-Editor выше). В нём указываются фундаментальные сведения о базе, её схема, кол-во и размер страниц, счётчик изменений таблицы и т.д.

Отличительной особенностью заголовка является прямой порядок байт, что придаёт ему нетрадиционную форму черепа. Например, числа в оперативной памяти ОЗУ наших компьютеров с процессорами х86/64 хранятся младшим байтом вперёд – такой порядок называют ещё «Little-Endial» и число 00112233h будет представлено в ячейках памяти как 33.22.11.00 hex. В заголовке-же базы SQLite нужно воспринимать их в привычном нам виде слева-направо, т.е. «Big-Endian» . Отметим, что для таких случаев в системе-команд процессоров Intel/AMD имеется специальная инструкция bswap , которая отражает порядок байт в числе (Byte Swap).

В таблице выше представлены поля заголовка, а для удобства их программного чтения, мы создадим одноименную структуру такого содержания:

2.2. Практика – чтение заголовка базы

Чтобы удовлетворить свой интерес, можно написать небольшой парсер заголовка базы-данных.
Если посмотреть на структуру хидера выше, то в самом его хвосте можно обнаружить поле «SqliteVerNum» с версией библиотеки sqlite3.dll того приложения, которое последним имела доступ к данной базе. Счётчик в предпоследнем поле считает эти изменения версий.

Идентификатор библиотеки указывается в виде 32-битного значения, и чтобы привести его в приятный для восприятия вид типа «v3.35.5», я написал отдельную процедуру. На первом этапе она делит значение поля на 1.000.000 (так мы получим версию 3), потом остаток на 1.000 (обновление, в данном случае 35) и всё-что останется – будет сборкой типа 5. Такой алго расшифровки данного поля рекомендует сам автор SQLite, Ричард Хипп.

На входе, программа ниже запрашивает имя файла базы-данных, поэтому нужно предварительно скопировать её от куда-нибудь. Как вариант, источниками могут послужить базы вашего интернет-браузера. Но у каждого он свой, так-что выкладывают лист возможных директорий для поиска.

Открыв папку и выбрав в ней очередной файл, нажмите в тотале комбинацию [Ctrl+Q] – если файл начинается с сигнатуры «SQLite format 3» , значит это точно база. Вот исходник парсера её заголовка с некоторыми комментариями:

В следующей части рассмотрим функции библиотеки sqlite3.dll, способ работы с ними, типы запросов, ну и прочее в этом духе. В практической части попытаемся считать куки браузеров, что они представляют собой, и какого типа хранят информацию. В скрепку кладу инклуд «sqlite3.inc» и исполняемый файл приведённого выше кода. До скорого, пока!

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector