2012-11-22 46 views
4

是否有库或开源实用工具可用于搜索Sqlite数据库的所有表和列?唯一的输入将是sqlite数据库文件的名称。搜索Sqlite数据库 - 所有表和列

我想写一个取证工具,并希望搜索特定字符串的sqlite文件。

回答

6

您可以使用"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]) 
+0

太棒了!我只是有一个额外的问题---可以说我在表中搜索一个字符串“sms”,一旦找到 - 我如何在上面的代码片段中打印列名+表名? –

+0

我已经更改了代码以使用'sqlite3.Row'行工厂。这使得'cursor'返回类似于dict的行。行键是列名称。 – unutbu

+0

非常感谢我的朋友! –

相关问题