ADFLER: Advanced Drone Flight Log Entity Recognizer
ADFLER is an open-source tool developed to perform named entity recognition on drone flight log data to support forensic investigations. It uses a fine-tuned ALBERT model to identify entities (like Event and NonEvent) in log messages and constructs a forensic timeline.
Features
- Forensic Timeline Construction: Merges and sorts logs from Android and iOS devices.
- Entity Recognition: Uses an ALBERT model to highlight key entities in log messages.
- Forensic Report Generation: Generates a PDF report with statistics and the highlighted timeline.
Installation
Prerequisites
- Python 3.7+
- wkhtmltopdf: Required for report generation.
- Windows: Download and install from wkhtmltopdf.org. Default path:
C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe. - Linux:
sudo apt-get install wkhtmltopdf. Default path:/usr/bin/wkhtmltopdf.
- Windows: Download and install from wkhtmltopdf.org. Default path:
Install ADFLER
You can install ADFLER directly from PyPI (coming soon) or from source.
From Source:
git clone https://github.com/DroneNLP/ADFLER.git
cd ADFLER
pip install .
Model
ADFLER uses a fine-tuned ALBERT model (swardiantara/ADFLER-albert-base-v2). By default, the tool will automatically download and cache the model from Hugging Face on its first run.
If you prefer to use a locally downloaded model or an offline environment, you can point to your local directory containing pytorch_model.bin using the --model argument.
Usage
ADFLER provides a Command Line Interface (CLI).
Structure:
adfler [arguments]
Arguments
| Argument | Description |
|---|---|
--evidence <path> |
Path to the directory containing input flight logs (must have android and/or ios subfolders). |
--output <path> |
Path to the directory where results will be saved. |
--model <path> |
Path to the directory containing the ALBERT model (pytorch_model.bin). |
--config <path> |
Path to a custom config.json file. |
Examples
1. Run Pipeline (Recommended):
adfler --evidence "./flight_logs" --output "./results/case_001"
2. Run Pipeline with Custom Model:
adfler --evidence "./flight_logs" --output "./results/case_001" --model "./local_model_dir"
Output Structure
Running adfler will create the following structure in your output directory:
output_dir/
├── raw_list.json # List of detected log files
├── forensic_timeline.csv # Merged and sorted timeline of all logs
├── ner_result.json # Timeline with detected entities (JSON format)
├── statistics.json # Counts of detected entity types
├── forensic_report_.html # Intermediate HTML report
├── forensic_report_.pdf # Final PDF Forensic Report
└── parsed/ # Intermediate parsed CSVs
├── android/
└── ios/
Configuration
You can optionally use a config.json file instead of passing long arguments.
Example config.json:
{
"source_evidence": "./flight_logs",
"output_dir": "./results/test_run",
"model_dir": "./model",
"wkhtml_path": {
"windows": "C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe",
"linux": "/usr/bin/wkhtmltopdf"
},
"use_cuda": true
}
Run with config:
adfler --config my_config.json
License
Metadata
Release files for adfler 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| adfler-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for adfler-0.1.0-py3-none-any.whl |
Release files / adfler-0.1.0-py3-none-any.whl
| Download URL | adfler-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a07a459e71d6311bcda6d1123c3cf251ad80986da37d58089b8794f993a4b713
|
|
BLAKE2b-256 checksum How to use checksums |
30bf19536d371cd909a282a1b6dffc9f8049f169a535fda7c8ce9d7280d3b3df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Security for adfler 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.