13

Sqliteデータベースのすべてのテーブルと列を検索するために利用できるライブラリまたはオープンソースユーティリティはありますか?唯一の入力は、sqliteDBファイルの名前です。

フォレンジックツールを作成しようとしていますが、sqliteファイルで特定の文字列を検索したいと思います。

4

4 に答える 4

10

"SELECT name FROM sqlite_master WHERE type='table'" データベース内のテーブルの名前を見つけるために使用できます。そこから、各テーブルのすべての行を簡単に選択できます。

例えば:

import sqlite3
import os

filename = ...
with sqlite3.connect(filename) as conn:
    conn.row_factory = sqlite3.Row
    cursor = conn.cursor()    
    cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
    for tablerow in cursor.fetchall():
        table = tablerow[0]
        cursor.execute("SELECT * FROM {t}".format(t = table))
        for row in cursor:
            for field in row.keys():
                print(table, field, row[field])
于 2012-11-22T14:27:26.933 に答える
4

これはパーティーに遅れていることは知っていますが、同様の問題がありましたが、Dockerイメージ内にあったため、Pythonにアクセスできなかったため、次のように解決しました。

for X in $(sqlite3 database.db .tables) ; do sqlite3 database.db "SELECT * FROM $X;" | grep >/dev/null 'STRING I WANT' && echo $X; done

これにより、データベースファイル内のすべてのテーブルが繰り返され、すべて選択操作が実行されます。その後、文字列をgrepします。文字列が見つかるとテーブルが出力され、そこからsqlite3を使用して使用方法を確認できます。

Pythonを使用できない他の人に役立つかもしれないと考えました。

于 2018-12-20T20:21:00.577 に答える
4

@MrWorfの答えは私のsqliteファイル(Evernoteの.exbファイル)では機能しませんでしたが、この同様の方法は機能しました:

  • DB BrowserforSQLiteでファイルを開きますsqlitebrowser mynotes.exb
  • ファイル/SQLファイルへのエクスポート(mynotes.exb.sqlを作成します)
  • grep 'STRING I WANT" mynotes.exb.sql
于 2019-12-19T09:52:15.507 に答える
4

dbをダンプして検索するだけです。

% sqlite3 file_name .dump | grep 'my_search_string'

代わりに、より少ないパイプを使用して、/を使用して検索することができます。

% sqlite3 file_name .dump | less

于 2020-12-19T19:10:00.967 に答える