

貢献したい場合は、こちらから連絡してください: https://abrignoni.github.io
ブログ記事はこちら: https://leapps.org/blog
Python 3.10 以上
Python 環境の依存関係は requirements.txt に記載されています。以下のコマンドでインストールしてください。ご自身の環境に合わせて py の部分が正しいことを確認してください(例: py、python、python3 など)。
py -m pip install -r requirements.txt
または
pip3 install -r requirements.txt
Linux で実行する場合、以下のように tkinter も別途インストールする必要があります:
sudo apt-get install python3-tk
Python がインストールされていないシステムでも実行できるよう、実行可能ファイルにコンパイルするには、次のようにします。
Windows OS
aleapp.exe を作成するには、次のコマンドを実行します:
pyinstaller scripts\pyinstaller\aleapp.spec
aleappGUI.exe を作成するには、次のコマンドを実行します:
pyinstaller scripts\pyinstaller\aleappGUI.spec
macOS
aleapp を作成するには、次のコマンドを実行します:
pyinstaller scripts/pyinstaller/aleapp_macOS.spec
aleappGUI.app を作成するには、次のコマンドを実行します:
pyinstaller scripts/pyinstaller/aleappGUI_macOS.spec
Linux
aleapp を作成するには、次のコマンドを実行します:
pyinstaller scripts/pyinstaller/aleapp_Linux.spec
aleappGUI を作成するには、次のコマンドを実行します:
pyinstaller scripts/pyinstaller/aleappGUI_Linux.spec
$ python aleapp.py -t <zip | tar | fs | gz> -i <path_to_extraction> -o <path_for_report_output>
$ python aleappGUI.py
$ python aleapp.py --help
各プラグインは Python ソースファイルで、scripts/artifacts フォルダーに追加する必要があります。このフォルダーは ALEAPP が実行されるたびに動的に読み込まれます。
プラグインのソースファイルには、モジュールの先頭に __artifacts_v2__ という名前の辞書が含まれていなければなりません。この辞書は、プラグインが処理するアーティファクトを定義します。__artifacts_v2__ 辞書のキーは、ALEAPP 内で一意である必要があるアーティファクトの ID にしてください。値は、以下のキーを含む辞書にしてください:
name: アーティファクトの名前(文字列)。description: アーティファクトの説明(文字列)。author: プラグインの作者(文字列)。version: アーティファクトのバージョン(文字列)。date: アーティファクトの最終更新日(文字列)。requirements: アーティファクトの処理に必要な要件(文字列)。category: アーティファクトのカテゴリ(文字列)。notes: 追加のメモ(文字列)。paths: プラグインがアーティファクトに対して期待するデータのパスに一致する glob 検索パターンを含む文字列のタプル。function: アーティファクト処理のエントリポイントとなる関数の名前(文字列)。例:
__artifacts_v2__ = {
"cool_artifact_1": {
"name": "Cool Artifact 1",
"description": "Extracts cool data from database files",
"author": "@username",
"version": "0.1",
"date": "2022-10-25",
"requirements": "none",
"category": "Really cool artifacts",
"notes": "",
"paths": ('*/com.android.cooldata/databases/database*.db',),
"function": "get_cool_data1"
},
"cool_artifact_2": {
"name": "Cool Artifact 2",
"description": "Extracts cool data from XML files",
"author": "@username",
"version": "0.1",
"date": "2022-10-25",
"requirements": "none",
"category": "Really cool artifacts",
"notes": "",
"paths": ('*/com.android.cooldata/files/cool.xml',),
"function": "get_cool_data2"
}
}
__artifacts__ 辞書でエントリポイントとして参照される関数は、以下の引数を受け取る必要があります:
FileSeekerBase 型)例:
def get_cool_data1(files_found, report_folder, seeker, wrap_text):
pass # do processing here
プラグインは通常、ALEAPP の HTML 出力形式、TSV で出力を提供し、オプションでレコードをタイムラインに登録することが期待されます。この出力を生成する関数は、artifact_report モジュールと ilapfuncs モジュールにあります。
大まかな例は次のようになります:
__artifacts_v2__ = {
"cool_artifact_1": {
"name": "Cool Artifact 1",
"description": "Extracts cool data from database files",
"author": "@username", # Replace with the actual author's username or name
"version": "0.1", # Version number
"date": "2022-10-25", # Date of the latest version
"requirements": "none",
"category": "Really cool artifacts",
"notes": "",
"paths": ('*/com.android.cooldata/databases/database*.db',),
"function": "get_cool_data1"
}
}
import datetime
from scripts.artifact_report import ArtifactHtmlReport
import scripts.ilapfuncs
def get_cool_data1(files_found, report_folder, seeker, wrap_text):
# let's pretend we actually got this data from somewhere:
rows = [
(datetime.datetime.now(), "Cool data col 1, value 1", "Cool data col 1, value 2", "Cool data col 1, value 3"),
(datetime.datetime.now(), "Cool data col 2, value 1", "Cool data col 2, value 2", "Cool data col 2, value 3"),
]
headers = ["Timestamp", "Data 1", "Data 2", "Data 3"]
# HTML output:
report = ArtifactHtmlReport("Cool stuff")
report_name = "Cool DFIR Data"
report.start_artifact_report(report_folder, report_name)
report.add_script()
report.write_artifact_data_table(headers, rows, files_found[0]) # assuming only the first file was processed
report.end_artifact_report()
# TSV output:
scripts.ilapfuncs.tsv(report_folder, headers, rows, report_name, files_found[0]) # assuming first file only
# Timeline:
scripts.ilapfuncs.timeline(report_folder, report_name, rows, headers)
このツールは、DFIR コミュニティの多くの人々による協力の結果です。
ALEAPP のロゴは Derek Eiri 氏の提供です。