ファイルの探索・収集・圧縮の追跡
同じプロセスの記録から、一覧取得、成功した読取り、拒否された読取り、ZIPの中身へ進みます。収集の証拠と、外部へ送られた証拠を分ける調査を学びます。
説明
ファイル一覧の取得、内容の読取り、アーカイブの作成は、それぞれ別の行動です。対象にアクセスできそうだったことと、実際に内容を集めたことを同じ範囲として数えないようにします。
同じプロセスの記録から、一覧取得、成功した読取り、拒否された読取り、ZIPの中身へ進みます。収集の証拠と、外部へ送られた証拠を分ける調査を学びます。
1同じプロセスの行動を並べる
processは固定資料内で一意の識別子です。
from oplab import *
db=connect(12)
show(db, 'SELECT同じプロセスの行動を並べる * FROM activity WHERE process="g7" ORDER BY t')一覧取得後に二つのファイルを読み、アーカイブを作っています。各操作の結果が異なる点を確認します。
2成功した読取りを抽出する
readだけでなくresultも条件に含めます。
show(db, 'SELECT成功した読取りを抽出する id,target FROM activity WHERE action="read" AND result="success"')成功した読取りはa.csvです。b.csvへの要求が記録されていても、内容を取得できたとは扱いません。
3作成されたアーカイブを調べる
生成物のパスを確認します。
show(db, 'SELECT作成されたアーカイブを調べる id,target,result FROM activity WHERE action="archive"')data.zipの作成成功が記録されています。アーカイブ名だけでは、格納されているファイルは分かりません。
4格納されている内容を確認する
archive表は取得済みZIPのメンバー一覧を抽出したものです。
show(db, 'SELECT格納されている内容を確認する * FROM archive')入っているのはa.csv、1000バイトです。圧縮後のZIPサイズはヘッダーや圧縮率の影響を受け、1000と同じとは限りません。
5拒否された読取りを残す
収集に成功した範囲とは別に、試みた対象を残します。
show(db, 'SELECT拒否された読取りを残す id,target,result FROM activity WHERE action="read" AND result<>"success"')b.csvは試行の証拠として残ります。試行と取得を一つの件数へまとめると、影響範囲を大きく見積もってしまいます。
6同じプロセスの送信を調べる
アーカイブ作成後の転送記録を見ます。転送物のハッシュはこの資料では未収集です。
show(db, 'SELECT同じプロセスの送信を調べる id,destination,bytes,result FROM transfer WHERE process="g7" ORDER BY t')800バイトの送信成功はありますが、それがdata.zipだったかは未確定です。収集と送信を結ぶには転送対象の追加情報が必要です。
まとめ
800バイトの送信成功はありますが、それがdata.zipだったかは未確定です。収集と送信を結ぶには転送対象の追加情報が必要です。
表示された証拠IDと検索条件を残すと、調査結果を元の記録までたどれます。
操作履歴と解説を振り返れます。
Python 3.15 / SQLite・固定の調査記録
from oplab import *
db=connect(12)
show(db, 'SELECT * FROM activity WHERE process="g7" ORDER BY t')id | t | host | process | action | target | result e1 | 10 | ws7 | g7 | list | C:/Data | success e2 | 11 | ws7 | g7 | read | C:/Data/a.csv | success e3 | 12 | ws7 | g7 | read | C:/Data/b.csv | denied e4 | 14 | ws7 | g7 | archive | C:/Temp/data.zip | success
show(db, 'SELECT id,target FROM activity WHERE action="read" AND result="success"')id | target e2 | C:/Data/a.csv
show(db, 'SELECT id,target,result FROM activity WHERE action="archive"')id | target | result e4 | C:/Temp/data.zip | success
show(db, 'SELECT * FROM archive')path | member | bytes C:/Temp/data.zip | a.csv | 1000
show(db, 'SELECT id,target,result FROM activity WHERE action="read" AND result<>"success"')id | target | result e3 | C:/Data/b.csv | denied
show(db, 'SELECT id,destination,bytes,result FROM transfer WHERE process="g7" ORDER BY t')id | destination | bytes | result t1 | external-store | 800 | success t3 | external-store | 800 | failed
演習完了