kapezip
KAPE(Kroll Artifact Parser and Extractor)モジュールが生成したCSV成果物のZIPパッケージを展開せずにそのまま読み込みます。KAPEはKroll社が配布するWindowsフォレンジックのトリアージツールで、収集・解析したアーティファクトをモジュール別のCSVとしてZIPにまとめて出力します。kapezipコマンドはこのZIPを入力として受け取り、モジュール成果物をそのままクエリで分析する用途で使用します。
コマンドプロパティ
| 項目 | 説明 |
|---|---|
| コマンドタイプ | ドライバークエリ |
| 必要な権限 | クラスタ管理者 |
| ライセンス使用量 | カウントあり |
| 並列実行 | 非対応 |
| 分散実行 | データノードで実行(mapper) |
構文
オプション
entrycs=STR- ZIPファイルのエントリ名の文字エンコーディング(デフォルト:
utf-8)。ZIP内部のエントリ名がcp949など非標準エンコーディングで保存されている場合に指定します。 cs=STR- CSVファイルの文字エンコーディング(デフォルト:
utf-8)。CSV本文が非標準エンコーディングで保存されている場合に指定します。 rest=BOOLtを指定すると、CSVパーサーが許容する最大カラム数を超えるカラムを_restフィールドにまとめて返します。省略するかfを指定すると、超過カラムは無視されます(デフォルト:f)。
対象
FILE_PATH- 取得するZIPファイルのパス。ファイル名部分に
*ワイルドカードを使用すると、同じディレクトリ内の複数のZIPファイルを一度に指定できます。 ENTRY_PATH- 取得するZIP内部のCSVエントリのパス。
*ワイルドカードを使用できます。省略すると、ZIP内部のすべての.csvエントリを取得します。
出力フィールド
| フィールド | タイプ | 説明 |
|---|---|---|
_file | string | レコードの取得元ZIPエントリのパス |
| (ヘッダカラム) | string | CSVの1行目のヘッダで定義されたフィールド名と、対応する値 |
column<N> | string | データ行のカラム数がヘッダのカラム数を超えた場合に、超過カラムに割り当てられるフィールド(Nはヘッダカラム数から始まる0始まりのインデックス) |
_rest | string | CSVパーサーの最大カラム数を超えるヘッダカラム(rest=t指定時のみ出力) |
エラーコード
解析エラー
N/A
ランタイムエラー
| エラーコード | メッセージ | 説明 | 後処理動作 |
|---|---|---|---|
| - | csvfile load failure | ZIP内部のCSVエントリの読み取りまたは解析中にエラーが発生した場合 | クエリを停止します |
| - | - | ZIPファイルを開けない、または破損している場合(RuntimeExceptionとして伝播) | クエリを停止します |
説明
kapezipコマンドは、指定したZIPファイルを開き、内部の.csv拡張子を持つエントリのみを順番に読み込みます。各CSVエントリの1行目をヘッダとして認識し、フィールド名を自動的に割り当てます。1つのZIPファイルに複数のCSVエントリが含まれている場合、すべてのエントリのレコードを順番に返します。
ENTRY_PATHを指定すると、そのパターンに一致するエントリのみを取得します。ワイルドカード(*)が含まれる場合はパターンマッチングで、含まれない場合はエントリ名全体との完全一致で比較します。いずれの場合も、.csv拡張子ではないエントリは自動的にスキップされます。
CSVファイルがUTF-8 BOM(Byte Order Mark、0xEF 0xBB 0xBF)で始まる場合、自動的に認識してスキップします。ただし、csオプションでutf-8以外のエンコーディングを指定した場合は、BOMを検査しません。
CSVパーサーが許容する最大カラム数をヘッダが超過する場合、デフォルトの動作では超過したヘッダを無視します。rest=tを指定すると、超過位置のヘッダを_restフィールドに置き換えます。データ行のカラム数がヘッダのカラム数を超える場合、超過カラムはcolumn<N>形式のフィールド(Nはヘッダカラム数から始まる0始まりのインデックス)として返されます。
FILE_PATHにワイルドカードを使用すると、一致するすべてのZIPファイルを順番に処理します。ワイルドカードはファイル名部分でのみ動作し、ディレクトリ部分には使用できません。
このコマンドはクラスタ管理者権限が必要であり、アクセス可能なファイルパスはALLOWED_FILE_SCAN_PATHS設定で制限されます。詳細ははじめる前にを参照してください。
使用例
各使用例のファイルパスはALLOWED_FILE_SCAN_PATHS設定に含まれていることを前提としています。
-
ZIP内部のすべてのCSVエントリを取得する
kapezip /opt/logpresso/evidence/kape-output.zipkape-output.zipに含まれるすべての.csvエントリからレコードを順番に返します。各レコードの_fileフィールドには取得元エントリのパスが記録されます。 -
特定のCSVエントリのみを取得する
kapezip /opt/logpresso/evidence/kape-output.zip Modules/FileSystem/MFTECmd.csvZIP内部で正確に
Modules/FileSystem/MFTECmd.csvのパスを持つエントリのみを読み取ってレコードを返します。 -
ワイルドカードで複数のエントリを取得する
kapezip /opt/logpresso/evidence/kape-output.zip Modules/Registry/*.csvModules/Registry/ディレクトリ配下のすべてのCSVエントリを取得します。 -
韓国語エンコーディングのZIPパッケージを取得する
kapezip entrycs=cp949 cs=cp949 /opt/logpresso/evidence/kape-kr.zipエントリ名とCSV本文の両方がCP949でエンコードされたZIPパッケージを正常に読み込みます。
-
ワイルドカードで複数のZIPファイルを一括処理する
kapezip /opt/logpresso/evidence/host-*.zip同じディレクトリ内の
host-で始まるすべてのZIPファイルからCSVエントリを取得します。 -
超過カラムを保持したうえで特定の取得元をフィルタリングする
kapezip rest=t /opt/logpresso/evidence/kape-output.zip | search _file == "Modules/FileSystem/MFTECmd.csv"最大カラム数を超えるヘッダを
_restフィールドに保持しながらZIP全体を取得した後、_fileフィールドを基準に特定のエントリで発生したレコードのみをフィルタリングします。
互換性
kapezipコマンドはSonar 4.0以前のバージョンから提供されています。4.0.2511.0バージョンからクラスタ管理者権限が必要となり、アクセス可能なファイルパスが制限されます。