
Android लॉग्स इवेंट्स और Protobuf पार्सर

यदि आप योगदान देना चाहते हैं तो मुझसे यहाँ संपर्क करें: https://abrignoni.github.io
ब्लॉग पोस्ट यहाँ: https://leapps.org/blog
पायथन 3.10 या उससे ऊपर
आपके पायथन वातावरण के लिए निर्भरताएँ requirements.txt में सूचीबद्ध हैं। उन्हें नीचे दिए गए कमांड का उपयोग करके इंस्टॉल करें। सुनिश्चित करें कि py भाग आपके वातावरण के लिए सही है, जैसे py, python, या python3, आदि।
py -m pip install -r requirements.txt
या
pip3 install -r requirements.txt
लिनक्स पर चलाने के लिए, आपको tkinter को अलग से इस प्रकार इंस्टॉल करना होगा:
sudo apt-get install python3-tk
एक्ज़ीक्यूटेबल में कंपाइल करने के लिए ताकि आप इसे बिना पायथन इंस्टॉल किए सिस्टम पर चला सकें।
विंडोज़ ओएस
aleapp.exe बनाने के लिए, चलाएँ:
pyinstaller scripts\pyinstaller\aleapp.spec
aleappGUI.exe बनाने के लिए, चलाएँ:
pyinstaller scripts\pyinstaller\aleappGUI.spec
मैकओएस
aleapp बनाने के लिए, चलाएँ:
pyinstaller scripts/pyinstaller/aleapp_macOS.spec
aleappGUI.app बनाने के लिए, चलाएँ:
pyinstaller scripts/pyinstaller/aleappGUI_macOS.spec
लिनक्स
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
प्रत्येक प्लगइन एक पायथन सोर्स फ़ाइल है जिसे scripts/artifacts फ़ोल्डर में जोड़ा जाना चाहिए, जो ALEAPP चलने के प्रत्येक समय गतिशील रूप से लोड की जाएगी।
प्लगइन सोर्स फ़ाइल में मॉड्यूल की शुरुआत में __artifacts_v2__ नामक एक डिक्शनरी होनी चाहिए, जो उन आर्टिफैक्ट्स को परिभाषित करती है जिन्हें प्लगइन प्रोसेस करता है। __artifacts_v2__ डिक्शनरी में कुंजियाँ आर्टिफैक्ट(ों) के लिए आईडी होनी चाहिए, जो ALEAPP के भीतर अद्वितीय होनी चाहिए। मान निम्नलिखित कुंजियों वाले डिक्शनरी होने चाहिए:
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__ डिक्शनरी में प्रवेश बिंदुओं के रूप में संदर्भित फ़ंक्शन निम्नलिखित तर्क लेने चाहिए:
उदाहरण के लिए:
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 की सौजन्य से है।