UJP - 技術情報2 : SQLite3でSafariの履歴を読み出す Safari/History

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Page Top

はじめに anchor.png Edit

 WebブラウザのSafariの履歴をCSVで取り出す.監査目的.

Page Top

フォルダへの移動 anchor.png Edit

 Safariの履歴はSQLite3データベース形式で保存されており,各ユーザのLibraryディレクトリ配下に設置されている.

 このディレクトリは,macOS X 10.15(Mojave)以降はコマンドで操作できないので,作業お葉ディレクトリにコピーした上で,実行する.

index.php?page=view&file=7115&SafariHIstory1.png

 まずは,Finder上で,フォルダに移動する.

index.php?page=view&file=7114&SafariHistory2.png

 チルダで監査対象ユーザのユーザディレクトリを指定する.(/Libraryではない点に注意)

index.php?page=view&file=7113&SafariHistory3.png

 Finderでファイルをコピーする.

index.php?page=view&file=7112&SafariHistory4.png

 ターミナルから,確認する.

MBA2013:SafariHistory ujpadmin$ ls -la🆑
total 12616
drwxr-xr-x  6 ujpadmin  staff      192  5 25 16:50 .
drwxr-xr-x  7 ujpadmin  staff      224  5 25 16:54 ..
-rw-r--r--@ 1 ujpadmin  staff   126976  5 25 13:29 History.db
-rw-r--r--@ 1 ujpadmin  staff        0  4 16 12:31 History.db-lock
-rw-r--r--@ 1 ujpadmin  staff    32768  5 25 13:29 History.db-shm
-rw-r--r--@ 1 ujpadmin  staff  5524952  5 25 16:40 History.db-wal
MBA2013:SafariHistory ujpadmin$

 コピー完了.

Page Top

SQLite3に接続する anchor.png Edit

 macOS XにはデフォルトでSQLite3が導入されいるので,これを開く.

MBA2013:SafariHistory ujpadmin$ sqlite3 History.db🆑
SQLite version 3.24.0 2018-06-04 14:10:15
Enter ".help" for usage hints.
sqlite> 

 保管されているテーブルの一覧を確認する.


sqlite> .tables🆑
history_client_versions  history_items            history_tombstones     
history_event_listeners  history_items_to_tags    history_visits         
history_events           history_tags             metadata               
sqlite>

 SQLite3のコマンドモニタの表示を行モードにする.

sqlite> .mode line🆑
sqlite> 

 今回利用するテールブの構造を確認する.

sqlite> select * from sqlite_master where name = 'history_items';🆑
    type = table
    name = history_items
tbl_name = history_items
rootpage = 2
     sql = CREATE TABLE history_items (id INTEGER PRIMARY KEY AUTOINCREMENT,
     url TEXT NOT NULL UNIQUE,domain_expansion TEXT NULL,
     visit_count INTEGER NOT NULL,daily_visit_counts BLOB NOT NULL,weekly_visit_counts
     BLOB NULL,autocomplete_triggers BLOB NULL,should_recompute_derived_visit_counts
     INTEGER NOT NULL,visit_count_score INTEGER NOT NULL)
sqlite> 

 2つめ.

sqlite> select * from sqlite_master where name = 'history_visits';🆑
    type = table
    name = history_visits
tbl_name = history_visits
rootpage = 5
     sql = CREATE TABLE history_visits (id INTEGER PRIMARY KEY AUTOINCREMENT,
     history_item INTEGER NOT NULL REFERENCES history_items(id) ON DELETE CASCADE,
     visit_time REAL NOT NULL,title TEXT NULL,load_successful BOOLEAN NOT NULL DEFAULT 1,
     http_non_get BOOLEAN NOT NULL DEFAULT 0,synthesized BOOLEAN NOT NULL DEFAULT 0,
     redirect_source INTEGER NULL UNIQUE REFERENCES history_visits(id) ON DELETE CASCADE,
     redirect_destination INTEGER NULL UNIQUE REFERENCES history_visits(id) ON DELETE CASCADE,
     origin INTEGER NOT NULL DEFAULT 0,generation INTEGER NOT NULL DEFAULT 0,
     attributes INTEGER NOT NULL DEFAULT 0,score INTEGER NOT NULL DEFAULT 0)
sqlite> 

 テーブルの定義は確認できた.

Page Top

Safariの履歴をCSV形式で書き出す anchor.png Edit

 表示モードをCSV形式に設定する.

sqlite> .mode csv🆑
sqlite> 

 出力結果を,CSVファイルに出力する設定とする.

sqlite> .output SafariHistory.csv🆑
sqlite> 

 一行目に項目のヘッダを書き出す.

sqlite> .headers on🆑
sqlite> 

 次のSQL文を実行する.

sqlite> select datetime(v.visit_time + 978307200, 'unixepoch', 'localtime') as date,
 i.domain_expansion, v.title,  i.url from history_items i left join history_visits v on
 i.id = v.history_item order by date desc;🆑
sqlite>

 このSQLにある978307200は,1970年1月1日0時から2001年1月1日0時までの差.2001年1月1日0時というのは,Mac Absoulte timeという,この瞬間から刻んでいる絶対時間.macOSやiOSなどだけに流用できる.

 実行した後は,Control+DでSQLite3のモニターモードを抜ける.

sqlite> ^D
MBA2013:SafariHistory ujpadmin$ 

 取り出したCSVファイルを確認.

MBA2013:SafariHistory ujpadmin$ ls -la SafariHistory.csv 
-rw-r--r--  1 ujpadmin  staff  36552  5 25 16:59 SafariHistory.csv
MBA2013:SafariHistory ujpadmin$
index.php?page=view&file=7111&SafariHistory5.png

 CSVファイルに,Safariの履歴が保存されていることが確認できる.


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 1838, today: 1, yesterday: 7
最終更新: 2020-05-26 (火) 00:59:50 (JST) (1421d) by nobuaki

広告スペース
Google